index-legacy.800e1f08.js 644 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477
  1. ;(function () {
  2. function _toConsumableArray(arr) {
  3. return (
  4. _arrayWithoutHoles(arr) ||
  5. _iterableToArray(arr) ||
  6. _unsupportedIterableToArray(arr) ||
  7. _nonIterableSpread()
  8. )
  9. }
  10. function _nonIterableSpread() {
  11. throw new TypeError(
  12. 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
  13. )
  14. }
  15. function _unsupportedIterableToArray(o, minLen) {
  16. if (!o) return
  17. if (typeof o === 'string') return _arrayLikeToArray(o, minLen)
  18. var n = Object.prototype.toString.call(o).slice(8, -1)
  19. if (n === 'Object' && o.constructor) n = o.constructor.name
  20. if (n === 'Map' || n === 'Set') return Array.from(o)
  21. if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
  22. return _arrayLikeToArray(o, minLen)
  23. }
  24. function _iterableToArray(iter) {
  25. if (
  26. (typeof Symbol !== 'undefined' && iter[Symbol.iterator] != null) ||
  27. iter['@@iterator'] != null
  28. )
  29. return Array.from(iter)
  30. }
  31. function _arrayWithoutHoles(arr) {
  32. if (Array.isArray(arr)) return _arrayLikeToArray(arr)
  33. }
  34. function _arrayLikeToArray(arr, len) {
  35. if (len == null || len > arr.length) len = arr.length
  36. for (var i = 0, arr2 = new Array(len); i < len; i++) {
  37. arr2[i] = arr[i]
  38. }
  39. return arr2
  40. }
  41. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  42. try {
  43. var info = gen[key](arg)
  44. var value = info.value
  45. } catch (error) {
  46. reject(error)
  47. return
  48. }
  49. if (info.done) {
  50. resolve(value)
  51. } else {
  52. Promise.resolve(value).then(_next, _throw)
  53. }
  54. }
  55. function _asyncToGenerator(fn) {
  56. return function () {
  57. var self = this,
  58. args = arguments
  59. return new Promise(function (resolve, reject) {
  60. var gen = fn.apply(self, args)
  61. function _next(value) {
  62. asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value)
  63. }
  64. function _throw(err) {
  65. asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err)
  66. }
  67. _next(undefined)
  68. })
  69. }
  70. }
  71. function _typeof(obj) {
  72. '@babel/helpers - typeof'
  73. return (
  74. (_typeof =
  75. 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
  76. ? function (obj) {
  77. return typeof obj
  78. }
  79. : function (obj) {
  80. return obj &&
  81. 'function' == typeof Symbol &&
  82. obj.constructor === Symbol &&
  83. obj !== Symbol.prototype
  84. ? 'symbol'
  85. : typeof obj
  86. }),
  87. _typeof(obj)
  88. )
  89. }
  90. var __vite_style__ = document.createElement('style')
  91. __vite_style__.innerHTML =
  92. '._roomHeader_13gb6_1{background:url(./assets/room_bg.498828a6.png) top center no-repeat;background-size:100%;overflow:hidden}._roomHeader_13gb6_1 .van-row{align-items:center}._countTimer_13gb6_9{padding:.85333rem .64rem .58667rem}._countTimer_13gb6_9 ._timer_13gb6_12{padding-left:.05333rem;font-size:.69333rem;font-weight:600;color:#333;padding-bottom:.26667rem}._countTimer_13gb6_9 ._timer_13gb6_12 span{color:#666;font-size:.37333rem}._countTimer_13gb6_9 ._title_13gb6_23{display:flex;align-items:center;font-size:.32rem;color:#333;line-height:.45333rem}._countTimer_13gb6_9 ._title_13gb6_23 img{width:.4rem;height:.4rem;margin-right:.13333rem}._chargeTimer_13gb6_35 .van-button__text{display:flex;align-items:center;font-weight:600}._chargeTimer_13gb6_35 .van-button__text img{margin-left:.05333rem;width:.26667rem;height:.26667rem}._studentList_13gb6_45{margin:0 .37333rem .4rem;background:#ffffff;border-radius:.26667rem;overflow:hidden}._studentCount_13gb6_51{font-size:.37333rem;font-weight:500;color:#333}._btnGroupInvite_13gb6_56{display:flex;align-items:center;justify-content:space-between;padding-bottom:.10667rem}._btnGroupInvite_13gb6_56 .van-button{width:48%;font-size:.37333rem;font-weight:500;color:#333!important}._btnGroupInvite_13gb6_56 .van-button img{margin-right:.21333rem;width:.53333rem;height:.53333rem}._btnGroupInvite_13gb6_56 .van-button__text{display:flex;align-items:center}._searchList_13gb6_77{display:flex;padding:.32rem .42667rem;background-color:#fff}._dataItem_13gb6_82{font-size:.37333rem;color:#333;padding-right:.64rem}._shareSection_b869d_1{width:8.13333rem;padding:.37333rem;background:url(./assets/share_bg.252c9956.png) center no-repeat #2dc7aa;background-size:cover;overflow:hidden}._shareSection_b869d_1 ._img_b869d_8{width:1.44rem;height:1.44rem;border-radius:50%;margin-right:.32rem}._shareSection_b869d_1 ._name_b869d_14{font-size:.48rem;font-weight:500;color:#1a1a1a;line-height:.48rem}._shareSection_b869d_1 ._titleTips_b869d_20{padding-top:.13333rem;font-size:.37333rem;color:#8a8a8a;line-height:.48rem}._section_b869d_26{background:#ffffff;border-radius:.29333rem;overflow:hidden;padding:.37333rem .42667rem .53333rem}._txt_b869d_32{font-size:.42667rem;color:#333;line-height:1.5}._txt_b869d_32 span{font-size:.48rem;font-weight:500;color:#2dc7aa}._teacherName_b869d_42{padding-top:.53333rem}._download_b869d_45{margin-top:.26667rem;display:flex;align-items:center;justify-content:space-between}._download_b869d_45 ._logo_b869d_51{font-size:.34667rem;color:#349784;line-height:.48rem}._download_b869d_45 ._logo_b869d_51 img{width:2.48rem;vertical-align:middle;margin-bottom:.29333rem}._download_b869d_45 ._qrcode_b869d_61{width:2.02667rem;height:2.02667rem}._continue_b869d_65{position:absolute;right:.66667rem;top:.53333rem;z-index:2;background:rgba(0,0,0,.23);border-radius:.50667rem;font-size:.37333rem;color:#fff;background:linear-gradient(0deg,#2dc7aa 0%,#32e8c6 100%);padding:.16rem .48rem}._label_v8pn1_1{margin-right:.21333rem;font-size:.37333rem}._label_v8pn1_1 .van-list__loading,._label_v8pn1_1 .van-list__finished-text,._label_v8pn1_1 .van-list__error-text{width:100%}._label_v8pn1_1 .iconfont-down{margin-left:.10667rem}._studentList_v8pn1_13{height:55vh;overflow:auto}._studentList_v8pn1_13 .van-checkbox{justify-content:flex-end}._btnGroup_v8pn1_20{padding:0 .53333rem .37333rem}._confirmTitle_yqlm2_1{font-size:.42667rem;font-weight:500;color:#333;line-height:.58667rem;padding:.58667rem .58667rem .32rem}._confirmTitle_yqlm2_1 ._timer_yqlm2_8{color:#2dc7aa}._addTitle_yqlm2_11,._calc_yqlm2_12{font-size:.42667rem;color:#666;line-height:.58667rem;padding:.32rem .58667rem 0}._addTitle_yqlm2_11 span,._calc_yqlm2_12 span{color:var(--van-primary)}._addTitle_yqlm2_11 .student,._calc_yqlm2_12 .student{margin:0}._studentList_yqlm2_26{max-height:45vh;overflow:auto}._btnGroup_yqlm2_30{padding:.37333rem .53333rem}\n'
  93. document.head.appendChild(__vite_style__)
  94. System.register(
  95. [
  96. './title_timers-legacy.616e8b2e.js',
  97. './icon_name_active-legacy.e2b0189a.js',
  98. './icon_tips-legacy.b7861467.js',
  99. './index-legacy.d37bf950.js',
  100. './index-legacy.a7be6226.js',
  101. './vendor-legacy.367a3d55.js',
  102. './index-legacy.637f3556.js',
  103. './index-legacy.f25f109a.js',
  104. './index-legacy.f25f109a2.js',
  105. './index-legacy.f25f109a6.js',
  106. './index-legacy.f25f109a11.js',
  107. './index-legacy.f25f109a7.js',
  108. './index-legacy.98b4b4a5.js',
  109. './icon_teacher-legacy.42ba77b1.js',
  110. './index-legacy.3ac502e7.js',
  111. './organ-search-legacy.18da60ce.js',
  112. './index-legacy.f25f109a13.js',
  113. './index-legacy.f25f109a14.js',
  114. './index-legacy.d66afaf7.js',
  115. './index-legacy.57f554ec.js',
  116. './index-legacy.f25f109a8.js',
  117. './icon_timer2-legacy.90431d1a.js',
  118. './index-legacy.901c4933.js',
  119. './index-legacy.f25f109a3.js',
  120. './index-legacy.f25f109a10.js',
  121. './index-legacy.f25f109a5.js',
  122. './icon_student-legacy.45be2fa9.js'
  123. ],
  124. function (exports) {
  125. 'use strict'
  126. var logo$1,
  127. __glob_11_0,
  128. __glob_11_1,
  129. __glob_11_4,
  130. __glob_11_5,
  131. __glob_11_6,
  132. __glob_11_7,
  133. __glob_11_8,
  134. __glob_11_10,
  135. __glob_11_11,
  136. __glob_11_13,
  137. __glob_11_14,
  138. __glob_11_15,
  139. __glob_11_16,
  140. __glob_11_17,
  141. __glob_11_18,
  142. __glob_11_19,
  143. __glob_11_2,
  144. __glob_11_3,
  145. __glob_11_9,
  146. __glob_11_12,
  147. ColHeader,
  148. state,
  149. postMessage,
  150. request,
  151. ColResult,
  152. formatterDate,
  153. defineComponent,
  154. ref,
  155. onUpdated,
  156. h,
  157. onMounted,
  158. createVNode,
  159. Fragment,
  160. createTextVNode,
  161. Cell,
  162. Toast,
  163. Icon,
  164. List,
  165. Checkbox,
  166. isVNode,
  167. Popup,
  168. Button,
  169. dayjs,
  170. Dialog,
  171. Row,
  172. Col,
  173. CellGroup,
  174. DatetimePicker,
  175. ActionSheet,
  176. Course,
  177. iconTeacher,
  178. ColSearch,
  179. OrganSearch,
  180. Student,
  181. useEventListener,
  182. useWindowScroll
  183. return {
  184. setters: [
  185. function (module) {
  186. logo$1 = module.l
  187. __glob_11_0 = module._
  188. __glob_11_1 = module.a
  189. __glob_11_4 = module.b
  190. __glob_11_5 = module.c
  191. __glob_11_6 = module.d
  192. __glob_11_7 = module.e
  193. __glob_11_8 = module.f
  194. __glob_11_10 = module.g
  195. __glob_11_11 = module.h
  196. __glob_11_13 = module.i
  197. __glob_11_14 = module.j
  198. __glob_11_15 = module.k
  199. __glob_11_16 = module.m
  200. __glob_11_17 = module.n
  201. __glob_11_18 = module.o
  202. __glob_11_19 = module.p
  203. },
  204. function (module) {
  205. __glob_11_2 = module._
  206. __glob_11_3 = module.a
  207. __glob_11_9 = module.b
  208. },
  209. function (module) {
  210. __glob_11_12 = module._
  211. },
  212. function (module) {
  213. ColHeader = module.C
  214. },
  215. function (module) {
  216. state = module.s
  217. postMessage = module.p
  218. request = module.r
  219. ColResult = module.C
  220. formatterDate = module.j
  221. },
  222. function (module) {
  223. defineComponent = module.d
  224. ref = module.V
  225. onUpdated = module.aE
  226. h = module.aF
  227. onMounted = module.a4
  228. createVNode = module.a
  229. Fragment = module.F
  230. createTextVNode = module.j
  231. Cell = module.q
  232. Toast = module.T
  233. Icon = module.u
  234. List = module.w
  235. Checkbox = module.a0
  236. isVNode = module.x
  237. Popup = module.P
  238. Button = module.B
  239. dayjs = module.g
  240. Dialog = module.D
  241. Row = module.k
  242. Col = module.l
  243. CellGroup = module.C
  244. DatetimePicker = module.J
  245. ActionSheet = module.A
  246. },
  247. function () {},
  248. function () {},
  249. function () {},
  250. function () {},
  251. function () {},
  252. function () {},
  253. function (module) {
  254. Course = module.C
  255. },
  256. function (module) {
  257. iconTeacher = module.i
  258. },
  259. function (module) {
  260. ColSearch = module.C
  261. },
  262. function (module) {
  263. OrganSearch = module.O
  264. },
  265. function () {},
  266. function () {},
  267. function (module) {
  268. Student = module.S
  269. },
  270. function (module) {
  271. useEventListener = module.u
  272. useWindowScroll = module.a
  273. },
  274. function () {},
  275. function () {},
  276. function () {},
  277. function () {},
  278. function () {},
  279. function () {},
  280. function () {}
  281. ],
  282. execute: function execute() {
  283. var roomHeader = '_roomHeader_13gb6_1'
  284. var countTimer = '_countTimer_13gb6_9'
  285. var timer$1 = '_timer_13gb6_12'
  286. var title = '_title_13gb6_23'
  287. var chargeTimer = '_chargeTimer_13gb6_35'
  288. var studentList$2 = '_studentList_13gb6_45'
  289. var studentCount = '_studentCount_13gb6_51'
  290. var btnGroupInvite = '_btnGroupInvite_13gb6_56'
  291. var searchList = '_searchList_13gb6_77'
  292. var dataItem = '_dataItem_13gb6_82'
  293. var styles$3 = {
  294. roomHeader: roomHeader,
  295. countTimer: countTimer,
  296. timer: timer$1,
  297. title: title,
  298. chargeTimer: chargeTimer,
  299. studentList: studentList$2,
  300. studentCount: studentCount,
  301. btnGroupInvite: btnGroupInvite,
  302. searchList: searchList,
  303. dataItem: dataItem
  304. }
  305. var shareSection = '_shareSection_b869d_1'
  306. var img = '_img_b869d_8'
  307. var name = '_name_b869d_14'
  308. var titleTips = '_titleTips_b869d_20'
  309. var section = '_section_b869d_26'
  310. var txt = '_txt_b869d_32'
  311. var teacherName = '_teacherName_b869d_42'
  312. var download = '_download_b869d_45'
  313. var logo = '_logo_b869d_51'
  314. var qrcode = '_qrcode_b869d_61'
  315. var styles$2 = {
  316. shareSection: shareSection,
  317. img: img,
  318. name: name,
  319. titleTips: titleTips,
  320. section: section,
  321. txt: txt,
  322. teacherName: teacherName,
  323. download: download,
  324. logo: logo,
  325. qrcode: qrcode,
  326. continue: '_continue_b869d_65'
  327. }
  328. /*!
  329. * qrcode.vue v3.3.3
  330. * A Vue.js component to generate QRCode.
  331. * © 2017-2021 @scopewu(https://github.com/scopewu)
  332. * MIT License.
  333. */ /*! *****************************************************************************
  334. Copyright (c) Microsoft Corporation.
  335. Permission to use, copy, modify, and/or distribute this software for any
  336. purpose with or without fee is hereby granted.
  337. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
  338. REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  339. AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
  340. INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  341. LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  342. OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  343. PERFORMANCE OF THIS SOFTWARE.
  344. ***************************************************************************** */ var _assign$ =
  345. function __assign$1() {
  346. _assign$ =
  347. Object.assign ||
  348. function __assign(t) {
  349. for (var s, i = 1, n = arguments.length; i < n; i++) {
  350. s = arguments[i]
  351. for (var p in s) {
  352. if (Object.prototype.hasOwnProperty.call(s, p))
  353. t[p] = s[p]
  354. }
  355. }
  356. return t
  357. }
  358. return _assign$.apply(this, arguments)
  359. }
  360. var mode$1 = {
  361. MODE_NUMBER: 1 << 0,
  362. MODE_ALPHA_NUM: 1 << 1,
  363. MODE_8BIT_BYTE: 1 << 2,
  364. MODE_KANJI: 1 << 3
  365. }
  366. var mode = mode$1
  367. function QR8bitByte(data) {
  368. this.mode = mode.MODE_8BIT_BYTE
  369. this.data = data
  370. }
  371. QR8bitByte.prototype = {
  372. getLength: function getLength(buffer) {
  373. return this.data.length
  374. },
  375. write: function write(buffer) {
  376. for (var i = 0; i < this.data.length; i++) {
  377. // not JIS ...
  378. buffer.put(this.data.charCodeAt(i), 8)
  379. }
  380. }
  381. }
  382. var _8BitByte = QR8bitByte
  383. var ErrorCorrectLevel = { L: 1, M: 0, Q: 3, H: 2 } // ErrorCorrectLevel
  384. var ECL = ErrorCorrectLevel
  385. function QRRSBlock(totalCount, dataCount) {
  386. this.totalCount = totalCount
  387. this.dataCount = dataCount
  388. }
  389. QRRSBlock.RS_BLOCK_TABLE = [
  390. // L
  391. // M
  392. // Q
  393. // H
  394. // 1
  395. [1, 26, 19],
  396. [1, 26, 16],
  397. [1, 26, 13],
  398. [1, 26, 9], // 2
  399. [1, 44, 34],
  400. [1, 44, 28],
  401. [1, 44, 22],
  402. [1, 44, 16], // 3
  403. [1, 70, 55],
  404. [1, 70, 44],
  405. [2, 35, 17],
  406. [2, 35, 13], // 4
  407. [1, 100, 80],
  408. [2, 50, 32],
  409. [2, 50, 24],
  410. [4, 25, 9], // 5
  411. [1, 134, 108],
  412. [2, 67, 43],
  413. [2, 33, 15, 2, 34, 16],
  414. [2, 33, 11, 2, 34, 12], // 6
  415. [2, 86, 68],
  416. [4, 43, 27],
  417. [4, 43, 19],
  418. [4, 43, 15], // 7
  419. [2, 98, 78],
  420. [4, 49, 31],
  421. [2, 32, 14, 4, 33, 15],
  422. [4, 39, 13, 1, 40, 14], // 8
  423. [2, 121, 97],
  424. [2, 60, 38, 2, 61, 39],
  425. [4, 40, 18, 2, 41, 19],
  426. [4, 40, 14, 2, 41, 15], // 9
  427. [2, 146, 116],
  428. [3, 58, 36, 2, 59, 37],
  429. [4, 36, 16, 4, 37, 17],
  430. [4, 36, 12, 4, 37, 13], // 10
  431. [2, 86, 68, 2, 87, 69],
  432. [4, 69, 43, 1, 70, 44],
  433. [6, 43, 19, 2, 44, 20],
  434. [6, 43, 15, 2, 44, 16], // 11
  435. [4, 101, 81],
  436. [1, 80, 50, 4, 81, 51],
  437. [4, 50, 22, 4, 51, 23],
  438. [3, 36, 12, 8, 37, 13], // 12
  439. [2, 116, 92, 2, 117, 93],
  440. [6, 58, 36, 2, 59, 37],
  441. [4, 46, 20, 6, 47, 21],
  442. [7, 42, 14, 4, 43, 15], // 13
  443. [4, 133, 107],
  444. [8, 59, 37, 1, 60, 38],
  445. [8, 44, 20, 4, 45, 21],
  446. [12, 33, 11, 4, 34, 12], // 14
  447. [3, 145, 115, 1, 146, 116],
  448. [4, 64, 40, 5, 65, 41],
  449. [11, 36, 16, 5, 37, 17],
  450. [11, 36, 12, 5, 37, 13], // 15
  451. [5, 109, 87, 1, 110, 88],
  452. [5, 65, 41, 5, 66, 42],
  453. [5, 54, 24, 7, 55, 25],
  454. [11, 36, 12], // 16
  455. [5, 122, 98, 1, 123, 99],
  456. [7, 73, 45, 3, 74, 46],
  457. [15, 43, 19, 2, 44, 20],
  458. [3, 45, 15, 13, 46, 16], // 17
  459. [1, 135, 107, 5, 136, 108],
  460. [10, 74, 46, 1, 75, 47],
  461. [1, 50, 22, 15, 51, 23],
  462. [2, 42, 14, 17, 43, 15], // 18
  463. [5, 150, 120, 1, 151, 121],
  464. [9, 69, 43, 4, 70, 44],
  465. [17, 50, 22, 1, 51, 23],
  466. [2, 42, 14, 19, 43, 15], // 19
  467. [3, 141, 113, 4, 142, 114],
  468. [3, 70, 44, 11, 71, 45],
  469. [17, 47, 21, 4, 48, 22],
  470. [9, 39, 13, 16, 40, 14], // 20
  471. [3, 135, 107, 5, 136, 108],
  472. [3, 67, 41, 13, 68, 42],
  473. [15, 54, 24, 5, 55, 25],
  474. [15, 43, 15, 10, 44, 16], // 21
  475. [4, 144, 116, 4, 145, 117],
  476. [17, 68, 42],
  477. [17, 50, 22, 6, 51, 23],
  478. [19, 46, 16, 6, 47, 17], // 22
  479. [2, 139, 111, 7, 140, 112],
  480. [17, 74, 46],
  481. [7, 54, 24, 16, 55, 25],
  482. [34, 37, 13], // 23
  483. [4, 151, 121, 5, 152, 122],
  484. [4, 75, 47, 14, 76, 48],
  485. [11, 54, 24, 14, 55, 25],
  486. [16, 45, 15, 14, 46, 16], // 24
  487. [6, 147, 117, 4, 148, 118],
  488. [6, 73, 45, 14, 74, 46],
  489. [11, 54, 24, 16, 55, 25],
  490. [30, 46, 16, 2, 47, 17], // 25
  491. [8, 132, 106, 4, 133, 107],
  492. [8, 75, 47, 13, 76, 48],
  493. [7, 54, 24, 22, 55, 25],
  494. [22, 45, 15, 13, 46, 16], // 26
  495. [10, 142, 114, 2, 143, 115],
  496. [19, 74, 46, 4, 75, 47],
  497. [28, 50, 22, 6, 51, 23],
  498. [33, 46, 16, 4, 47, 17], // 27
  499. [8, 152, 122, 4, 153, 123],
  500. [22, 73, 45, 3, 74, 46],
  501. [8, 53, 23, 26, 54, 24],
  502. [12, 45, 15, 28, 46, 16], // 28
  503. [3, 147, 117, 10, 148, 118],
  504. [3, 73, 45, 23, 74, 46],
  505. [4, 54, 24, 31, 55, 25],
  506. [11, 45, 15, 31, 46, 16], // 29
  507. [7, 146, 116, 7, 147, 117],
  508. [21, 73, 45, 7, 74, 46],
  509. [1, 53, 23, 37, 54, 24],
  510. [19, 45, 15, 26, 46, 16], // 30
  511. [5, 145, 115, 10, 146, 116],
  512. [19, 75, 47, 10, 76, 48],
  513. [15, 54, 24, 25, 55, 25],
  514. [23, 45, 15, 25, 46, 16], // 31
  515. [13, 145, 115, 3, 146, 116],
  516. [2, 74, 46, 29, 75, 47],
  517. [42, 54, 24, 1, 55, 25],
  518. [23, 45, 15, 28, 46, 16], // 32
  519. [17, 145, 115],
  520. [10, 74, 46, 23, 75, 47],
  521. [10, 54, 24, 35, 55, 25],
  522. [19, 45, 15, 35, 46, 16], // 33
  523. [17, 145, 115, 1, 146, 116],
  524. [14, 74, 46, 21, 75, 47],
  525. [29, 54, 24, 19, 55, 25],
  526. [11, 45, 15, 46, 46, 16], // 34
  527. [13, 145, 115, 6, 146, 116],
  528. [14, 74, 46, 23, 75, 47],
  529. [44, 54, 24, 7, 55, 25],
  530. [59, 46, 16, 1, 47, 17], // 35
  531. [12, 151, 121, 7, 152, 122],
  532. [12, 75, 47, 26, 76, 48],
  533. [39, 54, 24, 14, 55, 25],
  534. [22, 45, 15, 41, 46, 16], // 36
  535. [6, 151, 121, 14, 152, 122],
  536. [6, 75, 47, 34, 76, 48],
  537. [46, 54, 24, 10, 55, 25],
  538. [2, 45, 15, 64, 46, 16], // 37
  539. [17, 152, 122, 4, 153, 123],
  540. [29, 74, 46, 14, 75, 47],
  541. [49, 54, 24, 10, 55, 25],
  542. [24, 45, 15, 46, 46, 16], // 38
  543. [4, 152, 122, 18, 153, 123],
  544. [13, 74, 46, 32, 75, 47],
  545. [48, 54, 24, 14, 55, 25],
  546. [42, 45, 15, 32, 46, 16], // 39
  547. [20, 147, 117, 4, 148, 118],
  548. [40, 75, 47, 7, 76, 48],
  549. [43, 54, 24, 22, 55, 25],
  550. [10, 45, 15, 67, 46, 16], // 40
  551. [19, 148, 118, 6, 149, 119],
  552. [18, 75, 47, 31, 76, 48],
  553. [34, 54, 24, 34, 55, 25],
  554. [20, 45, 15, 61, 46, 16]
  555. ]
  556. QRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) {
  557. var rsBlock = QRRSBlock.getRsBlockTable(
  558. typeNumber,
  559. errorCorrectLevel
  560. )
  561. if (rsBlock == undefined) {
  562. throw new Error(
  563. 'bad rs block @ typeNumber:' +
  564. typeNumber +
  565. '/errorCorrectLevel:' +
  566. errorCorrectLevel
  567. )
  568. }
  569. var length = rsBlock.length / 3
  570. var list = new Array()
  571. for (var i = 0; i < length; i++) {
  572. var count = rsBlock[i * 3 + 0]
  573. var totalCount = rsBlock[i * 3 + 1]
  574. var dataCount = rsBlock[i * 3 + 2]
  575. for (var j = 0; j < count; j++) {
  576. list.push(new QRRSBlock(totalCount, dataCount))
  577. }
  578. }
  579. return list
  580. }
  581. QRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) {
  582. switch (errorCorrectLevel) {
  583. case ECL.L:
  584. return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]
  585. case ECL.M:
  586. return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]
  587. case ECL.Q:
  588. return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]
  589. case ECL.H:
  590. return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]
  591. default:
  592. return undefined
  593. }
  594. }
  595. var RSBlock$1 = QRRSBlock
  596. function QRBitBuffer() {
  597. this.buffer = new Array()
  598. this.length = 0
  599. }
  600. QRBitBuffer.prototype = {
  601. get: function get(index) {
  602. var bufIndex = Math.floor(index / 8)
  603. return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1
  604. },
  605. put: function put(num, length) {
  606. for (var i = 0; i < length; i++) {
  607. this.putBit(((num >>> (length - i - 1)) & 1) == 1)
  608. }
  609. },
  610. getLengthInBits: function getLengthInBits() {
  611. return this.length
  612. },
  613. putBit: function putBit(bit) {
  614. var bufIndex = Math.floor(this.length / 8)
  615. if (this.buffer.length <= bufIndex) {
  616. this.buffer.push(0)
  617. }
  618. if (bit) {
  619. this.buffer[bufIndex] |= 0x80 >>> this.length % 8
  620. }
  621. this.length++
  622. }
  623. }
  624. var BitBuffer$1 = QRBitBuffer
  625. var QRMath = {
  626. glog: function glog(n) {
  627. if (n < 1) {
  628. throw new Error('glog(' + n + ')')
  629. }
  630. return QRMath.LOG_TABLE[n]
  631. },
  632. gexp: function gexp(n) {
  633. while (n < 0) {
  634. n += 255
  635. }
  636. while (n >= 256) {
  637. n -= 255
  638. }
  639. return QRMath.EXP_TABLE[n]
  640. },
  641. EXP_TABLE: new Array(256),
  642. LOG_TABLE: new Array(256)
  643. }
  644. for (var i$4 = 0; i$4 < 8; i$4++) {
  645. QRMath.EXP_TABLE[i$4] = 1 << i$4
  646. }
  647. for (var i$4 = 8; i$4 < 256; i$4++) {
  648. QRMath.EXP_TABLE[i$4] =
  649. QRMath.EXP_TABLE[i$4 - 4] ^
  650. QRMath.EXP_TABLE[i$4 - 5] ^
  651. QRMath.EXP_TABLE[i$4 - 6] ^
  652. QRMath.EXP_TABLE[i$4 - 8]
  653. }
  654. for (var i$4 = 0; i$4 < 255; i$4++) {
  655. QRMath.LOG_TABLE[QRMath.EXP_TABLE[i$4]] = i$4
  656. }
  657. var math$2 = QRMath
  658. var math$1 = math$2
  659. function QRPolynomial(num, shift) {
  660. if (num.length == undefined) {
  661. throw new Error(num.length + '/' + shift)
  662. }
  663. var offset = 0
  664. while (offset < num.length && num[offset] == 0) {
  665. offset++
  666. }
  667. this.num = new Array(num.length - offset + shift)
  668. for (var i = 0; i < num.length - offset; i++) {
  669. this.num[i] = num[i + offset]
  670. }
  671. }
  672. QRPolynomial.prototype = {
  673. get: function get(index) {
  674. return this.num[index]
  675. },
  676. getLength: function getLength() {
  677. return this.num.length
  678. },
  679. multiply: function multiply(e) {
  680. var num = new Array(this.getLength() + e.getLength() - 1)
  681. for (var i = 0; i < this.getLength(); i++) {
  682. for (var j = 0; j < e.getLength(); j++) {
  683. num[i + j] ^= math$1.gexp(
  684. math$1.glog(this.get(i)) + math$1.glog(e.get(j))
  685. )
  686. }
  687. }
  688. return new QRPolynomial(num, 0)
  689. },
  690. mod: function mod(e) {
  691. if (this.getLength() - e.getLength() < 0) {
  692. return this
  693. }
  694. var ratio = math$1.glog(this.get(0)) - math$1.glog(e.get(0))
  695. var num = new Array(this.getLength())
  696. for (var i = 0; i < this.getLength(); i++) {
  697. num[i] = this.get(i)
  698. }
  699. for (var i = 0; i < e.getLength(); i++) {
  700. num[i] ^= math$1.gexp(math$1.glog(e.get(i)) + ratio)
  701. } // recursive call
  702. return new QRPolynomial(num, 0).mod(e)
  703. }
  704. }
  705. var Polynomial$2 = QRPolynomial
  706. var Mode = mode$1
  707. var Polynomial$1 = Polynomial$2
  708. var math = math$2
  709. var QRMaskPattern = {
  710. PATTERN000: 0,
  711. PATTERN001: 1,
  712. PATTERN010: 2,
  713. PATTERN011: 3,
  714. PATTERN100: 4,
  715. PATTERN101: 5,
  716. PATTERN110: 6,
  717. PATTERN111: 7
  718. }
  719. var QRUtil = {
  720. PATTERN_POSITION_TABLE: [
  721. [],
  722. [6, 18],
  723. [6, 22],
  724. [6, 26],
  725. [6, 30],
  726. [6, 34],
  727. [6, 22, 38],
  728. [6, 24, 42],
  729. [6, 26, 46],
  730. [6, 28, 50],
  731. [6, 30, 54],
  732. [6, 32, 58],
  733. [6, 34, 62],
  734. [6, 26, 46, 66],
  735. [6, 26, 48, 70],
  736. [6, 26, 50, 74],
  737. [6, 30, 54, 78],
  738. [6, 30, 56, 82],
  739. [6, 30, 58, 86],
  740. [6, 34, 62, 90],
  741. [6, 28, 50, 72, 94],
  742. [6, 26, 50, 74, 98],
  743. [6, 30, 54, 78, 102],
  744. [6, 28, 54, 80, 106],
  745. [6, 32, 58, 84, 110],
  746. [6, 30, 58, 86, 114],
  747. [6, 34, 62, 90, 118],
  748. [6, 26, 50, 74, 98, 122],
  749. [6, 30, 54, 78, 102, 126],
  750. [6, 26, 52, 78, 104, 130],
  751. [6, 30, 56, 82, 108, 134],
  752. [6, 34, 60, 86, 112, 138],
  753. [6, 30, 58, 86, 114, 142],
  754. [6, 34, 62, 90, 118, 146],
  755. [6, 30, 54, 78, 102, 126, 150],
  756. [6, 24, 50, 76, 102, 128, 154],
  757. [6, 28, 54, 80, 106, 132, 158],
  758. [6, 32, 58, 84, 110, 136, 162],
  759. [6, 26, 54, 82, 110, 138, 166],
  760. [6, 30, 58, 86, 114, 142, 170]
  761. ],
  762. G15:
  763. (1 << 10) |
  764. (1 << 8) |
  765. (1 << 5) |
  766. (1 << 4) |
  767. (1 << 2) |
  768. (1 << 1) |
  769. (1 << 0),
  770. G18:
  771. (1 << 12) |
  772. (1 << 11) |
  773. (1 << 10) |
  774. (1 << 9) |
  775. (1 << 8) |
  776. (1 << 5) |
  777. (1 << 2) |
  778. (1 << 0),
  779. G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),
  780. getBCHTypeInfo: function getBCHTypeInfo(data) {
  781. var d = data << 10
  782. while (
  783. QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >=
  784. 0
  785. ) {
  786. d ^=
  787. QRUtil.G15 <<
  788. (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15))
  789. }
  790. return ((data << 10) | d) ^ QRUtil.G15_MASK
  791. },
  792. getBCHTypeNumber: function getBCHTypeNumber(data) {
  793. var d = data << 12
  794. while (
  795. QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >=
  796. 0
  797. ) {
  798. d ^=
  799. QRUtil.G18 <<
  800. (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18))
  801. }
  802. return (data << 12) | d
  803. },
  804. getBCHDigit: function getBCHDigit(data) {
  805. var digit = 0
  806. while (data != 0) {
  807. digit++
  808. data >>>= 1
  809. }
  810. return digit
  811. },
  812. getPatternPosition: function getPatternPosition(typeNumber) {
  813. return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]
  814. },
  815. getMask: function getMask(maskPattern, i, j) {
  816. switch (maskPattern) {
  817. case QRMaskPattern.PATTERN000:
  818. return (i + j) % 2 == 0
  819. case QRMaskPattern.PATTERN001:
  820. return i % 2 == 0
  821. case QRMaskPattern.PATTERN010:
  822. return j % 3 == 0
  823. case QRMaskPattern.PATTERN011:
  824. return (i + j) % 3 == 0
  825. case QRMaskPattern.PATTERN100:
  826. return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0
  827. case QRMaskPattern.PATTERN101:
  828. return ((i * j) % 2) + ((i * j) % 3) == 0
  829. case QRMaskPattern.PATTERN110:
  830. return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0
  831. case QRMaskPattern.PATTERN111:
  832. return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0
  833. default:
  834. throw new Error('bad maskPattern:' + maskPattern)
  835. }
  836. },
  837. getErrorCorrectPolynomial: function getErrorCorrectPolynomial(
  838. errorCorrectLength
  839. ) {
  840. var a = new Polynomial$1([1], 0)
  841. for (var i = 0; i < errorCorrectLength; i++) {
  842. a = a.multiply(new Polynomial$1([1, math.gexp(i)], 0))
  843. }
  844. return a
  845. },
  846. getLengthInBits: function getLengthInBits(mode, type) {
  847. if (1 <= type && type < 10) {
  848. // 1 - 9
  849. switch (mode) {
  850. case Mode.MODE_NUMBER:
  851. return 10
  852. case Mode.MODE_ALPHA_NUM:
  853. return 9
  854. case Mode.MODE_8BIT_BYTE:
  855. return 8
  856. case Mode.MODE_KANJI:
  857. return 8
  858. default:
  859. throw new Error('mode:' + mode)
  860. }
  861. } else if (type < 27) {
  862. // 10 - 26
  863. switch (mode) {
  864. case Mode.MODE_NUMBER:
  865. return 12
  866. case Mode.MODE_ALPHA_NUM:
  867. return 11
  868. case Mode.MODE_8BIT_BYTE:
  869. return 16
  870. case Mode.MODE_KANJI:
  871. return 10
  872. default:
  873. throw new Error('mode:' + mode)
  874. }
  875. } else if (type < 41) {
  876. // 27 - 40
  877. switch (mode) {
  878. case Mode.MODE_NUMBER:
  879. return 14
  880. case Mode.MODE_ALPHA_NUM:
  881. return 13
  882. case Mode.MODE_8BIT_BYTE:
  883. return 16
  884. case Mode.MODE_KANJI:
  885. return 12
  886. default:
  887. throw new Error('mode:' + mode)
  888. }
  889. } else {
  890. throw new Error('type:' + type)
  891. }
  892. },
  893. getLostPoint: function getLostPoint(qrCode) {
  894. var moduleCount = qrCode.getModuleCount()
  895. var lostPoint = 0 // LEVEL1
  896. for (var row = 0; row < moduleCount; row++) {
  897. for (var col = 0; col < moduleCount; col++) {
  898. var sameCount = 0
  899. var dark = qrCode.isDark(row, col)
  900. for (var r = -1; r <= 1; r++) {
  901. if (row + r < 0 || moduleCount <= row + r) {
  902. continue
  903. }
  904. for (var c = -1; c <= 1; c++) {
  905. if (col + c < 0 || moduleCount <= col + c) {
  906. continue
  907. }
  908. if (r == 0 && c == 0) {
  909. continue
  910. }
  911. if (dark == qrCode.isDark(row + r, col + c)) {
  912. sameCount++
  913. }
  914. }
  915. }
  916. if (sameCount > 5) {
  917. lostPoint += 3 + sameCount - 5
  918. }
  919. }
  920. } // LEVEL2
  921. for (var row = 0; row < moduleCount - 1; row++) {
  922. for (var col = 0; col < moduleCount - 1; col++) {
  923. var count = 0
  924. if (qrCode.isDark(row, col)) count++
  925. if (qrCode.isDark(row + 1, col)) count++
  926. if (qrCode.isDark(row, col + 1)) count++
  927. if (qrCode.isDark(row + 1, col + 1)) count++
  928. if (count == 0 || count == 4) {
  929. lostPoint += 3
  930. }
  931. }
  932. } // LEVEL3
  933. for (var row = 0; row < moduleCount; row++) {
  934. for (var col = 0; col < moduleCount - 6; col++) {
  935. if (
  936. qrCode.isDark(row, col) &&
  937. !qrCode.isDark(row, col + 1) &&
  938. qrCode.isDark(row, col + 2) &&
  939. qrCode.isDark(row, col + 3) &&
  940. qrCode.isDark(row, col + 4) &&
  941. !qrCode.isDark(row, col + 5) &&
  942. qrCode.isDark(row, col + 6)
  943. ) {
  944. lostPoint += 40
  945. }
  946. }
  947. }
  948. for (var col = 0; col < moduleCount; col++) {
  949. for (var row = 0; row < moduleCount - 6; row++) {
  950. if (
  951. qrCode.isDark(row, col) &&
  952. !qrCode.isDark(row + 1, col) &&
  953. qrCode.isDark(row + 2, col) &&
  954. qrCode.isDark(row + 3, col) &&
  955. qrCode.isDark(row + 4, col) &&
  956. !qrCode.isDark(row + 5, col) &&
  957. qrCode.isDark(row + 6, col)
  958. ) {
  959. lostPoint += 40
  960. }
  961. }
  962. } // LEVEL4
  963. var darkCount = 0
  964. for (var col = 0; col < moduleCount; col++) {
  965. for (var row = 0; row < moduleCount; row++) {
  966. if (qrCode.isDark(row, col)) {
  967. darkCount++
  968. }
  969. }
  970. }
  971. var ratio =
  972. Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5
  973. lostPoint += ratio * 10
  974. return lostPoint
  975. }
  976. }
  977. var util$1 = QRUtil
  978. var BitByte = _8BitByte
  979. var RSBlock = RSBlock$1
  980. var BitBuffer = BitBuffer$1
  981. var util = util$1
  982. var Polynomial = Polynomial$2
  983. function QRCode$1(typeNumber, errorCorrectLevel) {
  984. this.typeNumber = typeNumber
  985. this.errorCorrectLevel = errorCorrectLevel
  986. this.modules = null
  987. this.moduleCount = 0
  988. this.dataCache = null
  989. this.dataList = []
  990. } // for client side minification
  991. var proto = QRCode$1.prototype
  992. proto.addData = function (data) {
  993. var newData = new BitByte(data)
  994. this.dataList.push(newData)
  995. this.dataCache = null
  996. }
  997. proto.isDark = function (row, col) {
  998. if (
  999. row < 0 ||
  1000. this.moduleCount <= row ||
  1001. col < 0 ||
  1002. this.moduleCount <= col
  1003. ) {
  1004. throw new Error(row + ',' + col)
  1005. }
  1006. return this.modules[row][col]
  1007. }
  1008. proto.getModuleCount = function () {
  1009. return this.moduleCount
  1010. }
  1011. proto.make = function () {
  1012. // Calculate automatically typeNumber if provided is < 1
  1013. if (this.typeNumber < 1) {
  1014. var typeNumber = 1
  1015. for (typeNumber = 1; typeNumber < 40; typeNumber++) {
  1016. var rsBlocks = RSBlock.getRSBlocks(
  1017. typeNumber,
  1018. this.errorCorrectLevel
  1019. )
  1020. var buffer = new BitBuffer()
  1021. var totalDataCount = 0
  1022. for (var i = 0; i < rsBlocks.length; i++) {
  1023. totalDataCount += rsBlocks[i].dataCount
  1024. }
  1025. for (var i = 0; i < this.dataList.length; i++) {
  1026. var data = this.dataList[i]
  1027. buffer.put(data.mode, 4)
  1028. buffer.put(
  1029. data.getLength(),
  1030. util.getLengthInBits(data.mode, typeNumber)
  1031. )
  1032. data.write(buffer)
  1033. }
  1034. if (buffer.getLengthInBits() <= totalDataCount * 8) break
  1035. }
  1036. this.typeNumber = typeNumber
  1037. }
  1038. this.makeImpl(false, this.getBestMaskPattern())
  1039. }
  1040. proto.makeImpl = function (test, maskPattern) {
  1041. this.moduleCount = this.typeNumber * 4 + 17
  1042. this.modules = new Array(this.moduleCount)
  1043. for (var row = 0; row < this.moduleCount; row++) {
  1044. this.modules[row] = new Array(this.moduleCount)
  1045. for (var col = 0; col < this.moduleCount; col++) {
  1046. this.modules[row][col] = null //(col + row) % 3;
  1047. }
  1048. }
  1049. this.setupPositionProbePattern(0, 0)
  1050. this.setupPositionProbePattern(this.moduleCount - 7, 0)
  1051. this.setupPositionProbePattern(0, this.moduleCount - 7)
  1052. this.setupPositionAdjustPattern()
  1053. this.setupTimingPattern()
  1054. this.setupTypeInfo(test, maskPattern)
  1055. if (this.typeNumber >= 7) {
  1056. this.setupTypeNumber(test)
  1057. }
  1058. if (this.dataCache == null) {
  1059. this.dataCache = QRCode$1.createData(
  1060. this.typeNumber,
  1061. this.errorCorrectLevel,
  1062. this.dataList
  1063. )
  1064. }
  1065. this.mapData(this.dataCache, maskPattern)
  1066. }
  1067. proto.setupPositionProbePattern = function (row, col) {
  1068. for (var r = -1; r <= 7; r++) {
  1069. if (row + r <= -1 || this.moduleCount <= row + r) continue
  1070. for (var c = -1; c <= 7; c++) {
  1071. if (col + c <= -1 || this.moduleCount <= col + c) continue
  1072. if (
  1073. (0 <= r && r <= 6 && (c == 0 || c == 6)) ||
  1074. (0 <= c && c <= 6 && (r == 0 || r == 6)) ||
  1075. (2 <= r && r <= 4 && 2 <= c && c <= 4)
  1076. ) {
  1077. this.modules[row + r][col + c] = true
  1078. } else {
  1079. this.modules[row + r][col + c] = false
  1080. }
  1081. }
  1082. }
  1083. }
  1084. proto.getBestMaskPattern = function () {
  1085. var minLostPoint = 0
  1086. var pattern = 0
  1087. for (var i = 0; i < 8; i++) {
  1088. this.makeImpl(true, i)
  1089. var lostPoint = util.getLostPoint(this)
  1090. if (i == 0 || minLostPoint > lostPoint) {
  1091. minLostPoint = lostPoint
  1092. pattern = i
  1093. }
  1094. }
  1095. return pattern
  1096. }
  1097. proto.createMovieClip = function (target_mc, instance_name, depth) {
  1098. var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth)
  1099. var cs = 1
  1100. this.make()
  1101. for (var row = 0; row < this.modules.length; row++) {
  1102. var y = row * cs
  1103. for (var col = 0; col < this.modules[row].length; col++) {
  1104. var x = col * cs
  1105. var dark = this.modules[row][col]
  1106. if (dark) {
  1107. qr_mc.beginFill(0, 100)
  1108. qr_mc.moveTo(x, y)
  1109. qr_mc.lineTo(x + cs, y)
  1110. qr_mc.lineTo(x + cs, y + cs)
  1111. qr_mc.lineTo(x, y + cs)
  1112. qr_mc.endFill()
  1113. }
  1114. }
  1115. }
  1116. return qr_mc
  1117. }
  1118. proto.setupTimingPattern = function () {
  1119. for (var r = 8; r < this.moduleCount - 8; r++) {
  1120. if (this.modules[r][6] != null) {
  1121. continue
  1122. }
  1123. this.modules[r][6] = r % 2 == 0
  1124. }
  1125. for (var c = 8; c < this.moduleCount - 8; c++) {
  1126. if (this.modules[6][c] != null) {
  1127. continue
  1128. }
  1129. this.modules[6][c] = c % 2 == 0
  1130. }
  1131. }
  1132. proto.setupPositionAdjustPattern = function () {
  1133. var pos = util.getPatternPosition(this.typeNumber)
  1134. for (var i = 0; i < pos.length; i++) {
  1135. for (var j = 0; j < pos.length; j++) {
  1136. var row = pos[i]
  1137. var col = pos[j]
  1138. if (this.modules[row][col] != null) {
  1139. continue
  1140. }
  1141. for (var r = -2; r <= 2; r++) {
  1142. for (var c = -2; c <= 2; c++) {
  1143. if (
  1144. r == -2 ||
  1145. r == 2 ||
  1146. c == -2 ||
  1147. c == 2 ||
  1148. (r == 0 && c == 0)
  1149. ) {
  1150. this.modules[row + r][col + c] = true
  1151. } else {
  1152. this.modules[row + r][col + c] = false
  1153. }
  1154. }
  1155. }
  1156. }
  1157. }
  1158. }
  1159. proto.setupTypeNumber = function (test) {
  1160. var bits = util.getBCHTypeNumber(this.typeNumber)
  1161. for (var i = 0; i < 18; i++) {
  1162. var mod = !test && ((bits >> i) & 1) == 1
  1163. this.modules[Math.floor(i / 3)][
  1164. (i % 3) + this.moduleCount - 8 - 3
  1165. ] = mod
  1166. }
  1167. for (var i = 0; i < 18; i++) {
  1168. var mod = !test && ((bits >> i) & 1) == 1
  1169. this.modules[(i % 3) + this.moduleCount - 8 - 3][
  1170. Math.floor(i / 3)
  1171. ] = mod
  1172. }
  1173. }
  1174. proto.setupTypeInfo = function (test, maskPattern) {
  1175. var data = (this.errorCorrectLevel << 3) | maskPattern
  1176. var bits = util.getBCHTypeInfo(data) // vertical
  1177. for (var i = 0; i < 15; i++) {
  1178. var mod = !test && ((bits >> i) & 1) == 1
  1179. if (i < 6) {
  1180. this.modules[i][8] = mod
  1181. } else if (i < 8) {
  1182. this.modules[i + 1][8] = mod
  1183. } else {
  1184. this.modules[this.moduleCount - 15 + i][8] = mod
  1185. }
  1186. } // horizontal
  1187. for (var i = 0; i < 15; i++) {
  1188. var mod = !test && ((bits >> i) & 1) == 1
  1189. if (i < 8) {
  1190. this.modules[8][this.moduleCount - i - 1] = mod
  1191. } else if (i < 9) {
  1192. this.modules[8][15 - i - 1 + 1] = mod
  1193. } else {
  1194. this.modules[8][15 - i - 1] = mod
  1195. }
  1196. } // fixed module
  1197. this.modules[this.moduleCount - 8][8] = !test
  1198. }
  1199. proto.mapData = function (data, maskPattern) {
  1200. var inc = -1
  1201. var row = this.moduleCount - 1
  1202. var bitIndex = 7
  1203. var byteIndex = 0
  1204. for (var col = this.moduleCount - 1; col > 0; col -= 2) {
  1205. if (col == 6) col--
  1206. while (true) {
  1207. for (var c = 0; c < 2; c++) {
  1208. if (this.modules[row][col - c] == null) {
  1209. var dark = false
  1210. if (byteIndex < data.length) {
  1211. dark = ((data[byteIndex] >>> bitIndex) & 1) == 1
  1212. }
  1213. var mask = util.getMask(maskPattern, row, col - c)
  1214. if (mask) {
  1215. dark = !dark
  1216. }
  1217. this.modules[row][col - c] = dark
  1218. bitIndex--
  1219. if (bitIndex == -1) {
  1220. byteIndex++
  1221. bitIndex = 7
  1222. }
  1223. }
  1224. }
  1225. row += inc
  1226. if (row < 0 || this.moduleCount <= row) {
  1227. row -= inc
  1228. inc = -inc
  1229. break
  1230. }
  1231. }
  1232. }
  1233. }
  1234. QRCode$1.PAD0 = 0xec
  1235. QRCode$1.PAD1 = 0x11
  1236. QRCode$1.createData = function (
  1237. typeNumber,
  1238. errorCorrectLevel,
  1239. dataList
  1240. ) {
  1241. var rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel)
  1242. var buffer = new BitBuffer()
  1243. for (var i = 0; i < dataList.length; i++) {
  1244. var data = dataList[i]
  1245. buffer.put(data.mode, 4)
  1246. buffer.put(
  1247. data.getLength(),
  1248. util.getLengthInBits(data.mode, typeNumber)
  1249. )
  1250. data.write(buffer)
  1251. } // calc num max data.
  1252. var totalDataCount = 0
  1253. for (var i = 0; i < rsBlocks.length; i++) {
  1254. totalDataCount += rsBlocks[i].dataCount
  1255. }
  1256. if (buffer.getLengthInBits() > totalDataCount * 8) {
  1257. throw new Error(
  1258. 'code length overflow. (' +
  1259. buffer.getLengthInBits() +
  1260. '>' +
  1261. totalDataCount * 8 +
  1262. ')'
  1263. )
  1264. } // end code
  1265. if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {
  1266. buffer.put(0, 4)
  1267. } // padding
  1268. while (buffer.getLengthInBits() % 8 != 0) {
  1269. buffer.putBit(false)
  1270. } // padding
  1271. while (true) {
  1272. if (buffer.getLengthInBits() >= totalDataCount * 8) {
  1273. break
  1274. }
  1275. buffer.put(QRCode$1.PAD0, 8)
  1276. if (buffer.getLengthInBits() >= totalDataCount * 8) {
  1277. break
  1278. }
  1279. buffer.put(QRCode$1.PAD1, 8)
  1280. }
  1281. return QRCode$1.createBytes(buffer, rsBlocks)
  1282. }
  1283. QRCode$1.createBytes = function (buffer, rsBlocks) {
  1284. var offset = 0
  1285. var maxDcCount = 0
  1286. var maxEcCount = 0
  1287. var dcdata = new Array(rsBlocks.length)
  1288. var ecdata = new Array(rsBlocks.length)
  1289. for (var r = 0; r < rsBlocks.length; r++) {
  1290. var dcCount = rsBlocks[r].dataCount
  1291. var ecCount = rsBlocks[r].totalCount - dcCount
  1292. maxDcCount = Math.max(maxDcCount, dcCount)
  1293. maxEcCount = Math.max(maxEcCount, ecCount)
  1294. dcdata[r] = new Array(dcCount)
  1295. for (var i = 0; i < dcdata[r].length; i++) {
  1296. dcdata[r][i] = 0xff & buffer.buffer[i + offset]
  1297. }
  1298. offset += dcCount
  1299. var rsPoly = util.getErrorCorrectPolynomial(ecCount)
  1300. var rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1)
  1301. var modPoly = rawPoly.mod(rsPoly)
  1302. ecdata[r] = new Array(rsPoly.getLength() - 1)
  1303. for (var i = 0; i < ecdata[r].length; i++) {
  1304. var modIndex = i + modPoly.getLength() - ecdata[r].length
  1305. ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0
  1306. }
  1307. }
  1308. var totalCodeCount = 0
  1309. for (var i = 0; i < rsBlocks.length; i++) {
  1310. totalCodeCount += rsBlocks[i].totalCount
  1311. }
  1312. var data = new Array(totalCodeCount)
  1313. var index = 0
  1314. for (var i = 0; i < maxDcCount; i++) {
  1315. for (var r = 0; r < rsBlocks.length; r++) {
  1316. if (i < dcdata[r].length) {
  1317. data[index++] = dcdata[r][i]
  1318. }
  1319. }
  1320. }
  1321. for (var i = 0; i < maxEcCount; i++) {
  1322. for (var r = 0; r < rsBlocks.length; r++) {
  1323. if (i < ecdata[r].length) {
  1324. data[index++] = ecdata[r][i]
  1325. }
  1326. }
  1327. }
  1328. return data
  1329. }
  1330. var QRCode_1 = QRCode$1
  1331. var defaultErrorCorrectLevel = 'H' // Thanks the `qrcode.react`
  1332. var SUPPORTS_PATH2D = (function () {
  1333. try {
  1334. new Path2D().addPath(new Path2D())
  1335. } catch (e) {
  1336. return false
  1337. }
  1338. return true
  1339. })()
  1340. function QRCode(data, level) {
  1341. var errorCorrectLevel = ErrorCorrectLevel[level] // We'll use type===-1 to force QRCode to automatically pick the best type
  1342. var qrcode = new QRCode_1(-1, errorCorrectLevel)
  1343. qrcode.addData(toUTF8String(data))
  1344. qrcode.make()
  1345. return qrcode
  1346. }
  1347. function validErrorCorrectLevel(level) {
  1348. return level in ErrorCorrectLevel
  1349. }
  1350. /**
  1351. * Encode UTF16 to UTF8.
  1352. * See: http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/
  1353. * @param str {string}
  1354. * @returns {string}
  1355. */ function toUTF8String(str) {
  1356. var utf8Str = ''
  1357. for (var i = 0; i < str.length; i++) {
  1358. var charCode = str.charCodeAt(i)
  1359. if (charCode < 0x0080) {
  1360. utf8Str += String.fromCharCode(charCode)
  1361. } else if (charCode < 0x0800) {
  1362. utf8Str += String.fromCharCode(0xc0 | (charCode >> 6))
  1363. utf8Str += String.fromCharCode(0x80 | (charCode & 0x3f))
  1364. } else if (charCode < 0xd800 || charCode >= 0xe000) {
  1365. utf8Str += String.fromCharCode(0xe0 | (charCode >> 12))
  1366. utf8Str += String.fromCharCode(0x80 | ((charCode >> 6) & 0x3f))
  1367. utf8Str += String.fromCharCode(0x80 | (charCode & 0x3f))
  1368. } else {
  1369. // surrogate pair
  1370. i++ // UTF-16 encodes 0x10000-0x10FFFF by
  1371. // subtracting 0x10000 and splitting the
  1372. // 20 bits of 0x0-0xFFFFF into two halves
  1373. charCode =
  1374. 0x10000 +
  1375. (((charCode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff))
  1376. utf8Str += String.fromCharCode(0xf0 | (charCode >> 18))
  1377. utf8Str += String.fromCharCode(0x80 | ((charCode >> 12) & 0x3f))
  1378. utf8Str += String.fromCharCode(0x80 | ((charCode >> 6) & 0x3f))
  1379. utf8Str += String.fromCharCode(0x80 | (charCode & 0x3f))
  1380. }
  1381. }
  1382. return utf8Str
  1383. }
  1384. function generatePath(modules, margin) {
  1385. if (margin === void 0) {
  1386. margin = 0
  1387. }
  1388. var ops = []
  1389. modules.forEach(function (row, y) {
  1390. var start = null
  1391. row.forEach(function (cell, x) {
  1392. if (!cell && start !== null) {
  1393. // M0 0h7v1H0z injects the space with the move and drops the comma,
  1394. // saving a char per operation
  1395. ops.push(
  1396. 'M' +
  1397. (start + margin) +
  1398. ' ' +
  1399. (y + margin) +
  1400. 'h' +
  1401. (x - start) +
  1402. 'v1H' +
  1403. (start + margin) +
  1404. 'z'
  1405. )
  1406. start = null
  1407. return
  1408. } // end of row, clean up or skip
  1409. if (x === row.length - 1) {
  1410. if (!cell) {
  1411. // We would have closed the op above already so this can only mean
  1412. // 2+ light modules in a row.
  1413. return
  1414. }
  1415. if (start === null) {
  1416. // Just a single dark module.
  1417. ops.push(
  1418. 'M' +
  1419. (x + margin) +
  1420. ',' +
  1421. (y + margin) +
  1422. ' h1v1H' +
  1423. (x + margin) +
  1424. 'z'
  1425. )
  1426. } else {
  1427. // Otherwise finish the current line.
  1428. ops.push(
  1429. 'M' +
  1430. (start + margin) +
  1431. ',' +
  1432. (y + margin) +
  1433. ' h' +
  1434. (x + 1 - start) +
  1435. 'v1H' +
  1436. (start + margin) +
  1437. 'z'
  1438. )
  1439. }
  1440. return
  1441. }
  1442. if (cell && start === null) {
  1443. start = x
  1444. }
  1445. })
  1446. })
  1447. return ops.join('')
  1448. }
  1449. var QRCodeProps = {
  1450. value: { type: String, required: true, default: '' },
  1451. size: { type: Number, default: 100 },
  1452. level: {
  1453. type: String,
  1454. default: defaultErrorCorrectLevel,
  1455. validator: function validator(l) {
  1456. return validErrorCorrectLevel(l)
  1457. }
  1458. },
  1459. background: { type: String, default: '#fff' },
  1460. foreground: { type: String, default: '#000' },
  1461. margin: { type: Number, required: false, default: 0 }
  1462. }
  1463. var QRCodeVueProps = _assign$(_assign$({}, QRCodeProps), {
  1464. renderAs: {
  1465. type: String,
  1466. required: false,
  1467. default: 'canvas',
  1468. validator: function validator(as) {
  1469. return ['canvas', 'svg'].indexOf(as) > -1
  1470. }
  1471. }
  1472. })
  1473. var QRCodeSvg = defineComponent({
  1474. name: 'QRCodeSvg',
  1475. props: QRCodeProps,
  1476. setup: function setup(props) {
  1477. var numCells = ref(0)
  1478. var fgPath = ref('')
  1479. var generate = function generate() {
  1480. var value = props.value,
  1481. level = props.level,
  1482. margin = props.margin
  1483. var cells = QRCode(value, level).modules
  1484. numCells.value = cells.length + margin * 2 // Drawing strategy: instead of a rect per module, we're going to create a
  1485. // single path for the dark modules and layer that on top of a light rect,
  1486. // for a total of 2 DOM nodes. We pay a bit more in string concat but that's
  1487. // way faster than DOM ops.
  1488. // For level 1, 441 nodes -> 2
  1489. // For level 40, 31329 -> 2
  1490. fgPath.value = generatePath(cells, margin)
  1491. }
  1492. generate()
  1493. onUpdated(generate)
  1494. return function () {
  1495. return h(
  1496. 'svg',
  1497. {
  1498. width: props.size,
  1499. height: props.size,
  1500. 'shape-rendering': 'crispEdges',
  1501. xmlns: 'http://www.w3.org/2000/svg',
  1502. viewBox: '0 0 ' + numCells.value + ' ' + numCells.value
  1503. },
  1504. [
  1505. h('path', {
  1506. fill: props.background,
  1507. d:
  1508. 'M0,0 h' + numCells.value + 'v' + numCells.value + 'H0z'
  1509. }),
  1510. h('path', { fill: props.foreground, d: fgPath.value })
  1511. ]
  1512. )
  1513. }
  1514. }
  1515. })
  1516. var QRCodeCanvas = defineComponent({
  1517. name: 'QRCodeCanvas',
  1518. props: QRCodeProps,
  1519. setup: function setup(props) {
  1520. var canvasEl = ref(null)
  1521. var generate = function generate() {
  1522. var value = props.value,
  1523. level = props.level,
  1524. size = props.size,
  1525. margin = props.margin,
  1526. background = props.background,
  1527. foreground = props.foreground
  1528. var cells = QRCode(value, level).modules
  1529. var numCells = cells.length + margin * 2
  1530. var canvas = canvasEl.value
  1531. if (!canvas) {
  1532. return
  1533. }
  1534. var ctx = canvas.getContext('2d')
  1535. if (!ctx) {
  1536. return
  1537. }
  1538. var devicePixelRatio = window.devicePixelRatio || 1
  1539. var scale = (size / numCells) * devicePixelRatio
  1540. canvas.height = canvas.width = size * devicePixelRatio
  1541. ctx.scale(scale, scale)
  1542. ctx.fillStyle = background
  1543. ctx.fillRect(0, 0, numCells, numCells)
  1544. ctx.fillStyle = foreground
  1545. if (SUPPORTS_PATH2D) {
  1546. ctx.fill(new Path2D(generatePath(cells, margin)))
  1547. } else {
  1548. cells.forEach(function (row, rdx) {
  1549. row.forEach(function (cell, cdx) {
  1550. if (cell) {
  1551. ctx.fillRect(cdx + margin, rdx + margin, 1, 1)
  1552. }
  1553. })
  1554. })
  1555. }
  1556. }
  1557. onMounted(generate)
  1558. onUpdated(generate)
  1559. return function () {
  1560. return h('canvas', {
  1561. ref: canvasEl,
  1562. style: { width: props.size + 'px', height: props.size + 'px' }
  1563. })
  1564. }
  1565. }
  1566. })
  1567. var QrcodeVue = defineComponent({
  1568. name: 'Qrcode',
  1569. render: function render() {
  1570. var _a = this.$props,
  1571. renderAs = _a.renderAs,
  1572. value = _a.value,
  1573. _size = _a.size,
  1574. _margin = _a.margin,
  1575. _level = _a.level,
  1576. background = _a.background,
  1577. foreground = _a.foreground
  1578. var size = _size >>> 0
  1579. var margin = _margin >>> 0
  1580. var level = validErrorCorrectLevel(_level)
  1581. ? _level
  1582. : defaultErrorCorrectLevel
  1583. return h(renderAs === 'svg' ? QRCodeSvg : QRCodeCanvas, {
  1584. value: value,
  1585. size: size,
  1586. margin: margin,
  1587. level: level,
  1588. background: background,
  1589. foreground: foreground
  1590. })
  1591. },
  1592. props: QRCodeVueProps
  1593. })
  1594. /*!
  1595. * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
  1596. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  1597. * Released under MIT License
  1598. */ /*! *****************************************************************************
  1599. Copyright (c) Microsoft Corporation.
  1600. Permission to use, copy, modify, and/or distribute this software for any
  1601. purpose with or without fee is hereby granted.
  1602. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
  1603. REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  1604. AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
  1605. INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  1606. LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  1607. OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  1608. PERFORMANCE OF THIS SOFTWARE.
  1609. ***************************************************************************** */ /* global Reflect, Promise */ var _extendStatics =
  1610. function extendStatics(d, b) {
  1611. _extendStatics =
  1612. Object.setPrototypeOf ||
  1613. ({ __proto__: [] } instanceof Array &&
  1614. function (d, b) {
  1615. d.__proto__ = b
  1616. }) ||
  1617. function (d, b) {
  1618. for (var p in b) {
  1619. if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]
  1620. }
  1621. }
  1622. return _extendStatics(d, b)
  1623. }
  1624. function __extends(d, b) {
  1625. if (typeof b !== 'function' && b !== null)
  1626. throw new TypeError(
  1627. 'Class extends value ' +
  1628. String(b) +
  1629. ' is not a constructor or null'
  1630. )
  1631. _extendStatics(d, b)
  1632. function __() {
  1633. this.constructor = d
  1634. }
  1635. d.prototype =
  1636. b === null
  1637. ? Object.create(b)
  1638. : ((__.prototype = b.prototype), new __())
  1639. }
  1640. var _assign = function __assign() {
  1641. _assign =
  1642. Object.assign ||
  1643. function __assign(t) {
  1644. for (var s, i = 1, n = arguments.length; i < n; i++) {
  1645. s = arguments[i]
  1646. for (var p in s) {
  1647. if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]
  1648. }
  1649. }
  1650. return t
  1651. }
  1652. return _assign.apply(this, arguments)
  1653. }
  1654. function __awaiter(thisArg, _arguments, P, generator) {
  1655. function adopt(value) {
  1656. return value instanceof P
  1657. ? value
  1658. : new P(function (resolve) {
  1659. resolve(value)
  1660. })
  1661. }
  1662. return new (P || (P = Promise))(function (resolve, reject) {
  1663. function fulfilled(value) {
  1664. try {
  1665. step(generator.next(value))
  1666. } catch (e) {
  1667. reject(e)
  1668. }
  1669. }
  1670. function rejected(value) {
  1671. try {
  1672. step(generator['throw'](value))
  1673. } catch (e) {
  1674. reject(e)
  1675. }
  1676. }
  1677. function step(result) {
  1678. result.done
  1679. ? resolve(result.value)
  1680. : adopt(result.value).then(fulfilled, rejected)
  1681. }
  1682. step(
  1683. (generator = generator.apply(thisArg, _arguments || [])).next()
  1684. )
  1685. })
  1686. }
  1687. function __generator(thisArg, body) {
  1688. var _ = {
  1689. label: 0,
  1690. sent: function sent() {
  1691. if (t[0] & 1) throw t[1]
  1692. return t[1]
  1693. },
  1694. trys: [],
  1695. ops: []
  1696. },
  1697. f,
  1698. y,
  1699. t,
  1700. g
  1701. return (
  1702. (g = { next: verb(0), throw: verb(1), return: verb(2) }),
  1703. typeof Symbol === 'function' &&
  1704. (g[Symbol.iterator] = function () {
  1705. return this
  1706. }),
  1707. g
  1708. )
  1709. function verb(n) {
  1710. return function (v) {
  1711. return step([n, v])
  1712. }
  1713. }
  1714. function step(op) {
  1715. if (f) throw new TypeError('Generator is already executing.')
  1716. while (_) {
  1717. try {
  1718. if (
  1719. ((f = 1),
  1720. y &&
  1721. (t =
  1722. op[0] & 2
  1723. ? y['return']
  1724. : op[0]
  1725. ? y['throw'] || ((t = y['return']) && t.call(y), 0)
  1726. : y.next) &&
  1727. !(t = t.call(y, op[1])).done)
  1728. )
  1729. return t
  1730. if (((y = 0), t)) op = [op[0] & 2, t.value]
  1731. switch (op[0]) {
  1732. case 0:
  1733. case 1:
  1734. t = op
  1735. break
  1736. case 4:
  1737. _.label++
  1738. return { value: op[1], done: false }
  1739. case 5:
  1740. _.label++
  1741. y = op[1]
  1742. op = [0]
  1743. continue
  1744. case 7:
  1745. op = _.ops.pop()
  1746. _.trys.pop()
  1747. continue
  1748. default:
  1749. if (
  1750. !((t = _.trys),
  1751. (t = t.length > 0 && t[t.length - 1])) &&
  1752. (op[0] === 6 || op[0] === 2)
  1753. ) {
  1754. _ = 0
  1755. continue
  1756. }
  1757. if (
  1758. op[0] === 3 &&
  1759. (!t || (op[1] > t[0] && op[1] < t[3]))
  1760. ) {
  1761. _.label = op[1]
  1762. break
  1763. }
  1764. if (op[0] === 6 && _.label < t[1]) {
  1765. _.label = t[1]
  1766. t = op
  1767. break
  1768. }
  1769. if (t && _.label < t[2]) {
  1770. _.label = t[2]
  1771. _.ops.push(op)
  1772. break
  1773. }
  1774. if (t[2]) _.ops.pop()
  1775. _.trys.pop()
  1776. continue
  1777. }
  1778. op = body.call(thisArg, _)
  1779. } catch (e) {
  1780. op = [6, e]
  1781. y = 0
  1782. } finally {
  1783. f = t = 0
  1784. }
  1785. }
  1786. if (op[0] & 5) throw op[1]
  1787. return { value: op[0] ? op[1] : void 0, done: true }
  1788. }
  1789. }
  1790. function __spreadArray(to, from, pack) {
  1791. if (pack || arguments.length === 2)
  1792. for (var i = 0, l = from.length, ar; i < l; i++) {
  1793. if (ar || !(i in from)) {
  1794. if (!ar) ar = Array.prototype.slice.call(from, 0, i)
  1795. ar[i] = from[i]
  1796. }
  1797. }
  1798. return to.concat(ar || from)
  1799. }
  1800. var Bounds = /** @class */ (function () {
  1801. function Bounds(left, top, width, height) {
  1802. this.left = left
  1803. this.top = top
  1804. this.width = width
  1805. this.height = height
  1806. }
  1807. Bounds.prototype.add = function (x, y, w, h) {
  1808. return new Bounds(
  1809. this.left + x,
  1810. this.top + y,
  1811. this.width + w,
  1812. this.height + h
  1813. )
  1814. }
  1815. Bounds.fromClientRect = function (context, clientRect) {
  1816. return new Bounds(
  1817. clientRect.left + context.windowBounds.left,
  1818. clientRect.top + context.windowBounds.top,
  1819. clientRect.width,
  1820. clientRect.height
  1821. )
  1822. }
  1823. Bounds.fromDOMRectList = function (context, domRectList) {
  1824. var domRect = Array.from(domRectList).find(function (rect) {
  1825. return rect.width !== 0
  1826. })
  1827. return domRect
  1828. ? new Bounds(
  1829. domRect.left + context.windowBounds.left,
  1830. domRect.top + context.windowBounds.top,
  1831. domRect.width,
  1832. domRect.height
  1833. )
  1834. : Bounds.EMPTY
  1835. }
  1836. Bounds.EMPTY = new Bounds(0, 0, 0, 0)
  1837. return Bounds
  1838. })()
  1839. var parseBounds = function parseBounds(context, node) {
  1840. return Bounds.fromClientRect(context, node.getBoundingClientRect())
  1841. }
  1842. var parseDocumentSize = function parseDocumentSize(document) {
  1843. var body = document.body
  1844. var documentElement = document.documentElement
  1845. if (!body || !documentElement) {
  1846. throw new Error('Unable to get document size')
  1847. }
  1848. var width = Math.max(
  1849. Math.max(body.scrollWidth, documentElement.scrollWidth),
  1850. Math.max(body.offsetWidth, documentElement.offsetWidth),
  1851. Math.max(body.clientWidth, documentElement.clientWidth)
  1852. )
  1853. var height = Math.max(
  1854. Math.max(body.scrollHeight, documentElement.scrollHeight),
  1855. Math.max(body.offsetHeight, documentElement.offsetHeight),
  1856. Math.max(body.clientHeight, documentElement.clientHeight)
  1857. )
  1858. return new Bounds(0, 0, width, height)
  1859. }
  1860. /*
  1861. * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>
  1862. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  1863. * Released under MIT License
  1864. */ var toCodePoints$1 = function toCodePoints$1(str) {
  1865. var codePoints = []
  1866. var i = 0
  1867. var length = str.length
  1868. while (i < length) {
  1869. var value = str.charCodeAt(i++)
  1870. if (value >= 0xd800 && value <= 0xdbff && i < length) {
  1871. var extra = str.charCodeAt(i++)
  1872. if ((extra & 0xfc00) === 0xdc00) {
  1873. codePoints.push(
  1874. ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000
  1875. )
  1876. } else {
  1877. codePoints.push(value)
  1878. i--
  1879. }
  1880. } else {
  1881. codePoints.push(value)
  1882. }
  1883. }
  1884. return codePoints
  1885. }
  1886. var fromCodePoint$1 = function fromCodePoint$1() {
  1887. var codePoints = []
  1888. for (var _i = 0; _i < arguments.length; _i++) {
  1889. codePoints[_i] = arguments[_i]
  1890. }
  1891. if (String.fromCodePoint) {
  1892. return String.fromCodePoint.apply(String, codePoints)
  1893. }
  1894. var length = codePoints.length
  1895. if (!length) {
  1896. return ''
  1897. }
  1898. var codeUnits = []
  1899. var index = -1
  1900. var result = ''
  1901. while (++index < length) {
  1902. var codePoint = codePoints[index]
  1903. if (codePoint <= 0xffff) {
  1904. codeUnits.push(codePoint)
  1905. } else {
  1906. codePoint -= 0x10000
  1907. codeUnits.push(
  1908. (codePoint >> 10) + 0xd800,
  1909. (codePoint % 0x400) + 0xdc00
  1910. )
  1911. }
  1912. if (index + 1 === length || codeUnits.length > 0x4000) {
  1913. result += String.fromCharCode.apply(String, codeUnits)
  1914. codeUnits.length = 0
  1915. }
  1916. }
  1917. return result
  1918. }
  1919. var chars$2 =
  1920. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' // Use a lookup table to find the index.
  1921. var lookup$2 =
  1922. typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
  1923. for (var i$2 = 0; i$2 < chars$2.length; i$2++) {
  1924. lookup$2[chars$2.charCodeAt(i$2)] = i$2
  1925. }
  1926. /*
  1927. * utrie 1.0.2 <https://github.com/niklasvh/utrie>
  1928. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  1929. * Released under MIT License
  1930. */ var chars$1$1 =
  1931. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' // Use a lookup table to find the index.
  1932. var lookup$1$1 =
  1933. typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
  1934. for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
  1935. lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1
  1936. }
  1937. var decode$1 = function decode$1(base64) {
  1938. var bufferLength = base64.length * 0.75,
  1939. len = base64.length,
  1940. i,
  1941. p = 0,
  1942. encoded1,
  1943. encoded2,
  1944. encoded3,
  1945. encoded4
  1946. if (base64[base64.length - 1] === '=') {
  1947. bufferLength--
  1948. if (base64[base64.length - 2] === '=') {
  1949. bufferLength--
  1950. }
  1951. }
  1952. var buffer =
  1953. typeof ArrayBuffer !== 'undefined' &&
  1954. typeof Uint8Array !== 'undefined' &&
  1955. typeof Uint8Array.prototype.slice !== 'undefined'
  1956. ? new ArrayBuffer(bufferLength)
  1957. : new Array(bufferLength)
  1958. var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer)
  1959. for (i = 0; i < len; i += 4) {
  1960. encoded1 = lookup$1$1[base64.charCodeAt(i)]
  1961. encoded2 = lookup$1$1[base64.charCodeAt(i + 1)]
  1962. encoded3 = lookup$1$1[base64.charCodeAt(i + 2)]
  1963. encoded4 = lookup$1$1[base64.charCodeAt(i + 3)]
  1964. bytes[p++] = (encoded1 << 2) | (encoded2 >> 4)
  1965. bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2)
  1966. bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63)
  1967. }
  1968. return buffer
  1969. }
  1970. var polyUint16Array$1 = function polyUint16Array$1(buffer) {
  1971. var length = buffer.length
  1972. var bytes = []
  1973. for (var i = 0; i < length; i += 2) {
  1974. bytes.push((buffer[i + 1] << 8) | buffer[i])
  1975. }
  1976. return bytes
  1977. }
  1978. var polyUint32Array$1 = function polyUint32Array$1(buffer) {
  1979. var length = buffer.length
  1980. var bytes = []
  1981. for (var i = 0; i < length; i += 4) {
  1982. bytes.push(
  1983. (buffer[i + 3] << 24) |
  1984. (buffer[i + 2] << 16) |
  1985. (buffer[i + 1] << 8) |
  1986. buffer[i]
  1987. )
  1988. }
  1989. return bytes
  1990. }
  1991. /** Shift size for getting the index-2 table offset. */ var UTRIE2_SHIFT_2$1 = 5
  1992. /** Shift size for getting the index-1 table offset. */ var UTRIE2_SHIFT_1$1 =
  1993. 6 + 5
  1994. /**
  1995. * Shift size for shifting left the index array values.
  1996. * Increases possible data size with 16-bit index values at the cost
  1997. * of compactability.
  1998. * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
  1999. */ var UTRIE2_INDEX_SHIFT$1 = 2
  2000. /**
  2001. * Difference between the two shift sizes,
  2002. * for getting an index-1 offset from an index-2 offset. 6=11-5
  2003. */ var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1
  2004. /**
  2005. * The part of the index-2 table for U+D800..U+DBFF stores values for
  2006. * lead surrogate code _units_ not code _points_.
  2007. * Values for lead surrogate code _points_ are indexed with this portion of the table.
  2008. * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
  2009. */ var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1
  2010. /** Number of entries in a data block. 32=0x20 */ var UTRIE2_DATA_BLOCK_LENGTH$1 =
  2011. 1 << UTRIE2_SHIFT_2$1
  2012. /** Mask for getting the lower bits for the in-data-block offset. */ var UTRIE2_DATA_MASK$1 =
  2013. UTRIE2_DATA_BLOCK_LENGTH$1 - 1
  2014. var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1
  2015. /** Count the lengths of both BMP pieces. 2080=0x820 */ var UTRIE2_INDEX_2_BMP_LENGTH$1 =
  2016. UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1
  2017. /**
  2018. * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
  2019. * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
  2020. */ var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1
  2021. var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6
  2022. /* U+0800 is the first code point after 2-byte UTF-8 */ /**
  2023. * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
  2024. * Variable length, for code points up to highStart, where the last single-value range starts.
  2025. * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
  2026. * (For 0x100000 supplementary code points U+10000..U+10ffff.)
  2027. *
  2028. * The part of the index-2 table for supplementary code points starts
  2029. * after this index-1 table.
  2030. *
  2031. * Both the index-1 table and the following part of the index-2 table
  2032. * are omitted completely if there is only BMP data.
  2033. */ var UTRIE2_INDEX_1_OFFSET$1 =
  2034. UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1
  2035. /**
  2036. * Number of index-1 entries for the BMP. 32=0x20
  2037. * This part of the index-1 table is omitted from the serialized form.
  2038. */ var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 =
  2039. 0x10000 >> UTRIE2_SHIFT_1$1
  2040. /** Number of entries in an index-2 block. 64=0x40 */ var UTRIE2_INDEX_2_BLOCK_LENGTH$1 =
  2041. 1 << UTRIE2_SHIFT_1_2$1
  2042. /** Mask for getting the lower bits for the in-index-2-block offset. */ var UTRIE2_INDEX_2_MASK$1 =
  2043. UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1
  2044. var slice16$1 = function slice16$1(view, start, end) {
  2045. if (view.slice) {
  2046. return view.slice(start, end)
  2047. }
  2048. return new Uint16Array(Array.prototype.slice.call(view, start, end))
  2049. }
  2050. var slice32$1 = function slice32$1(view, start, end) {
  2051. if (view.slice) {
  2052. return view.slice(start, end)
  2053. }
  2054. return new Uint32Array(Array.prototype.slice.call(view, start, end))
  2055. }
  2056. var createTrieFromBase64$1 = function createTrieFromBase64$1(
  2057. base64,
  2058. _byteLength
  2059. ) {
  2060. var buffer = decode$1(base64)
  2061. var view32 = Array.isArray(buffer)
  2062. ? polyUint32Array$1(buffer)
  2063. : new Uint32Array(buffer)
  2064. var view16 = Array.isArray(buffer)
  2065. ? polyUint16Array$1(buffer)
  2066. : new Uint16Array(buffer)
  2067. var headerLength = 24
  2068. var index = slice16$1(view16, headerLength / 2, view32[4] / 2)
  2069. var data =
  2070. view32[5] === 2
  2071. ? slice16$1(view16, (headerLength + view32[4]) / 2)
  2072. : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4))
  2073. return new Trie$1(
  2074. view32[0],
  2075. view32[1],
  2076. view32[2],
  2077. view32[3],
  2078. index,
  2079. data
  2080. )
  2081. }
  2082. var Trie$1 = /** @class */ (function () {
  2083. function Trie(
  2084. initialValue,
  2085. errorValue,
  2086. highStart,
  2087. highValueIndex,
  2088. index,
  2089. data
  2090. ) {
  2091. this.initialValue = initialValue
  2092. this.errorValue = errorValue
  2093. this.highStart = highStart
  2094. this.highValueIndex = highValueIndex
  2095. this.index = index
  2096. this.data = data
  2097. }
  2098. /**
  2099. * Get the value for a code point as stored in the Trie.
  2100. *
  2101. * @param codePoint the code point
  2102. * @return the value
  2103. */ Trie.prototype.get = function (codePoint) {
  2104. var ix
  2105. if (codePoint >= 0) {
  2106. if (
  2107. codePoint < 0x0d800 ||
  2108. (codePoint > 0x0dbff && codePoint <= 0x0ffff)
  2109. ) {
  2110. // Ordinary BMP code point, excluding leading surrogates.
  2111. // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.
  2112. // 16 bit data is stored in the index array itself.
  2113. ix = this.index[codePoint >> UTRIE2_SHIFT_2$1]
  2114. ix =
  2115. (ix << UTRIE2_INDEX_SHIFT$1) +
  2116. (codePoint & UTRIE2_DATA_MASK$1)
  2117. return this.data[ix]
  2118. }
  2119. if (codePoint <= 0xffff) {
  2120. // Lead Surrogate Code Point. A Separate index section is stored for
  2121. // lead surrogate code units and code points.
  2122. // The main index has the code unit data.
  2123. // For this function, we need the code point data.
  2124. // Note: this expression could be refactored for slightly improved efficiency, but
  2125. // surrogate code points will be so rare in practice that it's not worth it.
  2126. ix =
  2127. this.index[
  2128. UTRIE2_LSCP_INDEX_2_OFFSET$1 +
  2129. ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)
  2130. ]
  2131. ix =
  2132. (ix << UTRIE2_INDEX_SHIFT$1) +
  2133. (codePoint & UTRIE2_DATA_MASK$1)
  2134. return this.data[ix]
  2135. }
  2136. if (codePoint < this.highStart) {
  2137. // Supplemental code point, use two-level lookup.
  2138. ix =
  2139. UTRIE2_INDEX_1_OFFSET$1 -
  2140. UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 +
  2141. (codePoint >> UTRIE2_SHIFT_1$1)
  2142. ix = this.index[ix]
  2143. ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1
  2144. ix = this.index[ix]
  2145. ix =
  2146. (ix << UTRIE2_INDEX_SHIFT$1) +
  2147. (codePoint & UTRIE2_DATA_MASK$1)
  2148. return this.data[ix]
  2149. }
  2150. if (codePoint <= 0x10ffff) {
  2151. return this.data[this.highValueIndex]
  2152. }
  2153. } // Fall through. The code point is outside of the legal range of 0..0x10ffff.
  2154. return this.errorValue
  2155. }
  2156. return Trie
  2157. })()
  2158. /*
  2159. * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>
  2160. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  2161. * Released under MIT License
  2162. */ var chars$3 =
  2163. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' // Use a lookup table to find the index.
  2164. var lookup$3 =
  2165. typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
  2166. for (var i$3 = 0; i$3 < chars$3.length; i$3++) {
  2167. lookup$3[chars$3.charCodeAt(i$3)] = i$3
  2168. }
  2169. var base64$1 =
  2170. '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=='
  2171. var LETTER_NUMBER_MODIFIER = 50 // Non-tailorable Line Breaking Classes
  2172. var BK = 1 // Cause a line break (after)
  2173. var CR$1 = 2 // Cause a line break (after), except between CR and LF
  2174. var LF$1 = 3 // Cause a line break (after)
  2175. var CM = 4 // Prohibit a line break between the character and the preceding character
  2176. var NL = 5 // Cause a line break (after)
  2177. var WJ = 7 // Prohibit line breaks before and after
  2178. var ZW = 8 // Provide a break opportunity
  2179. var GL = 9 // Prohibit line breaks before and after
  2180. var SP = 10 // Enable indirect line breaks
  2181. var ZWJ$1 = 11 // Prohibit line breaks within joiner sequences
  2182. // Break Opportunities
  2183. var B2 = 12 // Provide a line break opportunity before and after the character
  2184. var BA = 13 // Generally provide a line break opportunity after the character
  2185. var BB = 14 // Generally provide a line break opportunity before the character
  2186. var HY = 15 // Provide a line break opportunity after the character, except in numeric context
  2187. var CB = 16 // Provide a line break opportunity contingent on additional information
  2188. // Characters Prohibiting Certain Breaks
  2189. var CL = 17 // Prohibit line breaks before
  2190. var CP = 18 // Prohibit line breaks before
  2191. var EX = 19 // Prohibit line breaks before
  2192. var IN = 20 // Allow only indirect line breaks between pairs
  2193. var NS = 21 // Allow only indirect line breaks before
  2194. var OP = 22 // Prohibit line breaks after
  2195. var QU = 23 // Act like they are both opening and closing
  2196. // Numeric Context
  2197. var IS = 24 // Prevent breaks after any and before numeric
  2198. var NU = 25 // Form numeric expressions for line breaking purposes
  2199. var PO = 26 // Do not break following a numeric expression
  2200. var PR = 27 // Do not break in front of a numeric expression
  2201. var SY = 28 // Prevent a break before; and allow a break after
  2202. // Other Characters
  2203. var AI = 29 // Act like AL when the resolvedEAW is N; otherwise; act as ID
  2204. var AL = 30 // Are alphabetic characters or symbols that are used with alphabetic characters
  2205. var CJ = 31 // Treat as NS or ID for strict or normal breaking.
  2206. var EB = 32 // Do not break from following Emoji Modifier
  2207. var EM = 33 // Do not break from preceding Emoji Base
  2208. var H2 = 34 // Form Korean syllable blocks
  2209. var H3 = 35 // Form Korean syllable blocks
  2210. var HL = 36 // Do not break around a following hyphen; otherwise act as Alphabetic
  2211. var ID = 37 // Break before or after; except in some numeric context
  2212. var JL = 38 // Form Korean syllable blocks
  2213. var JV = 39 // Form Korean syllable blocks
  2214. var JT = 40 // Form Korean syllable blocks
  2215. var RI$1 = 41 // Keep pairs together. For pairs; break before and after other classes
  2216. var SA = 42 // Provide a line break opportunity contingent on additional, language-specific context analysis
  2217. var XX = 43 // Have as yet unknown line breaking behavior or unassigned code positions
  2218. var ea_OP = [0x2329, 0xff08]
  2219. var BREAK_MANDATORY = '!'
  2220. var BREAK_NOT_ALLOWED$1 = '×'
  2221. var BREAK_ALLOWED$1 = '÷'
  2222. var UnicodeTrie$1 = createTrieFromBase64$1(base64$1)
  2223. var ALPHABETICS = [AL, HL]
  2224. var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL]
  2225. var SPACE$1 = [SP, ZW]
  2226. var PREFIX_POSTFIX = [PR, PO]
  2227. var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1)
  2228. var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3]
  2229. var HYPHEN = [HY, BA]
  2230. var codePointsToCharacterClasses =
  2231. function codePointsToCharacterClasses(codePoints, lineBreak) {
  2232. if (lineBreak === void 0) {
  2233. lineBreak = 'strict'
  2234. }
  2235. var types = []
  2236. var indices = []
  2237. var categories = []
  2238. codePoints.forEach(function (codePoint, index) {
  2239. var classType = UnicodeTrie$1.get(codePoint)
  2240. if (classType > LETTER_NUMBER_MODIFIER) {
  2241. categories.push(true)
  2242. classType -= LETTER_NUMBER_MODIFIER
  2243. } else {
  2244. categories.push(false)
  2245. }
  2246. if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {
  2247. // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
  2248. if (
  2249. [0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1
  2250. ) {
  2251. indices.push(index)
  2252. return types.push(CB)
  2253. }
  2254. }
  2255. if (classType === CM || classType === ZWJ$1) {
  2256. // LB10 Treat any remaining combining mark or ZWJ as AL.
  2257. if (index === 0) {
  2258. indices.push(index)
  2259. return types.push(AL)
  2260. } // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
  2261. // the base character in all of the following rules. Treat ZWJ as if it were CM.
  2262. var prev = types[index - 1]
  2263. if (LINE_BREAKS.indexOf(prev) === -1) {
  2264. indices.push(indices[index - 1])
  2265. return types.push(prev)
  2266. }
  2267. indices.push(index)
  2268. return types.push(AL)
  2269. }
  2270. indices.push(index)
  2271. if (classType === CJ) {
  2272. return types.push(lineBreak === 'strict' ? NS : ID)
  2273. }
  2274. if (classType === SA) {
  2275. return types.push(AL)
  2276. }
  2277. if (classType === AI) {
  2278. return types.push(AL)
  2279. } // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL
  2280. // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised
  2281. // to take into account the actual line breaking properties for these characters.
  2282. if (classType === XX) {
  2283. if (
  2284. (codePoint >= 0x20000 && codePoint <= 0x2fffd) ||
  2285. (codePoint >= 0x30000 && codePoint <= 0x3fffd)
  2286. ) {
  2287. return types.push(ID)
  2288. } else {
  2289. return types.push(AL)
  2290. }
  2291. }
  2292. types.push(classType)
  2293. })
  2294. return [indices, types, categories]
  2295. }
  2296. var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(
  2297. a,
  2298. b,
  2299. currentIndex,
  2300. classTypes
  2301. ) {
  2302. var current = classTypes[currentIndex]
  2303. if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {
  2304. var i = currentIndex
  2305. while (i <= classTypes.length) {
  2306. i++
  2307. var next = classTypes[i]
  2308. if (next === b) {
  2309. return true
  2310. }
  2311. if (next !== SP) {
  2312. break
  2313. }
  2314. }
  2315. }
  2316. if (current === SP) {
  2317. var i = currentIndex
  2318. while (i > 0) {
  2319. i--
  2320. var prev = classTypes[i]
  2321. if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {
  2322. var n = currentIndex
  2323. while (n <= classTypes.length) {
  2324. n++
  2325. var next = classTypes[n]
  2326. if (next === b) {
  2327. return true
  2328. }
  2329. if (next !== SP) {
  2330. break
  2331. }
  2332. }
  2333. }
  2334. if (prev !== SP) {
  2335. break
  2336. }
  2337. }
  2338. }
  2339. return false
  2340. }
  2341. var previousNonSpaceClassType = function previousNonSpaceClassType(
  2342. currentIndex,
  2343. classTypes
  2344. ) {
  2345. var i = currentIndex
  2346. while (i >= 0) {
  2347. var type = classTypes[i]
  2348. if (type === SP) {
  2349. i--
  2350. } else {
  2351. return type
  2352. }
  2353. }
  2354. return 0
  2355. }
  2356. var _lineBreakAtIndex = function _lineBreakAtIndex(
  2357. codePoints,
  2358. classTypes,
  2359. indicies,
  2360. index,
  2361. forbiddenBreaks
  2362. ) {
  2363. if (indicies[index] === 0) {
  2364. return BREAK_NOT_ALLOWED$1
  2365. }
  2366. var currentIndex = index - 1
  2367. if (
  2368. Array.isArray(forbiddenBreaks) &&
  2369. forbiddenBreaks[currentIndex] === true
  2370. ) {
  2371. return BREAK_NOT_ALLOWED$1
  2372. }
  2373. var beforeIndex = currentIndex - 1
  2374. var afterIndex = currentIndex + 1
  2375. var current = classTypes[currentIndex] // LB4 Always break after hard line breaks.
  2376. // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.
  2377. var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0
  2378. var next = classTypes[afterIndex]
  2379. if (current === CR$1 && next === LF$1) {
  2380. return BREAK_NOT_ALLOWED$1
  2381. }
  2382. if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
  2383. return BREAK_MANDATORY
  2384. } // LB6 Do not break before hard line breaks.
  2385. if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
  2386. return BREAK_NOT_ALLOWED$1
  2387. } // LB7 Do not break before spaces or zero width space.
  2388. if (SPACE$1.indexOf(next) !== -1) {
  2389. return BREAK_NOT_ALLOWED$1
  2390. } // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.
  2391. if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
  2392. return BREAK_ALLOWED$1
  2393. } // LB8a Do not break after a zero width joiner.
  2394. if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
  2395. return BREAK_NOT_ALLOWED$1
  2396. } // zwj emojis
  2397. if (
  2398. (current === EB || current === EM) &&
  2399. UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1
  2400. ) {
  2401. return BREAK_NOT_ALLOWED$1
  2402. } // LB11 Do not break before or after Word joiner and related characters.
  2403. if (current === WJ || next === WJ) {
  2404. return BREAK_NOT_ALLOWED$1
  2405. } // LB12 Do not break after NBSP and related characters.
  2406. if (current === GL) {
  2407. return BREAK_NOT_ALLOWED$1
  2408. } // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.
  2409. if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
  2410. return BREAK_NOT_ALLOWED$1
  2411. } // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
  2412. if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
  2413. return BREAK_NOT_ALLOWED$1
  2414. } // LB14 Do not break after ‘[’, even after spaces.
  2415. if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
  2416. return BREAK_NOT_ALLOWED$1
  2417. } // LB15 Do not break within ‘”[’, even with intervening spaces.
  2418. if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
  2419. return BREAK_NOT_ALLOWED$1
  2420. } // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.
  2421. if (
  2422. isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)
  2423. ) {
  2424. return BREAK_NOT_ALLOWED$1
  2425. } // LB17 Do not break within ‘——’, even with intervening spaces.
  2426. if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
  2427. return BREAK_NOT_ALLOWED$1
  2428. } // LB18 Break after spaces.
  2429. if (current === SP) {
  2430. return BREAK_ALLOWED$1
  2431. } // LB19 Do not break before or after quotation marks, such as ‘ ” ’.
  2432. if (current === QU || next === QU) {
  2433. return BREAK_NOT_ALLOWED$1
  2434. } // LB20 Break before and after unresolved CB.
  2435. if (next === CB || current === CB) {
  2436. return BREAK_ALLOWED$1
  2437. } // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
  2438. if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
  2439. return BREAK_NOT_ALLOWED$1
  2440. } // LB21a Don't break after Hebrew + Hyphen.
  2441. if (before === HL && HYPHEN.indexOf(current) !== -1) {
  2442. return BREAK_NOT_ALLOWED$1
  2443. } // LB21b Don’t break between Solidus and Hebrew letters.
  2444. if (current === SY && next === HL) {
  2445. return BREAK_NOT_ALLOWED$1
  2446. } // LB22 Do not break before ellipsis.
  2447. if (next === IN) {
  2448. return BREAK_NOT_ALLOWED$1
  2449. } // LB23 Do not break between digits and letters.
  2450. if (
  2451. (ALPHABETICS.indexOf(next) !== -1 && current === NU) ||
  2452. (ALPHABETICS.indexOf(current) !== -1 && next === NU)
  2453. ) {
  2454. return BREAK_NOT_ALLOWED$1
  2455. } // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.
  2456. if (
  2457. (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||
  2458. ([ID, EB, EM].indexOf(current) !== -1 && next === PO)
  2459. ) {
  2460. return BREAK_NOT_ALLOWED$1
  2461. } // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.
  2462. if (
  2463. (ALPHABETICS.indexOf(current) !== -1 &&
  2464. PREFIX_POSTFIX.indexOf(next) !== -1) ||
  2465. (PREFIX_POSTFIX.indexOf(current) !== -1 &&
  2466. ALPHABETICS.indexOf(next) !== -1)
  2467. ) {
  2468. return BREAK_NOT_ALLOWED$1
  2469. } // LB25 Do not break between the following pairs of classes relevant to numbers:
  2470. if (
  2471. // (PR | PO) × ( OP | HY )? NU
  2472. ([PR, PO].indexOf(current) !== -1 &&
  2473. (next === NU ||
  2474. ([OP, HY].indexOf(next) !== -1 &&
  2475. classTypes[afterIndex + 1] === NU))) || // ( OP | HY ) × NU
  2476. ([OP, HY].indexOf(current) !== -1 && next === NU) || // NU × (NU | SY | IS)
  2477. (current === NU && [NU, SY, IS].indexOf(next) !== -1)
  2478. ) {
  2479. return BREAK_NOT_ALLOWED$1
  2480. } // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)
  2481. if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
  2482. var prevIndex = currentIndex
  2483. while (prevIndex >= 0) {
  2484. var type = classTypes[prevIndex]
  2485. if (type === NU) {
  2486. return BREAK_NOT_ALLOWED$1
  2487. } else if ([SY, IS].indexOf(type) !== -1) {
  2488. prevIndex--
  2489. } else {
  2490. break
  2491. }
  2492. }
  2493. } // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))
  2494. if ([PR, PO].indexOf(next) !== -1) {
  2495. var prevIndex =
  2496. [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex
  2497. while (prevIndex >= 0) {
  2498. var type = classTypes[prevIndex]
  2499. if (type === NU) {
  2500. return BREAK_NOT_ALLOWED$1
  2501. } else if ([SY, IS].indexOf(type) !== -1) {
  2502. prevIndex--
  2503. } else {
  2504. break
  2505. }
  2506. }
  2507. } // LB26 Do not break a Korean syllable.
  2508. if (
  2509. (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||
  2510. ([JV, H2].indexOf(current) !== -1 &&
  2511. [JV, JT].indexOf(next) !== -1) ||
  2512. ([JT, H3].indexOf(current) !== -1 && next === JT)
  2513. ) {
  2514. return BREAK_NOT_ALLOWED$1
  2515. } // LB27 Treat a Korean Syllable Block the same as ID.
  2516. if (
  2517. (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 &&
  2518. [IN, PO].indexOf(next) !== -1) ||
  2519. (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)
  2520. ) {
  2521. return BREAK_NOT_ALLOWED$1
  2522. } // LB28 Do not break between alphabetics (“at”).
  2523. if (
  2524. ALPHABETICS.indexOf(current) !== -1 &&
  2525. ALPHABETICS.indexOf(next) !== -1
  2526. ) {
  2527. return BREAK_NOT_ALLOWED$1
  2528. } // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).
  2529. if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
  2530. return BREAK_NOT_ALLOWED$1
  2531. } // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.
  2532. if (
  2533. (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&
  2534. next === OP &&
  2535. ea_OP.indexOf(codePoints[afterIndex]) === -1) ||
  2536. (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)
  2537. ) {
  2538. return BREAK_NOT_ALLOWED$1
  2539. } // LB30a Break between two regional indicator symbols if and only if there are an even number of regional
  2540. // indicators preceding the position of the break.
  2541. if (current === RI$1 && next === RI$1) {
  2542. var i = indicies[currentIndex]
  2543. var count = 1
  2544. while (i > 0) {
  2545. i--
  2546. if (classTypes[i] === RI$1) {
  2547. count++
  2548. } else {
  2549. break
  2550. }
  2551. }
  2552. if (count % 2 !== 0) {
  2553. return BREAK_NOT_ALLOWED$1
  2554. }
  2555. } // LB30b Do not break between an emoji base and an emoji modifier.
  2556. if (current === EB && next === EM) {
  2557. return BREAK_NOT_ALLOWED$1
  2558. }
  2559. return BREAK_ALLOWED$1
  2560. }
  2561. var cssFormattedClasses = function cssFormattedClasses(
  2562. codePoints,
  2563. options
  2564. ) {
  2565. if (!options) {
  2566. options = { lineBreak: 'normal', wordBreak: 'normal' }
  2567. }
  2568. var _a = codePointsToCharacterClasses(
  2569. codePoints,
  2570. options.lineBreak
  2571. ),
  2572. indicies = _a[0],
  2573. classTypes = _a[1],
  2574. isLetterNumber = _a[2]
  2575. if (
  2576. options.wordBreak === 'break-all' ||
  2577. options.wordBreak === 'break-word'
  2578. ) {
  2579. classTypes = classTypes.map(function (type) {
  2580. return [NU, AL, SA].indexOf(type) !== -1 ? ID : type
  2581. })
  2582. }
  2583. var forbiddenBreakpoints =
  2584. options.wordBreak === 'keep-all'
  2585. ? isLetterNumber.map(function (letterNumber, i) {
  2586. return (
  2587. letterNumber &&
  2588. codePoints[i] >= 0x4e00 &&
  2589. codePoints[i] <= 0x9fff
  2590. )
  2591. })
  2592. : undefined
  2593. return [indicies, classTypes, forbiddenBreakpoints]
  2594. }
  2595. var Break = /** @class */ (function () {
  2596. function Break(codePoints, lineBreak, start, end) {
  2597. this.codePoints = codePoints
  2598. this.required = lineBreak === BREAK_MANDATORY
  2599. this.start = start
  2600. this.end = end
  2601. }
  2602. Break.prototype.slice = function () {
  2603. return fromCodePoint$1.apply(
  2604. void 0,
  2605. this.codePoints.slice(this.start, this.end)
  2606. )
  2607. }
  2608. return Break
  2609. })()
  2610. var LineBreaker = function LineBreaker(str, options) {
  2611. var codePoints = toCodePoints$1(str)
  2612. var _a = cssFormattedClasses(codePoints, options),
  2613. indicies = _a[0],
  2614. classTypes = _a[1],
  2615. forbiddenBreakpoints = _a[2]
  2616. var length = codePoints.length
  2617. var lastEnd = 0
  2618. var nextIndex = 0
  2619. return {
  2620. next: function next() {
  2621. if (nextIndex >= length) {
  2622. return { done: true, value: null }
  2623. }
  2624. var lineBreak = BREAK_NOT_ALLOWED$1
  2625. while (
  2626. nextIndex < length &&
  2627. (lineBreak = _lineBreakAtIndex(
  2628. codePoints,
  2629. classTypes,
  2630. indicies,
  2631. ++nextIndex,
  2632. forbiddenBreakpoints
  2633. )) === BREAK_NOT_ALLOWED$1
  2634. ) {}
  2635. if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
  2636. var value = new Break(
  2637. codePoints,
  2638. lineBreak,
  2639. lastEnd,
  2640. nextIndex
  2641. )
  2642. lastEnd = nextIndex
  2643. return { value: value, done: false }
  2644. }
  2645. return { done: true, value: null }
  2646. }
  2647. }
  2648. } // https://www.w3.org/TR/css-syntax-3
  2649. var FLAG_UNRESTRICTED = 1 << 0
  2650. var FLAG_ID = 1 << 1
  2651. var FLAG_INTEGER = 1 << 2
  2652. var FLAG_NUMBER = 1 << 3
  2653. var LINE_FEED = 0x000a
  2654. var SOLIDUS = 0x002f
  2655. var REVERSE_SOLIDUS = 0x005c
  2656. var CHARACTER_TABULATION = 0x0009
  2657. var SPACE = 0x0020
  2658. var QUOTATION_MARK = 0x0022
  2659. var EQUALS_SIGN = 0x003d
  2660. var NUMBER_SIGN = 0x0023
  2661. var DOLLAR_SIGN = 0x0024
  2662. var PERCENTAGE_SIGN = 0x0025
  2663. var APOSTROPHE = 0x0027
  2664. var LEFT_PARENTHESIS = 0x0028
  2665. var RIGHT_PARENTHESIS = 0x0029
  2666. var LOW_LINE = 0x005f
  2667. var HYPHEN_MINUS = 0x002d
  2668. var EXCLAMATION_MARK = 0x0021
  2669. var LESS_THAN_SIGN = 0x003c
  2670. var GREATER_THAN_SIGN = 0x003e
  2671. var COMMERCIAL_AT = 0x0040
  2672. var LEFT_SQUARE_BRACKET = 0x005b
  2673. var RIGHT_SQUARE_BRACKET = 0x005d
  2674. var CIRCUMFLEX_ACCENT = 0x003d
  2675. var LEFT_CURLY_BRACKET = 0x007b
  2676. var QUESTION_MARK = 0x003f
  2677. var RIGHT_CURLY_BRACKET = 0x007d
  2678. var VERTICAL_LINE = 0x007c
  2679. var TILDE = 0x007e
  2680. var CONTROL = 0x0080
  2681. var REPLACEMENT_CHARACTER = 0xfffd
  2682. var ASTERISK = 0x002a
  2683. var PLUS_SIGN = 0x002b
  2684. var COMMA = 0x002c
  2685. var COLON = 0x003a
  2686. var SEMICOLON = 0x003b
  2687. var FULL_STOP = 0x002e
  2688. var NULL = 0x0000
  2689. var BACKSPACE = 0x0008
  2690. var LINE_TABULATION = 0x000b
  2691. var SHIFT_OUT = 0x000e
  2692. var INFORMATION_SEPARATOR_ONE = 0x001f
  2693. var DELETE = 0x007f
  2694. var EOF = -1
  2695. var ZERO = 0x0030
  2696. var a = 0x0061
  2697. var e = 0x0065
  2698. var f = 0x0066
  2699. var u = 0x0075
  2700. var z = 0x007a
  2701. var A = 0x0041
  2702. var E = 0x0045
  2703. var F = 0x0046
  2704. var U = 0x0055
  2705. var Z = 0x005a
  2706. var isDigit = function isDigit(codePoint) {
  2707. return codePoint >= ZERO && codePoint <= 0x0039
  2708. }
  2709. var isSurrogateCodePoint = function isSurrogateCodePoint(codePoint) {
  2710. return codePoint >= 0xd800 && codePoint <= 0xdfff
  2711. }
  2712. var isHex = function isHex(codePoint) {
  2713. return (
  2714. isDigit(codePoint) ||
  2715. (codePoint >= A && codePoint <= F) ||
  2716. (codePoint >= a && codePoint <= f)
  2717. )
  2718. }
  2719. var isLowerCaseLetter = function isLowerCaseLetter(codePoint) {
  2720. return codePoint >= a && codePoint <= z
  2721. }
  2722. var isUpperCaseLetter = function isUpperCaseLetter(codePoint) {
  2723. return codePoint >= A && codePoint <= Z
  2724. }
  2725. var isLetter = function isLetter(codePoint) {
  2726. return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint)
  2727. }
  2728. var isNonASCIICodePoint = function isNonASCIICodePoint(codePoint) {
  2729. return codePoint >= CONTROL
  2730. }
  2731. var isWhiteSpace = function isWhiteSpace(codePoint) {
  2732. return (
  2733. codePoint === LINE_FEED ||
  2734. codePoint === CHARACTER_TABULATION ||
  2735. codePoint === SPACE
  2736. )
  2737. }
  2738. var isNameStartCodePoint = function isNameStartCodePoint(codePoint) {
  2739. return (
  2740. isLetter(codePoint) ||
  2741. isNonASCIICodePoint(codePoint) ||
  2742. codePoint === LOW_LINE
  2743. )
  2744. }
  2745. var isNameCodePoint = function isNameCodePoint(codePoint) {
  2746. return (
  2747. isNameStartCodePoint(codePoint) ||
  2748. isDigit(codePoint) ||
  2749. codePoint === HYPHEN_MINUS
  2750. )
  2751. }
  2752. var isNonPrintableCodePoint = function isNonPrintableCodePoint(
  2753. codePoint
  2754. ) {
  2755. return (
  2756. (codePoint >= NULL && codePoint <= BACKSPACE) ||
  2757. codePoint === LINE_TABULATION ||
  2758. (codePoint >= SHIFT_OUT &&
  2759. codePoint <= INFORMATION_SEPARATOR_ONE) ||
  2760. codePoint === DELETE
  2761. )
  2762. }
  2763. var isValidEscape = function isValidEscape(c1, c2) {
  2764. if (c1 !== REVERSE_SOLIDUS) {
  2765. return false
  2766. }
  2767. return c2 !== LINE_FEED
  2768. }
  2769. var isIdentifierStart = function isIdentifierStart(c1, c2, c3) {
  2770. if (c1 === HYPHEN_MINUS) {
  2771. return isNameStartCodePoint(c2) || isValidEscape(c2, c3)
  2772. } else if (isNameStartCodePoint(c1)) {
  2773. return true
  2774. } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
  2775. return true
  2776. }
  2777. return false
  2778. }
  2779. var isNumberStart = function isNumberStart(c1, c2, c3) {
  2780. if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
  2781. if (isDigit(c2)) {
  2782. return true
  2783. }
  2784. return c2 === FULL_STOP && isDigit(c3)
  2785. }
  2786. if (c1 === FULL_STOP) {
  2787. return isDigit(c2)
  2788. }
  2789. return isDigit(c1)
  2790. }
  2791. var stringToNumber = function stringToNumber(codePoints) {
  2792. var c = 0
  2793. var sign = 1
  2794. if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
  2795. if (codePoints[c] === HYPHEN_MINUS) {
  2796. sign = -1
  2797. }
  2798. c++
  2799. }
  2800. var integers = []
  2801. while (isDigit(codePoints[c])) {
  2802. integers.push(codePoints[c++])
  2803. }
  2804. var int = integers.length
  2805. ? parseInt(fromCodePoint$1.apply(void 0, integers), 10)
  2806. : 0
  2807. if (codePoints[c] === FULL_STOP) {
  2808. c++
  2809. }
  2810. var fraction = []
  2811. while (isDigit(codePoints[c])) {
  2812. fraction.push(codePoints[c++])
  2813. }
  2814. var fracd = fraction.length
  2815. var frac = fracd
  2816. ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10)
  2817. : 0
  2818. if (codePoints[c] === E || codePoints[c] === e) {
  2819. c++
  2820. }
  2821. var expsign = 1
  2822. if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
  2823. if (codePoints[c] === HYPHEN_MINUS) {
  2824. expsign = -1
  2825. }
  2826. c++
  2827. }
  2828. var exponent = []
  2829. while (isDigit(codePoints[c])) {
  2830. exponent.push(codePoints[c++])
  2831. }
  2832. var exp = exponent.length
  2833. ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10)
  2834. : 0
  2835. return (
  2836. sign *
  2837. (int + frac * Math.pow(10, -fracd)) *
  2838. Math.pow(10, expsign * exp)
  2839. )
  2840. }
  2841. var LEFT_PARENTHESIS_TOKEN = { type: 2 /* LEFT_PARENTHESIS_TOKEN */ }
  2842. var RIGHT_PARENTHESIS_TOKEN = {
  2843. type: 3 /* RIGHT_PARENTHESIS_TOKEN */
  2844. }
  2845. var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ }
  2846. var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ }
  2847. var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ }
  2848. var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ }
  2849. var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ }
  2850. var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ }
  2851. var LEFT_CURLY_BRACKET_TOKEN = {
  2852. type: 11 /* LEFT_CURLY_BRACKET_TOKEN */
  2853. }
  2854. var RIGHT_CURLY_BRACKET_TOKEN = {
  2855. type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */
  2856. }
  2857. var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ }
  2858. var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ }
  2859. var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ }
  2860. var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ }
  2861. var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ }
  2862. var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ }
  2863. var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ }
  2864. var LEFT_SQUARE_BRACKET_TOKEN = {
  2865. type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */
  2866. }
  2867. var RIGHT_SQUARE_BRACKET_TOKEN = {
  2868. type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */
  2869. }
  2870. var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ }
  2871. var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ }
  2872. var Tokenizer = /** @class */ (function () {
  2873. function Tokenizer() {
  2874. this._value = []
  2875. }
  2876. Tokenizer.prototype.write = function (chunk) {
  2877. this._value = this._value.concat(toCodePoints$1(chunk))
  2878. }
  2879. Tokenizer.prototype.read = function () {
  2880. var tokens = []
  2881. var token = this.consumeToken()
  2882. while (token !== EOF_TOKEN) {
  2883. tokens.push(token)
  2884. token = this.consumeToken()
  2885. }
  2886. return tokens
  2887. }
  2888. Tokenizer.prototype.consumeToken = function () {
  2889. var codePoint = this.consumeCodePoint()
  2890. switch (codePoint) {
  2891. case QUOTATION_MARK:
  2892. return this.consumeStringToken(QUOTATION_MARK)
  2893. case NUMBER_SIGN:
  2894. var c1 = this.peekCodePoint(0)
  2895. var c2 = this.peekCodePoint(1)
  2896. var c3 = this.peekCodePoint(2)
  2897. if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
  2898. var flags = isIdentifierStart(c1, c2, c3)
  2899. ? FLAG_ID
  2900. : FLAG_UNRESTRICTED
  2901. var value = this.consumeName()
  2902. return {
  2903. type: 5 /* HASH_TOKEN */,
  2904. value: value,
  2905. flags: flags
  2906. }
  2907. }
  2908. break
  2909. case DOLLAR_SIGN:
  2910. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  2911. this.consumeCodePoint()
  2912. return SUFFIX_MATCH_TOKEN
  2913. }
  2914. break
  2915. case APOSTROPHE:
  2916. return this.consumeStringToken(APOSTROPHE)
  2917. case LEFT_PARENTHESIS:
  2918. return LEFT_PARENTHESIS_TOKEN
  2919. case RIGHT_PARENTHESIS:
  2920. return RIGHT_PARENTHESIS_TOKEN
  2921. case ASTERISK:
  2922. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  2923. this.consumeCodePoint()
  2924. return SUBSTRING_MATCH_TOKEN
  2925. }
  2926. break
  2927. case PLUS_SIGN:
  2928. if (
  2929. isNumberStart(
  2930. codePoint,
  2931. this.peekCodePoint(0),
  2932. this.peekCodePoint(1)
  2933. )
  2934. ) {
  2935. this.reconsumeCodePoint(codePoint)
  2936. return this.consumeNumericToken()
  2937. }
  2938. break
  2939. case COMMA:
  2940. return COMMA_TOKEN
  2941. case HYPHEN_MINUS:
  2942. var e1 = codePoint
  2943. var e2 = this.peekCodePoint(0)
  2944. var e3 = this.peekCodePoint(1)
  2945. if (isNumberStart(e1, e2, e3)) {
  2946. this.reconsumeCodePoint(codePoint)
  2947. return this.consumeNumericToken()
  2948. }
  2949. if (isIdentifierStart(e1, e2, e3)) {
  2950. this.reconsumeCodePoint(codePoint)
  2951. return this.consumeIdentLikeToken()
  2952. }
  2953. if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
  2954. this.consumeCodePoint()
  2955. this.consumeCodePoint()
  2956. return CDC_TOKEN
  2957. }
  2958. break
  2959. case FULL_STOP:
  2960. if (
  2961. isNumberStart(
  2962. codePoint,
  2963. this.peekCodePoint(0),
  2964. this.peekCodePoint(1)
  2965. )
  2966. ) {
  2967. this.reconsumeCodePoint(codePoint)
  2968. return this.consumeNumericToken()
  2969. }
  2970. break
  2971. case SOLIDUS:
  2972. if (this.peekCodePoint(0) === ASTERISK) {
  2973. this.consumeCodePoint()
  2974. while (true) {
  2975. var c = this.consumeCodePoint()
  2976. if (c === ASTERISK) {
  2977. c = this.consumeCodePoint()
  2978. if (c === SOLIDUS) {
  2979. return this.consumeToken()
  2980. }
  2981. }
  2982. if (c === EOF) {
  2983. return this.consumeToken()
  2984. }
  2985. }
  2986. }
  2987. break
  2988. case COLON:
  2989. return COLON_TOKEN
  2990. case SEMICOLON:
  2991. return SEMICOLON_TOKEN
  2992. case LESS_THAN_SIGN:
  2993. if (
  2994. this.peekCodePoint(0) === EXCLAMATION_MARK &&
  2995. this.peekCodePoint(1) === HYPHEN_MINUS &&
  2996. this.peekCodePoint(2) === HYPHEN_MINUS
  2997. ) {
  2998. this.consumeCodePoint()
  2999. this.consumeCodePoint()
  3000. return CDO_TOKEN
  3001. }
  3002. break
  3003. case COMMERCIAL_AT:
  3004. var a1 = this.peekCodePoint(0)
  3005. var a2 = this.peekCodePoint(1)
  3006. var a3 = this.peekCodePoint(2)
  3007. if (isIdentifierStart(a1, a2, a3)) {
  3008. var value = this.consumeName()
  3009. return { type: 7 /* AT_KEYWORD_TOKEN */, value: value }
  3010. }
  3011. break
  3012. case LEFT_SQUARE_BRACKET:
  3013. return LEFT_SQUARE_BRACKET_TOKEN
  3014. case REVERSE_SOLIDUS:
  3015. if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  3016. this.reconsumeCodePoint(codePoint)
  3017. return this.consumeIdentLikeToken()
  3018. }
  3019. break
  3020. case RIGHT_SQUARE_BRACKET:
  3021. return RIGHT_SQUARE_BRACKET_TOKEN
  3022. case CIRCUMFLEX_ACCENT:
  3023. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  3024. this.consumeCodePoint()
  3025. return PREFIX_MATCH_TOKEN
  3026. }
  3027. break
  3028. case LEFT_CURLY_BRACKET:
  3029. return LEFT_CURLY_BRACKET_TOKEN
  3030. case RIGHT_CURLY_BRACKET:
  3031. return RIGHT_CURLY_BRACKET_TOKEN
  3032. case u:
  3033. case U:
  3034. var u1 = this.peekCodePoint(0)
  3035. var u2 = this.peekCodePoint(1)
  3036. if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
  3037. this.consumeCodePoint()
  3038. this.consumeUnicodeRangeToken()
  3039. }
  3040. this.reconsumeCodePoint(codePoint)
  3041. return this.consumeIdentLikeToken()
  3042. case VERTICAL_LINE:
  3043. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  3044. this.consumeCodePoint()
  3045. return DASH_MATCH_TOKEN
  3046. }
  3047. if (this.peekCodePoint(0) === VERTICAL_LINE) {
  3048. this.consumeCodePoint()
  3049. return COLUMN_TOKEN
  3050. }
  3051. break
  3052. case TILDE:
  3053. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  3054. this.consumeCodePoint()
  3055. return INCLUDE_MATCH_TOKEN
  3056. }
  3057. break
  3058. case EOF:
  3059. return EOF_TOKEN
  3060. }
  3061. if (isWhiteSpace(codePoint)) {
  3062. this.consumeWhiteSpace()
  3063. return WHITESPACE_TOKEN
  3064. }
  3065. if (isDigit(codePoint)) {
  3066. this.reconsumeCodePoint(codePoint)
  3067. return this.consumeNumericToken()
  3068. }
  3069. if (isNameStartCodePoint(codePoint)) {
  3070. this.reconsumeCodePoint(codePoint)
  3071. return this.consumeIdentLikeToken()
  3072. }
  3073. return {
  3074. type: 6 /* DELIM_TOKEN */,
  3075. value: fromCodePoint$1(codePoint)
  3076. }
  3077. }
  3078. Tokenizer.prototype.consumeCodePoint = function () {
  3079. var value = this._value.shift()
  3080. return typeof value === 'undefined' ? -1 : value
  3081. }
  3082. Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {
  3083. this._value.unshift(codePoint)
  3084. }
  3085. Tokenizer.prototype.peekCodePoint = function (delta) {
  3086. if (delta >= this._value.length) {
  3087. return -1
  3088. }
  3089. return this._value[delta]
  3090. }
  3091. Tokenizer.prototype.consumeUnicodeRangeToken = function () {
  3092. var digits = []
  3093. var codePoint = this.consumeCodePoint()
  3094. while (isHex(codePoint) && digits.length < 6) {
  3095. digits.push(codePoint)
  3096. codePoint = this.consumeCodePoint()
  3097. }
  3098. var questionMarks = false
  3099. while (codePoint === QUESTION_MARK && digits.length < 6) {
  3100. digits.push(codePoint)
  3101. codePoint = this.consumeCodePoint()
  3102. questionMarks = true
  3103. }
  3104. if (questionMarks) {
  3105. var start_1 = parseInt(
  3106. fromCodePoint$1.apply(
  3107. void 0,
  3108. digits.map(function (digit) {
  3109. return digit === QUESTION_MARK ? ZERO : digit
  3110. })
  3111. ),
  3112. 16
  3113. )
  3114. var end = parseInt(
  3115. fromCodePoint$1.apply(
  3116. void 0,
  3117. digits.map(function (digit) {
  3118. return digit === QUESTION_MARK ? F : digit
  3119. })
  3120. ),
  3121. 16
  3122. )
  3123. return {
  3124. type: 30 /* UNICODE_RANGE_TOKEN */,
  3125. start: start_1,
  3126. end: end
  3127. }
  3128. }
  3129. var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16)
  3130. if (
  3131. this.peekCodePoint(0) === HYPHEN_MINUS &&
  3132. isHex(this.peekCodePoint(1))
  3133. ) {
  3134. this.consumeCodePoint()
  3135. codePoint = this.consumeCodePoint()
  3136. var endDigits = []
  3137. while (isHex(codePoint) && endDigits.length < 6) {
  3138. endDigits.push(codePoint)
  3139. codePoint = this.consumeCodePoint()
  3140. }
  3141. var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16)
  3142. return {
  3143. type: 30 /* UNICODE_RANGE_TOKEN */,
  3144. start: start,
  3145. end: end
  3146. }
  3147. } else {
  3148. return {
  3149. type: 30 /* UNICODE_RANGE_TOKEN */,
  3150. start: start,
  3151. end: start
  3152. }
  3153. }
  3154. }
  3155. Tokenizer.prototype.consumeIdentLikeToken = function () {
  3156. var value = this.consumeName()
  3157. if (
  3158. value.toLowerCase() === 'url' &&
  3159. this.peekCodePoint(0) === LEFT_PARENTHESIS
  3160. ) {
  3161. this.consumeCodePoint()
  3162. return this.consumeUrlToken()
  3163. } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
  3164. this.consumeCodePoint()
  3165. return { type: 19 /* FUNCTION_TOKEN */, value: value }
  3166. }
  3167. return { type: 20 /* IDENT_TOKEN */, value: value }
  3168. }
  3169. Tokenizer.prototype.consumeUrlToken = function () {
  3170. var value = []
  3171. this.consumeWhiteSpace()
  3172. if (this.peekCodePoint(0) === EOF) {
  3173. return { type: 22 /* URL_TOKEN */, value: '' }
  3174. }
  3175. var next = this.peekCodePoint(0)
  3176. if (next === APOSTROPHE || next === QUOTATION_MARK) {
  3177. var stringToken = this.consumeStringToken(
  3178. this.consumeCodePoint()
  3179. )
  3180. if (stringToken.type === 0 /* STRING_TOKEN */) {
  3181. this.consumeWhiteSpace()
  3182. if (
  3183. this.peekCodePoint(0) === EOF ||
  3184. this.peekCodePoint(0) === RIGHT_PARENTHESIS
  3185. ) {
  3186. this.consumeCodePoint()
  3187. return {
  3188. type: 22 /* URL_TOKEN */,
  3189. value: stringToken.value
  3190. }
  3191. }
  3192. }
  3193. this.consumeBadUrlRemnants()
  3194. return BAD_URL_TOKEN
  3195. }
  3196. while (true) {
  3197. var codePoint = this.consumeCodePoint()
  3198. if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
  3199. return {
  3200. type: 22 /* URL_TOKEN */,
  3201. value: fromCodePoint$1.apply(void 0, value)
  3202. }
  3203. } else if (isWhiteSpace(codePoint)) {
  3204. this.consumeWhiteSpace()
  3205. if (
  3206. this.peekCodePoint(0) === EOF ||
  3207. this.peekCodePoint(0) === RIGHT_PARENTHESIS
  3208. ) {
  3209. this.consumeCodePoint()
  3210. return {
  3211. type: 22 /* URL_TOKEN */,
  3212. value: fromCodePoint$1.apply(void 0, value)
  3213. }
  3214. }
  3215. this.consumeBadUrlRemnants()
  3216. return BAD_URL_TOKEN
  3217. } else if (
  3218. codePoint === QUOTATION_MARK ||
  3219. codePoint === APOSTROPHE ||
  3220. codePoint === LEFT_PARENTHESIS ||
  3221. isNonPrintableCodePoint(codePoint)
  3222. ) {
  3223. this.consumeBadUrlRemnants()
  3224. return BAD_URL_TOKEN
  3225. } else if (codePoint === REVERSE_SOLIDUS) {
  3226. if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  3227. value.push(this.consumeEscapedCodePoint())
  3228. } else {
  3229. this.consumeBadUrlRemnants()
  3230. return BAD_URL_TOKEN
  3231. }
  3232. } else {
  3233. value.push(codePoint)
  3234. }
  3235. }
  3236. }
  3237. Tokenizer.prototype.consumeWhiteSpace = function () {
  3238. while (isWhiteSpace(this.peekCodePoint(0))) {
  3239. this.consumeCodePoint()
  3240. }
  3241. }
  3242. Tokenizer.prototype.consumeBadUrlRemnants = function () {
  3243. while (true) {
  3244. var codePoint = this.consumeCodePoint()
  3245. if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
  3246. return
  3247. }
  3248. if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  3249. this.consumeEscapedCodePoint()
  3250. }
  3251. }
  3252. }
  3253. Tokenizer.prototype.consumeStringSlice = function (count) {
  3254. var SLICE_STACK_SIZE = 50000
  3255. var value = ''
  3256. while (count > 0) {
  3257. var amount = Math.min(SLICE_STACK_SIZE, count)
  3258. value += fromCodePoint$1.apply(
  3259. void 0,
  3260. this._value.splice(0, amount)
  3261. )
  3262. count -= amount
  3263. }
  3264. this._value.shift()
  3265. return value
  3266. }
  3267. Tokenizer.prototype.consumeStringToken = function (
  3268. endingCodePoint
  3269. ) {
  3270. var value = ''
  3271. var i = 0
  3272. do {
  3273. var codePoint = this._value[i]
  3274. if (
  3275. codePoint === EOF ||
  3276. codePoint === undefined ||
  3277. codePoint === endingCodePoint
  3278. ) {
  3279. value += this.consumeStringSlice(i)
  3280. return { type: 0 /* STRING_TOKEN */, value: value }
  3281. }
  3282. if (codePoint === LINE_FEED) {
  3283. this._value.splice(0, i)
  3284. return BAD_STRING_TOKEN
  3285. }
  3286. if (codePoint === REVERSE_SOLIDUS) {
  3287. var next = this._value[i + 1]
  3288. if (next !== EOF && next !== undefined) {
  3289. if (next === LINE_FEED) {
  3290. value += this.consumeStringSlice(i)
  3291. i = -1
  3292. this._value.shift()
  3293. } else if (isValidEscape(codePoint, next)) {
  3294. value += this.consumeStringSlice(i)
  3295. value += fromCodePoint$1(this.consumeEscapedCodePoint())
  3296. i = -1
  3297. }
  3298. }
  3299. }
  3300. i++
  3301. } while (true)
  3302. }
  3303. Tokenizer.prototype.consumeNumber = function () {
  3304. var repr = []
  3305. var type = FLAG_INTEGER
  3306. var c1 = this.peekCodePoint(0)
  3307. if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
  3308. repr.push(this.consumeCodePoint())
  3309. }
  3310. while (isDigit(this.peekCodePoint(0))) {
  3311. repr.push(this.consumeCodePoint())
  3312. }
  3313. c1 = this.peekCodePoint(0)
  3314. var c2 = this.peekCodePoint(1)
  3315. if (c1 === FULL_STOP && isDigit(c2)) {
  3316. repr.push(this.consumeCodePoint(), this.consumeCodePoint())
  3317. type = FLAG_NUMBER
  3318. while (isDigit(this.peekCodePoint(0))) {
  3319. repr.push(this.consumeCodePoint())
  3320. }
  3321. }
  3322. c1 = this.peekCodePoint(0)
  3323. c2 = this.peekCodePoint(1)
  3324. var c3 = this.peekCodePoint(2)
  3325. if (
  3326. (c1 === E || c1 === e) &&
  3327. (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) ||
  3328. isDigit(c2))
  3329. ) {
  3330. repr.push(this.consumeCodePoint(), this.consumeCodePoint())
  3331. type = FLAG_NUMBER
  3332. while (isDigit(this.peekCodePoint(0))) {
  3333. repr.push(this.consumeCodePoint())
  3334. }
  3335. }
  3336. return [stringToNumber(repr), type]
  3337. }
  3338. Tokenizer.prototype.consumeNumericToken = function () {
  3339. var _a = this.consumeNumber(),
  3340. number = _a[0],
  3341. flags = _a[1]
  3342. var c1 = this.peekCodePoint(0)
  3343. var c2 = this.peekCodePoint(1)
  3344. var c3 = this.peekCodePoint(2)
  3345. if (isIdentifierStart(c1, c2, c3)) {
  3346. var unit = this.consumeName()
  3347. return {
  3348. type: 15 /* DIMENSION_TOKEN */,
  3349. number: number,
  3350. flags: flags,
  3351. unit: unit
  3352. }
  3353. }
  3354. if (c1 === PERCENTAGE_SIGN) {
  3355. this.consumeCodePoint()
  3356. return {
  3357. type: 16 /* PERCENTAGE_TOKEN */,
  3358. number: number,
  3359. flags: flags
  3360. }
  3361. }
  3362. return {
  3363. type: 17 /* NUMBER_TOKEN */,
  3364. number: number,
  3365. flags: flags
  3366. }
  3367. }
  3368. Tokenizer.prototype.consumeEscapedCodePoint = function () {
  3369. var codePoint = this.consumeCodePoint()
  3370. if (isHex(codePoint)) {
  3371. var hex = fromCodePoint$1(codePoint)
  3372. while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
  3373. hex += fromCodePoint$1(this.consumeCodePoint())
  3374. }
  3375. if (isWhiteSpace(this.peekCodePoint(0))) {
  3376. this.consumeCodePoint()
  3377. }
  3378. var hexCodePoint = parseInt(hex, 16)
  3379. if (
  3380. hexCodePoint === 0 ||
  3381. isSurrogateCodePoint(hexCodePoint) ||
  3382. hexCodePoint > 0x10ffff
  3383. ) {
  3384. return REPLACEMENT_CHARACTER
  3385. }
  3386. return hexCodePoint
  3387. }
  3388. if (codePoint === EOF) {
  3389. return REPLACEMENT_CHARACTER
  3390. }
  3391. return codePoint
  3392. }
  3393. Tokenizer.prototype.consumeName = function () {
  3394. var result = ''
  3395. while (true) {
  3396. var codePoint = this.consumeCodePoint()
  3397. if (isNameCodePoint(codePoint)) {
  3398. result += fromCodePoint$1(codePoint)
  3399. } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  3400. result += fromCodePoint$1(this.consumeEscapedCodePoint())
  3401. } else {
  3402. this.reconsumeCodePoint(codePoint)
  3403. return result
  3404. }
  3405. }
  3406. }
  3407. return Tokenizer
  3408. })()
  3409. var Parser = /** @class */ (function () {
  3410. function Parser(tokens) {
  3411. this._tokens = tokens
  3412. }
  3413. Parser.create = function (value) {
  3414. var tokenizer = new Tokenizer()
  3415. tokenizer.write(value)
  3416. return new Parser(tokenizer.read())
  3417. }
  3418. Parser.parseValue = function (value) {
  3419. return Parser.create(value).parseComponentValue()
  3420. }
  3421. Parser.parseValues = function (value) {
  3422. return Parser.create(value).parseComponentValues()
  3423. }
  3424. Parser.prototype.parseComponentValue = function () {
  3425. var token = this.consumeToken()
  3426. while (token.type === 31 /* WHITESPACE_TOKEN */) {
  3427. token = this.consumeToken()
  3428. }
  3429. if (token.type === 32 /* EOF_TOKEN */) {
  3430. throw new SyntaxError(
  3431. 'Error parsing CSS component value, unexpected EOF'
  3432. )
  3433. }
  3434. this.reconsumeToken(token)
  3435. var value = this.consumeComponentValue()
  3436. do {
  3437. token = this.consumeToken()
  3438. } while (token.type === 31 /* WHITESPACE_TOKEN */)
  3439. if (token.type === 32 /* EOF_TOKEN */) {
  3440. return value
  3441. }
  3442. throw new SyntaxError(
  3443. 'Error parsing CSS component value, multiple values found when expecting only one'
  3444. )
  3445. }
  3446. Parser.prototype.parseComponentValues = function () {
  3447. var values = []
  3448. while (true) {
  3449. var value = this.consumeComponentValue()
  3450. if (value.type === 32 /* EOF_TOKEN */) {
  3451. return values
  3452. }
  3453. values.push(value)
  3454. values.push()
  3455. }
  3456. }
  3457. Parser.prototype.consumeComponentValue = function () {
  3458. var token = this.consumeToken()
  3459. switch (token.type) {
  3460. case 11 /* LEFT_CURLY_BRACKET_TOKEN */:
  3461. case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:
  3462. case 2 /* LEFT_PARENTHESIS_TOKEN */:
  3463. return this.consumeSimpleBlock(token.type)
  3464. case 19 /* FUNCTION_TOKEN */:
  3465. return this.consumeFunction(token)
  3466. }
  3467. return token
  3468. }
  3469. Parser.prototype.consumeSimpleBlock = function (type) {
  3470. var block = { type: type, values: [] }
  3471. var token = this.consumeToken()
  3472. while (true) {
  3473. if (
  3474. token.type === 32 /* EOF_TOKEN */ ||
  3475. isEndingTokenFor(token, type)
  3476. ) {
  3477. return block
  3478. }
  3479. this.reconsumeToken(token)
  3480. block.values.push(this.consumeComponentValue())
  3481. token = this.consumeToken()
  3482. }
  3483. }
  3484. Parser.prototype.consumeFunction = function (functionToken) {
  3485. var cssFunction = {
  3486. name: functionToken.value,
  3487. values: [],
  3488. type: 18 /* FUNCTION */
  3489. }
  3490. while (true) {
  3491. var token = this.consumeToken()
  3492. if (
  3493. token.type === 32 /* EOF_TOKEN */ ||
  3494. token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */
  3495. ) {
  3496. return cssFunction
  3497. }
  3498. this.reconsumeToken(token)
  3499. cssFunction.values.push(this.consumeComponentValue())
  3500. }
  3501. }
  3502. Parser.prototype.consumeToken = function () {
  3503. var token = this._tokens.shift()
  3504. return typeof token === 'undefined' ? EOF_TOKEN : token
  3505. }
  3506. Parser.prototype.reconsumeToken = function (token) {
  3507. this._tokens.unshift(token)
  3508. }
  3509. return Parser
  3510. })()
  3511. var isDimensionToken = function isDimensionToken(token) {
  3512. return token.type === 15 /* DIMENSION_TOKEN */
  3513. }
  3514. var isNumberToken = function isNumberToken(token) {
  3515. return token.type === 17 /* NUMBER_TOKEN */
  3516. }
  3517. var isIdentToken = function isIdentToken(token) {
  3518. return token.type === 20 /* IDENT_TOKEN */
  3519. }
  3520. var isStringToken = function isStringToken(token) {
  3521. return token.type === 0 /* STRING_TOKEN */
  3522. }
  3523. var isIdentWithValue = function isIdentWithValue(token, value) {
  3524. return isIdentToken(token) && token.value === value
  3525. }
  3526. var nonWhiteSpace = function nonWhiteSpace(token) {
  3527. return token.type !== 31 /* WHITESPACE_TOKEN */
  3528. }
  3529. var nonFunctionArgSeparator = function nonFunctionArgSeparator(
  3530. token
  3531. ) {
  3532. return (
  3533. token.type !== 31 /* WHITESPACE_TOKEN */ &&
  3534. token.type !== 4 /* COMMA_TOKEN */
  3535. )
  3536. }
  3537. var parseFunctionArgs = function parseFunctionArgs(tokens) {
  3538. var args = []
  3539. var arg = []
  3540. tokens.forEach(function (token) {
  3541. if (token.type === 4 /* COMMA_TOKEN */) {
  3542. if (arg.length === 0) {
  3543. throw new Error(
  3544. 'Error parsing function args, zero tokens for arg'
  3545. )
  3546. }
  3547. args.push(arg)
  3548. arg = []
  3549. return
  3550. }
  3551. if (token.type !== 31 /* WHITESPACE_TOKEN */) {
  3552. arg.push(token)
  3553. }
  3554. })
  3555. if (arg.length) {
  3556. args.push(arg)
  3557. }
  3558. return args
  3559. }
  3560. var isEndingTokenFor = function isEndingTokenFor(token, type) {
  3561. if (
  3562. type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ &&
  3563. token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */
  3564. ) {
  3565. return true
  3566. }
  3567. if (
  3568. type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ &&
  3569. token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */
  3570. ) {
  3571. return true
  3572. }
  3573. return (
  3574. type === 2 /* LEFT_PARENTHESIS_TOKEN */ &&
  3575. token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */
  3576. )
  3577. }
  3578. var isLength = function isLength(token) {
  3579. return (
  3580. token.type === 17 /* NUMBER_TOKEN */ ||
  3581. token.type === 15 /* DIMENSION_TOKEN */
  3582. )
  3583. }
  3584. var isLengthPercentage = function isLengthPercentage(token) {
  3585. return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token)
  3586. }
  3587. var parseLengthPercentageTuple = function parseLengthPercentageTuple(
  3588. tokens
  3589. ) {
  3590. return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]]
  3591. }
  3592. var ZERO_LENGTH = {
  3593. type: 17 /* NUMBER_TOKEN */,
  3594. number: 0,
  3595. flags: FLAG_INTEGER
  3596. }
  3597. var FIFTY_PERCENT = {
  3598. type: 16 /* PERCENTAGE_TOKEN */,
  3599. number: 50,
  3600. flags: FLAG_INTEGER
  3601. }
  3602. var HUNDRED_PERCENT = {
  3603. type: 16 /* PERCENTAGE_TOKEN */,
  3604. number: 100,
  3605. flags: FLAG_INTEGER
  3606. }
  3607. var getAbsoluteValueForTuple = function getAbsoluteValueForTuple(
  3608. tuple,
  3609. width,
  3610. height
  3611. ) {
  3612. var x = tuple[0],
  3613. y = tuple[1]
  3614. return [
  3615. getAbsoluteValue(x, width),
  3616. getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)
  3617. ]
  3618. }
  3619. var getAbsoluteValue = function getAbsoluteValue(token, parent) {
  3620. if (token.type === 16 /* PERCENTAGE_TOKEN */) {
  3621. return (token.number / 100) * parent
  3622. }
  3623. if (isDimensionToken(token)) {
  3624. switch (token.unit) {
  3625. case 'rem':
  3626. case 'em':
  3627. return 16 * token.number // TODO use correct font-size
  3628. case 'px':
  3629. default:
  3630. return token.number
  3631. }
  3632. }
  3633. return token.number
  3634. }
  3635. var DEG = 'deg'
  3636. var GRAD = 'grad'
  3637. var RAD = 'rad'
  3638. var TURN = 'turn'
  3639. var angle = {
  3640. name: 'angle',
  3641. parse: function parse(_context, value) {
  3642. if (value.type === 15 /* DIMENSION_TOKEN */) {
  3643. switch (value.unit) {
  3644. case DEG:
  3645. return (Math.PI * value.number) / 180
  3646. case GRAD:
  3647. return (Math.PI / 200) * value.number
  3648. case RAD:
  3649. return value.number
  3650. case TURN:
  3651. return Math.PI * 2 * value.number
  3652. }
  3653. }
  3654. throw new Error('Unsupported angle type')
  3655. }
  3656. }
  3657. var isAngle = function isAngle(value) {
  3658. if (value.type === 15 /* DIMENSION_TOKEN */) {
  3659. if (
  3660. value.unit === DEG ||
  3661. value.unit === GRAD ||
  3662. value.unit === RAD ||
  3663. value.unit === TURN
  3664. ) {
  3665. return true
  3666. }
  3667. }
  3668. return false
  3669. }
  3670. var parseNamedSide = function parseNamedSide(tokens) {
  3671. var sideOrCorner = tokens
  3672. .filter(isIdentToken)
  3673. .map(function (ident) {
  3674. return ident.value
  3675. })
  3676. .join(' ')
  3677. switch (sideOrCorner) {
  3678. case 'to bottom right':
  3679. case 'to right bottom':
  3680. case 'left top':
  3681. case 'top left':
  3682. return [ZERO_LENGTH, ZERO_LENGTH]
  3683. case 'to top':
  3684. case 'bottom':
  3685. return deg(0)
  3686. case 'to bottom left':
  3687. case 'to left bottom':
  3688. case 'right top':
  3689. case 'top right':
  3690. return [ZERO_LENGTH, HUNDRED_PERCENT]
  3691. case 'to right':
  3692. case 'left':
  3693. return deg(90)
  3694. case 'to top left':
  3695. case 'to left top':
  3696. case 'right bottom':
  3697. case 'bottom right':
  3698. return [HUNDRED_PERCENT, HUNDRED_PERCENT]
  3699. case 'to bottom':
  3700. case 'top':
  3701. return deg(180)
  3702. case 'to top right':
  3703. case 'to right top':
  3704. case 'left bottom':
  3705. case 'bottom left':
  3706. return [HUNDRED_PERCENT, ZERO_LENGTH]
  3707. case 'to left':
  3708. case 'right':
  3709. return deg(270)
  3710. }
  3711. return 0
  3712. }
  3713. var deg = function deg(_deg) {
  3714. return (Math.PI * _deg) / 180
  3715. }
  3716. var color$1 = {
  3717. name: 'color',
  3718. parse: function parse(context, value) {
  3719. if (value.type === 18 /* FUNCTION */) {
  3720. var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name]
  3721. if (typeof colorFunction === 'undefined') {
  3722. throw new Error(
  3723. 'Attempting to parse an unsupported color function "' +
  3724. value.name +
  3725. '"'
  3726. )
  3727. }
  3728. return colorFunction(context, value.values)
  3729. }
  3730. if (value.type === 5 /* HASH_TOKEN */) {
  3731. if (value.value.length === 3) {
  3732. var r = value.value.substring(0, 1)
  3733. var g = value.value.substring(1, 2)
  3734. var b = value.value.substring(2, 3)
  3735. return pack(
  3736. parseInt(r + r, 16),
  3737. parseInt(g + g, 16),
  3738. parseInt(b + b, 16),
  3739. 1
  3740. )
  3741. }
  3742. if (value.value.length === 4) {
  3743. var r = value.value.substring(0, 1)
  3744. var g = value.value.substring(1, 2)
  3745. var b = value.value.substring(2, 3)
  3746. var a = value.value.substring(3, 4)
  3747. return pack(
  3748. parseInt(r + r, 16),
  3749. parseInt(g + g, 16),
  3750. parseInt(b + b, 16),
  3751. parseInt(a + a, 16) / 255
  3752. )
  3753. }
  3754. if (value.value.length === 6) {
  3755. var r = value.value.substring(0, 2)
  3756. var g = value.value.substring(2, 4)
  3757. var b = value.value.substring(4, 6)
  3758. return pack(
  3759. parseInt(r, 16),
  3760. parseInt(g, 16),
  3761. parseInt(b, 16),
  3762. 1
  3763. )
  3764. }
  3765. if (value.value.length === 8) {
  3766. var r = value.value.substring(0, 2)
  3767. var g = value.value.substring(2, 4)
  3768. var b = value.value.substring(4, 6)
  3769. var a = value.value.substring(6, 8)
  3770. return pack(
  3771. parseInt(r, 16),
  3772. parseInt(g, 16),
  3773. parseInt(b, 16),
  3774. parseInt(a, 16) / 255
  3775. )
  3776. }
  3777. }
  3778. if (value.type === 20 /* IDENT_TOKEN */) {
  3779. var namedColor = COLORS[value.value.toUpperCase()]
  3780. if (typeof namedColor !== 'undefined') {
  3781. return namedColor
  3782. }
  3783. }
  3784. return COLORS.TRANSPARENT
  3785. }
  3786. }
  3787. var isTransparent = function isTransparent(color) {
  3788. return (0xff & color) === 0
  3789. }
  3790. var asString = function asString(color) {
  3791. var alpha = 0xff & color
  3792. var blue = 0xff & (color >> 8)
  3793. var green = 0xff & (color >> 16)
  3794. var red = 0xff & (color >> 24)
  3795. return alpha < 255
  3796. ? 'rgba(' +
  3797. red +
  3798. ',' +
  3799. green +
  3800. ',' +
  3801. blue +
  3802. ',' +
  3803. alpha / 255 +
  3804. ')'
  3805. : 'rgb(' + red + ',' + green + ',' + blue + ')'
  3806. }
  3807. var pack = function pack(r, g, b, a) {
  3808. return (
  3809. ((r << 24) |
  3810. (g << 16) |
  3811. (b << 8) |
  3812. (Math.round(a * 255) << 0)) >>>
  3813. 0
  3814. )
  3815. }
  3816. var getTokenColorValue = function getTokenColorValue(token, i) {
  3817. if (token.type === 17 /* NUMBER_TOKEN */) {
  3818. return token.number
  3819. }
  3820. if (token.type === 16 /* PERCENTAGE_TOKEN */) {
  3821. var max = i === 3 ? 1 : 255
  3822. return i === 3
  3823. ? (token.number / 100) * max
  3824. : Math.round((token.number / 100) * max)
  3825. }
  3826. return 0
  3827. }
  3828. var rgb = function rgb(_context, args) {
  3829. var tokens = args.filter(nonFunctionArgSeparator)
  3830. if (tokens.length === 3) {
  3831. var _a = tokens.map(getTokenColorValue),
  3832. r = _a[0],
  3833. g = _a[1],
  3834. b = _a[2]
  3835. return pack(r, g, b, 1)
  3836. }
  3837. if (tokens.length === 4) {
  3838. var _b = tokens.map(getTokenColorValue),
  3839. r = _b[0],
  3840. g = _b[1],
  3841. b = _b[2],
  3842. a = _b[3]
  3843. return pack(r, g, b, a)
  3844. }
  3845. return 0
  3846. }
  3847. function hue2rgb(t1, t2, hue) {
  3848. if (hue < 0) {
  3849. hue += 1
  3850. }
  3851. if (hue >= 1) {
  3852. hue -= 1
  3853. }
  3854. if (hue < 1 / 6) {
  3855. return (t2 - t1) * hue * 6 + t1
  3856. } else if (hue < 1 / 2) {
  3857. return t2
  3858. } else if (hue < 2 / 3) {
  3859. return (t2 - t1) * 6 * (2 / 3 - hue) + t1
  3860. } else {
  3861. return t1
  3862. }
  3863. }
  3864. var hsl = function hsl(context, args) {
  3865. var tokens = args.filter(nonFunctionArgSeparator)
  3866. var hue = tokens[0],
  3867. saturation = tokens[1],
  3868. lightness = tokens[2],
  3869. alpha = tokens[3]
  3870. var h =
  3871. (hue.type === 17 /* NUMBER_TOKEN */
  3872. ? deg(hue.number)
  3873. : angle.parse(context, hue)) /
  3874. (Math.PI * 2)
  3875. var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0
  3876. var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0
  3877. var a =
  3878. typeof alpha !== 'undefined' && isLengthPercentage(alpha)
  3879. ? getAbsoluteValue(alpha, 1)
  3880. : 1
  3881. if (s === 0) {
  3882. return pack(l * 255, l * 255, l * 255, 1)
  3883. }
  3884. var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s
  3885. var t1 = l * 2 - t2
  3886. var r = hue2rgb(t1, t2, h + 1 / 3)
  3887. var g = hue2rgb(t1, t2, h)
  3888. var b = hue2rgb(t1, t2, h - 1 / 3)
  3889. return pack(r * 255, g * 255, b * 255, a)
  3890. }
  3891. var SUPPORTED_COLOR_FUNCTIONS = {
  3892. hsl: hsl,
  3893. hsla: hsl,
  3894. rgb: rgb,
  3895. rgba: rgb
  3896. }
  3897. var parseColor = function parseColor(context, value) {
  3898. return color$1.parse(
  3899. context,
  3900. Parser.create(value).parseComponentValue()
  3901. )
  3902. }
  3903. var COLORS = {
  3904. ALICEBLUE: 0xf0f8ffff,
  3905. ANTIQUEWHITE: 0xfaebd7ff,
  3906. AQUA: 0x00ffffff,
  3907. AQUAMARINE: 0x7fffd4ff,
  3908. AZURE: 0xf0ffffff,
  3909. BEIGE: 0xf5f5dcff,
  3910. BISQUE: 0xffe4c4ff,
  3911. BLACK: 0x000000ff,
  3912. BLANCHEDALMOND: 0xffebcdff,
  3913. BLUE: 0x0000ffff,
  3914. BLUEVIOLET: 0x8a2be2ff,
  3915. BROWN: 0xa52a2aff,
  3916. BURLYWOOD: 0xdeb887ff,
  3917. CADETBLUE: 0x5f9ea0ff,
  3918. CHARTREUSE: 0x7fff00ff,
  3919. CHOCOLATE: 0xd2691eff,
  3920. CORAL: 0xff7f50ff,
  3921. CORNFLOWERBLUE: 0x6495edff,
  3922. CORNSILK: 0xfff8dcff,
  3923. CRIMSON: 0xdc143cff,
  3924. CYAN: 0x00ffffff,
  3925. DARKBLUE: 0x00008bff,
  3926. DARKCYAN: 0x008b8bff,
  3927. DARKGOLDENROD: 0xb886bbff,
  3928. DARKGRAY: 0xa9a9a9ff,
  3929. DARKGREEN: 0x006400ff,
  3930. DARKGREY: 0xa9a9a9ff,
  3931. DARKKHAKI: 0xbdb76bff,
  3932. DARKMAGENTA: 0x8b008bff,
  3933. DARKOLIVEGREEN: 0x556b2fff,
  3934. DARKORANGE: 0xff8c00ff,
  3935. DARKORCHID: 0x9932ccff,
  3936. DARKRED: 0x8b0000ff,
  3937. DARKSALMON: 0xe9967aff,
  3938. DARKSEAGREEN: 0x8fbc8fff,
  3939. DARKSLATEBLUE: 0x483d8bff,
  3940. DARKSLATEGRAY: 0x2f4f4fff,
  3941. DARKSLATEGREY: 0x2f4f4fff,
  3942. DARKTURQUOISE: 0x00ced1ff,
  3943. DARKVIOLET: 0x9400d3ff,
  3944. DEEPPINK: 0xff1493ff,
  3945. DEEPSKYBLUE: 0x00bfffff,
  3946. DIMGRAY: 0x696969ff,
  3947. DIMGREY: 0x696969ff,
  3948. DODGERBLUE: 0x1e90ffff,
  3949. FIREBRICK: 0xb22222ff,
  3950. FLORALWHITE: 0xfffaf0ff,
  3951. FORESTGREEN: 0x228b22ff,
  3952. FUCHSIA: 0xff00ffff,
  3953. GAINSBORO: 0xdcdcdcff,
  3954. GHOSTWHITE: 0xf8f8ffff,
  3955. GOLD: 0xffd700ff,
  3956. GOLDENROD: 0xdaa520ff,
  3957. GRAY: 0x808080ff,
  3958. GREEN: 0x008000ff,
  3959. GREENYELLOW: 0xadff2fff,
  3960. GREY: 0x808080ff,
  3961. HONEYDEW: 0xf0fff0ff,
  3962. HOTPINK: 0xff69b4ff,
  3963. INDIANRED: 0xcd5c5cff,
  3964. INDIGO: 0x4b0082ff,
  3965. IVORY: 0xfffff0ff,
  3966. KHAKI: 0xf0e68cff,
  3967. LAVENDER: 0xe6e6faff,
  3968. LAVENDERBLUSH: 0xfff0f5ff,
  3969. LAWNGREEN: 0x7cfc00ff,
  3970. LEMONCHIFFON: 0xfffacdff,
  3971. LIGHTBLUE: 0xadd8e6ff,
  3972. LIGHTCORAL: 0xf08080ff,
  3973. LIGHTCYAN: 0xe0ffffff,
  3974. LIGHTGOLDENRODYELLOW: 0xfafad2ff,
  3975. LIGHTGRAY: 0xd3d3d3ff,
  3976. LIGHTGREEN: 0x90ee90ff,
  3977. LIGHTGREY: 0xd3d3d3ff,
  3978. LIGHTPINK: 0xffb6c1ff,
  3979. LIGHTSALMON: 0xffa07aff,
  3980. LIGHTSEAGREEN: 0x20b2aaff,
  3981. LIGHTSKYBLUE: 0x87cefaff,
  3982. LIGHTSLATEGRAY: 0x778899ff,
  3983. LIGHTSLATEGREY: 0x778899ff,
  3984. LIGHTSTEELBLUE: 0xb0c4deff,
  3985. LIGHTYELLOW: 0xffffe0ff,
  3986. LIME: 0x00ff00ff,
  3987. LIMEGREEN: 0x32cd32ff,
  3988. LINEN: 0xfaf0e6ff,
  3989. MAGENTA: 0xff00ffff,
  3990. MAROON: 0x800000ff,
  3991. MEDIUMAQUAMARINE: 0x66cdaaff,
  3992. MEDIUMBLUE: 0x0000cdff,
  3993. MEDIUMORCHID: 0xba55d3ff,
  3994. MEDIUMPURPLE: 0x9370dbff,
  3995. MEDIUMSEAGREEN: 0x3cb371ff,
  3996. MEDIUMSLATEBLUE: 0x7b68eeff,
  3997. MEDIUMSPRINGGREEN: 0x00fa9aff,
  3998. MEDIUMTURQUOISE: 0x48d1ccff,
  3999. MEDIUMVIOLETRED: 0xc71585ff,
  4000. MIDNIGHTBLUE: 0x191970ff,
  4001. MINTCREAM: 0xf5fffaff,
  4002. MISTYROSE: 0xffe4e1ff,
  4003. MOCCASIN: 0xffe4b5ff,
  4004. NAVAJOWHITE: 0xffdeadff,
  4005. NAVY: 0x000080ff,
  4006. OLDLACE: 0xfdf5e6ff,
  4007. OLIVE: 0x808000ff,
  4008. OLIVEDRAB: 0x6b8e23ff,
  4009. ORANGE: 0xffa500ff,
  4010. ORANGERED: 0xff4500ff,
  4011. ORCHID: 0xda70d6ff,
  4012. PALEGOLDENROD: 0xeee8aaff,
  4013. PALEGREEN: 0x98fb98ff,
  4014. PALETURQUOISE: 0xafeeeeff,
  4015. PALEVIOLETRED: 0xdb7093ff,
  4016. PAPAYAWHIP: 0xffefd5ff,
  4017. PEACHPUFF: 0xffdab9ff,
  4018. PERU: 0xcd853fff,
  4019. PINK: 0xffc0cbff,
  4020. PLUM: 0xdda0ddff,
  4021. POWDERBLUE: 0xb0e0e6ff,
  4022. PURPLE: 0x800080ff,
  4023. REBECCAPURPLE: 0x663399ff,
  4024. RED: 0xff0000ff,
  4025. ROSYBROWN: 0xbc8f8fff,
  4026. ROYALBLUE: 0x4169e1ff,
  4027. SADDLEBROWN: 0x8b4513ff,
  4028. SALMON: 0xfa8072ff,
  4029. SANDYBROWN: 0xf4a460ff,
  4030. SEAGREEN: 0x2e8b57ff,
  4031. SEASHELL: 0xfff5eeff,
  4032. SIENNA: 0xa0522dff,
  4033. SILVER: 0xc0c0c0ff,
  4034. SKYBLUE: 0x87ceebff,
  4035. SLATEBLUE: 0x6a5acdff,
  4036. SLATEGRAY: 0x708090ff,
  4037. SLATEGREY: 0x708090ff,
  4038. SNOW: 0xfffafaff,
  4039. SPRINGGREEN: 0x00ff7fff,
  4040. STEELBLUE: 0x4682b4ff,
  4041. TAN: 0xd2b48cff,
  4042. TEAL: 0x008080ff,
  4043. THISTLE: 0xd8bfd8ff,
  4044. TOMATO: 0xff6347ff,
  4045. TRANSPARENT: 0x00000000,
  4046. TURQUOISE: 0x40e0d0ff,
  4047. VIOLET: 0xee82eeff,
  4048. WHEAT: 0xf5deb3ff,
  4049. WHITE: 0xffffffff,
  4050. WHITESMOKE: 0xf5f5f5ff,
  4051. YELLOW: 0xffff00ff,
  4052. YELLOWGREEN: 0x9acd32ff
  4053. }
  4054. var backgroundClip = {
  4055. name: 'background-clip',
  4056. initialValue: 'border-box',
  4057. prefix: false,
  4058. type: 1 /* LIST */,
  4059. parse: function parse(_context, tokens) {
  4060. return tokens.map(function (token) {
  4061. if (isIdentToken(token)) {
  4062. switch (token.value) {
  4063. case 'padding-box':
  4064. return 1 /* PADDING_BOX */
  4065. case 'content-box':
  4066. return 2 /* CONTENT_BOX */
  4067. }
  4068. }
  4069. return 0 /* BORDER_BOX */
  4070. })
  4071. }
  4072. }
  4073. var backgroundColor = {
  4074. name: 'background-color',
  4075. initialValue: 'transparent',
  4076. prefix: false,
  4077. type: 3 /* TYPE_VALUE */,
  4078. format: 'color'
  4079. }
  4080. var parseColorStop = function parseColorStop(context, args) {
  4081. var color = color$1.parse(context, args[0])
  4082. var stop = args[1]
  4083. return stop && isLengthPercentage(stop)
  4084. ? { color: color, stop: stop }
  4085. : { color: color, stop: null }
  4086. }
  4087. var processColorStops = function processColorStops(
  4088. stops,
  4089. lineLength
  4090. ) {
  4091. var first = stops[0]
  4092. var last = stops[stops.length - 1]
  4093. if (first.stop === null) {
  4094. first.stop = ZERO_LENGTH
  4095. }
  4096. if (last.stop === null) {
  4097. last.stop = HUNDRED_PERCENT
  4098. }
  4099. var processStops = []
  4100. var previous = 0
  4101. for (var i = 0; i < stops.length; i++) {
  4102. var stop_1 = stops[i].stop
  4103. if (stop_1 !== null) {
  4104. var absoluteValue = getAbsoluteValue(stop_1, lineLength)
  4105. if (absoluteValue > previous) {
  4106. processStops.push(absoluteValue)
  4107. } else {
  4108. processStops.push(previous)
  4109. }
  4110. previous = absoluteValue
  4111. } else {
  4112. processStops.push(null)
  4113. }
  4114. }
  4115. var gapBegin = null
  4116. for (var i = 0; i < processStops.length; i++) {
  4117. var stop_2 = processStops[i]
  4118. if (stop_2 === null) {
  4119. if (gapBegin === null) {
  4120. gapBegin = i
  4121. }
  4122. } else if (gapBegin !== null) {
  4123. var gapLength = i - gapBegin
  4124. var beforeGap = processStops[gapBegin - 1]
  4125. var gapValue = (stop_2 - beforeGap) / (gapLength + 1)
  4126. for (var g = 1; g <= gapLength; g++) {
  4127. processStops[gapBegin + g - 1] = gapValue * g
  4128. }
  4129. gapBegin = null
  4130. }
  4131. }
  4132. return stops.map(function (_a, i) {
  4133. var color = _a.color
  4134. return {
  4135. color: color,
  4136. stop: Math.max(Math.min(1, processStops[i] / lineLength), 0)
  4137. }
  4138. })
  4139. }
  4140. var getAngleFromCorner = function getAngleFromCorner(
  4141. corner,
  4142. width,
  4143. height
  4144. ) {
  4145. var centerX = width / 2
  4146. var centerY = height / 2
  4147. var x = getAbsoluteValue(corner[0], width) - centerX
  4148. var y = centerY - getAbsoluteValue(corner[1], height)
  4149. return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2)
  4150. }
  4151. var calculateGradientDirection = function calculateGradientDirection(
  4152. angle,
  4153. width,
  4154. height
  4155. ) {
  4156. var radian =
  4157. typeof angle === 'number'
  4158. ? angle
  4159. : getAngleFromCorner(angle, width, height)
  4160. var lineLength =
  4161. Math.abs(width * Math.sin(radian)) +
  4162. Math.abs(height * Math.cos(radian))
  4163. var halfWidth = width / 2
  4164. var halfHeight = height / 2
  4165. var halfLineLength = lineLength / 2
  4166. var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength
  4167. var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength
  4168. return [
  4169. lineLength,
  4170. halfWidth - xDiff,
  4171. halfWidth + xDiff,
  4172. halfHeight - yDiff,
  4173. halfHeight + yDiff
  4174. ]
  4175. }
  4176. var distance = function distance(a, b) {
  4177. return Math.sqrt(a * a + b * b)
  4178. }
  4179. var findCorner = function findCorner(width, height, x, y, closest) {
  4180. var corners = [
  4181. [0, 0],
  4182. [0, height],
  4183. [width, 0],
  4184. [width, height]
  4185. ]
  4186. return corners.reduce(
  4187. function (stat, corner) {
  4188. var cx = corner[0],
  4189. cy = corner[1]
  4190. var d = distance(x - cx, y - cy)
  4191. if (
  4192. closest ? d < stat.optimumDistance : d > stat.optimumDistance
  4193. ) {
  4194. return { optimumCorner: corner, optimumDistance: d }
  4195. }
  4196. return stat
  4197. },
  4198. {
  4199. optimumDistance: closest ? Infinity : -Infinity,
  4200. optimumCorner: null
  4201. }
  4202. ).optimumCorner
  4203. }
  4204. var calculateRadius = function calculateRadius(
  4205. gradient,
  4206. x,
  4207. y,
  4208. width,
  4209. height
  4210. ) {
  4211. var rx = 0
  4212. var ry = 0
  4213. switch (gradient.size) {
  4214. case 0 /* CLOSEST_SIDE */: // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.
  4215. // If the shape is an ellipse, it exactly meets the closest side in each dimension.
  4216. if (gradient.shape === 0 /* CIRCLE */) {
  4217. rx = ry = Math.min(
  4218. Math.abs(x),
  4219. Math.abs(x - width),
  4220. Math.abs(y),
  4221. Math.abs(y - height)
  4222. )
  4223. } else if (gradient.shape === 1 /* ELLIPSE */) {
  4224. rx = Math.min(Math.abs(x), Math.abs(x - width))
  4225. ry = Math.min(Math.abs(y), Math.abs(y - height))
  4226. }
  4227. break
  4228. case 2 /* CLOSEST_CORNER */: // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.
  4229. // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
  4230. if (gradient.shape === 0 /* CIRCLE */) {
  4231. rx = ry = Math.min(
  4232. distance(x, y),
  4233. distance(x, y - height),
  4234. distance(x - width, y),
  4235. distance(x - width, y - height)
  4236. )
  4237. } else if (gradient.shape === 1 /* ELLIPSE */) {
  4238. // Compute the ratio ry/rx (which is to be the same as for "closest-side")
  4239. var c =
  4240. Math.min(Math.abs(y), Math.abs(y - height)) /
  4241. Math.min(Math.abs(x), Math.abs(x - width))
  4242. var _a = findCorner(width, height, x, y, true),
  4243. cx = _a[0],
  4244. cy = _a[1]
  4245. rx = distance(cx - x, (cy - y) / c)
  4246. ry = c * rx
  4247. }
  4248. break
  4249. case 1 /* FARTHEST_SIDE */: // Same as closest-side, except the ending shape is sized based on the farthest side(s)
  4250. if (gradient.shape === 0 /* CIRCLE */) {
  4251. rx = ry = Math.max(
  4252. Math.abs(x),
  4253. Math.abs(x - width),
  4254. Math.abs(y),
  4255. Math.abs(y - height)
  4256. )
  4257. } else if (gradient.shape === 1 /* ELLIPSE */) {
  4258. rx = Math.max(Math.abs(x), Math.abs(x - width))
  4259. ry = Math.max(Math.abs(y), Math.abs(y - height))
  4260. }
  4261. break
  4262. case 3 /* FARTHEST_CORNER */: // Same as closest-corner, except the ending shape is sized based on the farthest corner.
  4263. // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
  4264. if (gradient.shape === 0 /* CIRCLE */) {
  4265. rx = ry = Math.max(
  4266. distance(x, y),
  4267. distance(x, y - height),
  4268. distance(x - width, y),
  4269. distance(x - width, y - height)
  4270. )
  4271. } else if (gradient.shape === 1 /* ELLIPSE */) {
  4272. // Compute the ratio ry/rx (which is to be the same as for "farthest-side")
  4273. var c =
  4274. Math.max(Math.abs(y), Math.abs(y - height)) /
  4275. Math.max(Math.abs(x), Math.abs(x - width))
  4276. var _b = findCorner(width, height, x, y, false),
  4277. cx = _b[0],
  4278. cy = _b[1]
  4279. rx = distance(cx - x, (cy - y) / c)
  4280. ry = c * rx
  4281. }
  4282. break
  4283. }
  4284. if (Array.isArray(gradient.size)) {
  4285. rx = getAbsoluteValue(gradient.size[0], width)
  4286. ry =
  4287. gradient.size.length === 2
  4288. ? getAbsoluteValue(gradient.size[1], height)
  4289. : rx
  4290. }
  4291. return [rx, ry]
  4292. }
  4293. var linearGradient = function linearGradient(context, tokens) {
  4294. var angle$1 = deg(180)
  4295. var stops = []
  4296. parseFunctionArgs(tokens).forEach(function (arg, i) {
  4297. if (i === 0) {
  4298. var firstToken = arg[0]
  4299. if (
  4300. firstToken.type === 20 /* IDENT_TOKEN */ &&
  4301. firstToken.value === 'to'
  4302. ) {
  4303. angle$1 = parseNamedSide(arg)
  4304. return
  4305. } else if (isAngle(firstToken)) {
  4306. angle$1 = angle.parse(context, firstToken)
  4307. return
  4308. }
  4309. }
  4310. var colorStop = parseColorStop(context, arg)
  4311. stops.push(colorStop)
  4312. })
  4313. return {
  4314. angle: angle$1,
  4315. stops: stops,
  4316. type: 1 /* LINEAR_GRADIENT */
  4317. }
  4318. }
  4319. var prefixLinearGradient = function prefixLinearGradient(
  4320. context,
  4321. tokens
  4322. ) {
  4323. var angle$1 = deg(180)
  4324. var stops = []
  4325. parseFunctionArgs(tokens).forEach(function (arg, i) {
  4326. if (i === 0) {
  4327. var firstToken = arg[0]
  4328. if (
  4329. firstToken.type === 20 /* IDENT_TOKEN */ &&
  4330. ['top', 'left', 'right', 'bottom'].indexOf(
  4331. firstToken.value
  4332. ) !== -1
  4333. ) {
  4334. angle$1 = parseNamedSide(arg)
  4335. return
  4336. } else if (isAngle(firstToken)) {
  4337. angle$1 =
  4338. (angle.parse(context, firstToken) + deg(270)) % deg(360)
  4339. return
  4340. }
  4341. }
  4342. var colorStop = parseColorStop(context, arg)
  4343. stops.push(colorStop)
  4344. })
  4345. return {
  4346. angle: angle$1,
  4347. stops: stops,
  4348. type: 1 /* LINEAR_GRADIENT */
  4349. }
  4350. }
  4351. var webkitGradient = function webkitGradient(context, tokens) {
  4352. var angle = deg(180)
  4353. var stops = []
  4354. var type = 1 /* LINEAR_GRADIENT */
  4355. var shape = 0 /* CIRCLE */
  4356. var size = 3 /* FARTHEST_CORNER */
  4357. var position = []
  4358. parseFunctionArgs(tokens).forEach(function (arg, i) {
  4359. var firstToken = arg[0]
  4360. if (i === 0) {
  4361. if (isIdentToken(firstToken) && firstToken.value === 'linear') {
  4362. type = 1 /* LINEAR_GRADIENT */
  4363. return
  4364. } else if (
  4365. isIdentToken(firstToken) &&
  4366. firstToken.value === 'radial'
  4367. ) {
  4368. type = 2 /* RADIAL_GRADIENT */
  4369. return
  4370. }
  4371. }
  4372. if (firstToken.type === 18 /* FUNCTION */) {
  4373. if (firstToken.name === 'from') {
  4374. var color = color$1.parse(context, firstToken.values[0])
  4375. stops.push({ stop: ZERO_LENGTH, color: color })
  4376. } else if (firstToken.name === 'to') {
  4377. var color = color$1.parse(context, firstToken.values[0])
  4378. stops.push({ stop: HUNDRED_PERCENT, color: color })
  4379. } else if (firstToken.name === 'color-stop') {
  4380. var values = firstToken.values.filter(nonFunctionArgSeparator)
  4381. if (values.length === 2) {
  4382. var color = color$1.parse(context, values[1])
  4383. var stop_1 = values[0]
  4384. if (isNumberToken(stop_1)) {
  4385. stops.push({
  4386. stop: {
  4387. type: 16 /* PERCENTAGE_TOKEN */,
  4388. number: stop_1.number * 100,
  4389. flags: stop_1.flags
  4390. },
  4391. color: color
  4392. })
  4393. }
  4394. }
  4395. }
  4396. }
  4397. })
  4398. return type === 1 /* LINEAR_GRADIENT */
  4399. ? {
  4400. angle: (angle + deg(180)) % deg(360),
  4401. stops: stops,
  4402. type: type
  4403. }
  4404. : {
  4405. size: size,
  4406. shape: shape,
  4407. stops: stops,
  4408. position: position,
  4409. type: type
  4410. }
  4411. }
  4412. var CLOSEST_SIDE = 'closest-side'
  4413. var FARTHEST_SIDE = 'farthest-side'
  4414. var CLOSEST_CORNER = 'closest-corner'
  4415. var FARTHEST_CORNER = 'farthest-corner'
  4416. var CIRCLE = 'circle'
  4417. var ELLIPSE = 'ellipse'
  4418. var COVER = 'cover'
  4419. var CONTAIN = 'contain'
  4420. var radialGradient = function radialGradient(context, tokens) {
  4421. var shape = 0 /* CIRCLE */
  4422. var size = 3 /* FARTHEST_CORNER */
  4423. var stops = []
  4424. var position = []
  4425. parseFunctionArgs(tokens).forEach(function (arg, i) {
  4426. var isColorStop = true
  4427. if (i === 0) {
  4428. var isAtPosition_1 = false
  4429. isColorStop = arg.reduce(function (acc, token) {
  4430. if (isAtPosition_1) {
  4431. if (isIdentToken(token)) {
  4432. switch (token.value) {
  4433. case 'center':
  4434. position.push(FIFTY_PERCENT)
  4435. return acc
  4436. case 'top':
  4437. case 'left':
  4438. position.push(ZERO_LENGTH)
  4439. return acc
  4440. case 'right':
  4441. case 'bottom':
  4442. position.push(HUNDRED_PERCENT)
  4443. return acc
  4444. }
  4445. } else if (isLengthPercentage(token) || isLength(token)) {
  4446. position.push(token)
  4447. }
  4448. } else if (isIdentToken(token)) {
  4449. switch (token.value) {
  4450. case CIRCLE:
  4451. shape = 0 /* CIRCLE */
  4452. return false
  4453. case ELLIPSE:
  4454. shape = 1 /* ELLIPSE */
  4455. return false
  4456. case 'at':
  4457. isAtPosition_1 = true
  4458. return false
  4459. case CLOSEST_SIDE:
  4460. size = 0 /* CLOSEST_SIDE */
  4461. return false
  4462. case COVER:
  4463. case FARTHEST_SIDE:
  4464. size = 1 /* FARTHEST_SIDE */
  4465. return false
  4466. case CONTAIN:
  4467. case CLOSEST_CORNER:
  4468. size = 2 /* CLOSEST_CORNER */
  4469. return false
  4470. case FARTHEST_CORNER:
  4471. size = 3 /* FARTHEST_CORNER */
  4472. return false
  4473. }
  4474. } else if (isLength(token) || isLengthPercentage(token)) {
  4475. if (!Array.isArray(size)) {
  4476. size = []
  4477. }
  4478. size.push(token)
  4479. return false
  4480. }
  4481. return acc
  4482. }, isColorStop)
  4483. }
  4484. if (isColorStop) {
  4485. var colorStop = parseColorStop(context, arg)
  4486. stops.push(colorStop)
  4487. }
  4488. })
  4489. return {
  4490. size: size,
  4491. shape: shape,
  4492. stops: stops,
  4493. position: position,
  4494. type: 2 /* RADIAL_GRADIENT */
  4495. }
  4496. }
  4497. var prefixRadialGradient = function prefixRadialGradient(
  4498. context,
  4499. tokens
  4500. ) {
  4501. var shape = 0 /* CIRCLE */
  4502. var size = 3 /* FARTHEST_CORNER */
  4503. var stops = []
  4504. var position = []
  4505. parseFunctionArgs(tokens).forEach(function (arg, i) {
  4506. var isColorStop = true
  4507. if (i === 0) {
  4508. isColorStop = arg.reduce(function (acc, token) {
  4509. if (isIdentToken(token)) {
  4510. switch (token.value) {
  4511. case 'center':
  4512. position.push(FIFTY_PERCENT)
  4513. return false
  4514. case 'top':
  4515. case 'left':
  4516. position.push(ZERO_LENGTH)
  4517. return false
  4518. case 'right':
  4519. case 'bottom':
  4520. position.push(HUNDRED_PERCENT)
  4521. return false
  4522. }
  4523. } else if (isLengthPercentage(token) || isLength(token)) {
  4524. position.push(token)
  4525. return false
  4526. }
  4527. return acc
  4528. }, isColorStop)
  4529. } else if (i === 1) {
  4530. isColorStop = arg.reduce(function (acc, token) {
  4531. if (isIdentToken(token)) {
  4532. switch (token.value) {
  4533. case CIRCLE:
  4534. shape = 0 /* CIRCLE */
  4535. return false
  4536. case ELLIPSE:
  4537. shape = 1 /* ELLIPSE */
  4538. return false
  4539. case CONTAIN:
  4540. case CLOSEST_SIDE:
  4541. size = 0 /* CLOSEST_SIDE */
  4542. return false
  4543. case FARTHEST_SIDE:
  4544. size = 1 /* FARTHEST_SIDE */
  4545. return false
  4546. case CLOSEST_CORNER:
  4547. size = 2 /* CLOSEST_CORNER */
  4548. return false
  4549. case COVER:
  4550. case FARTHEST_CORNER:
  4551. size = 3 /* FARTHEST_CORNER */
  4552. return false
  4553. }
  4554. } else if (isLength(token) || isLengthPercentage(token)) {
  4555. if (!Array.isArray(size)) {
  4556. size = []
  4557. }
  4558. size.push(token)
  4559. return false
  4560. }
  4561. return acc
  4562. }, isColorStop)
  4563. }
  4564. if (isColorStop) {
  4565. var colorStop = parseColorStop(context, arg)
  4566. stops.push(colorStop)
  4567. }
  4568. })
  4569. return {
  4570. size: size,
  4571. shape: shape,
  4572. stops: stops,
  4573. position: position,
  4574. type: 2 /* RADIAL_GRADIENT */
  4575. }
  4576. }
  4577. var isLinearGradient = function isLinearGradient(background) {
  4578. return background.type === 1 /* LINEAR_GRADIENT */
  4579. }
  4580. var isRadialGradient = function isRadialGradient(background) {
  4581. return background.type === 2 /* RADIAL_GRADIENT */
  4582. }
  4583. var image = {
  4584. name: 'image',
  4585. parse: function parse(context, value) {
  4586. if (value.type === 22 /* URL_TOKEN */) {
  4587. var image_1 = { url: value.value, type: 0 /* URL */ }
  4588. context.cache.addImage(value.value)
  4589. return image_1
  4590. }
  4591. if (value.type === 18 /* FUNCTION */) {
  4592. var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name]
  4593. if (typeof imageFunction === 'undefined') {
  4594. throw new Error(
  4595. 'Attempting to parse an unsupported image function "' +
  4596. value.name +
  4597. '"'
  4598. )
  4599. }
  4600. return imageFunction(context, value.values)
  4601. }
  4602. throw new Error('Unsupported image type ' + value.type)
  4603. }
  4604. }
  4605. function isSupportedImage(value) {
  4606. return (
  4607. !(
  4608. value.type === 20 /* IDENT_TOKEN */ && value.value === 'none'
  4609. ) &&
  4610. (value.type !== 18 /* FUNCTION */ ||
  4611. !!SUPPORTED_IMAGE_FUNCTIONS[value.name])
  4612. )
  4613. }
  4614. var SUPPORTED_IMAGE_FUNCTIONS = {
  4615. 'linear-gradient': linearGradient,
  4616. '-moz-linear-gradient': prefixLinearGradient,
  4617. '-ms-linear-gradient': prefixLinearGradient,
  4618. '-o-linear-gradient': prefixLinearGradient,
  4619. '-webkit-linear-gradient': prefixLinearGradient,
  4620. 'radial-gradient': radialGradient,
  4621. '-moz-radial-gradient': prefixRadialGradient,
  4622. '-ms-radial-gradient': prefixRadialGradient,
  4623. '-o-radial-gradient': prefixRadialGradient,
  4624. '-webkit-radial-gradient': prefixRadialGradient,
  4625. '-webkit-gradient': webkitGradient
  4626. }
  4627. var backgroundImage = {
  4628. name: 'background-image',
  4629. initialValue: 'none',
  4630. type: 1 /* LIST */,
  4631. prefix: false,
  4632. parse: function parse(context, tokens) {
  4633. if (tokens.length === 0) {
  4634. return []
  4635. }
  4636. var first = tokens[0]
  4637. if (
  4638. first.type === 20 /* IDENT_TOKEN */ &&
  4639. first.value === 'none'
  4640. ) {
  4641. return []
  4642. }
  4643. return tokens
  4644. .filter(function (value) {
  4645. return (
  4646. nonFunctionArgSeparator(value) && isSupportedImage(value)
  4647. )
  4648. })
  4649. .map(function (value) {
  4650. return image.parse(context, value)
  4651. })
  4652. }
  4653. }
  4654. var backgroundOrigin = {
  4655. name: 'background-origin',
  4656. initialValue: 'border-box',
  4657. prefix: false,
  4658. type: 1 /* LIST */,
  4659. parse: function parse(_context, tokens) {
  4660. return tokens.map(function (token) {
  4661. if (isIdentToken(token)) {
  4662. switch (token.value) {
  4663. case 'padding-box':
  4664. return 1 /* PADDING_BOX */
  4665. case 'content-box':
  4666. return 2 /* CONTENT_BOX */
  4667. }
  4668. }
  4669. return 0 /* BORDER_BOX */
  4670. })
  4671. }
  4672. }
  4673. var backgroundPosition = {
  4674. name: 'background-position',
  4675. initialValue: '0% 0%',
  4676. type: 1 /* LIST */,
  4677. prefix: false,
  4678. parse: function parse(_context, tokens) {
  4679. return parseFunctionArgs(tokens)
  4680. .map(function (values) {
  4681. return values.filter(isLengthPercentage)
  4682. })
  4683. .map(parseLengthPercentageTuple)
  4684. }
  4685. }
  4686. var backgroundRepeat = {
  4687. name: 'background-repeat',
  4688. initialValue: 'repeat',
  4689. prefix: false,
  4690. type: 1 /* LIST */,
  4691. parse: function parse(_context, tokens) {
  4692. return parseFunctionArgs(tokens)
  4693. .map(function (values) {
  4694. return values
  4695. .filter(isIdentToken)
  4696. .map(function (token) {
  4697. return token.value
  4698. })
  4699. .join(' ')
  4700. })
  4701. .map(parseBackgroundRepeat)
  4702. }
  4703. }
  4704. var parseBackgroundRepeat = function parseBackgroundRepeat(value) {
  4705. switch (value) {
  4706. case 'no-repeat':
  4707. return 1 /* NO_REPEAT */
  4708. case 'repeat-x':
  4709. case 'repeat no-repeat':
  4710. return 2 /* REPEAT_X */
  4711. case 'repeat-y':
  4712. case 'no-repeat repeat':
  4713. return 3 /* REPEAT_Y */
  4714. case 'repeat':
  4715. default:
  4716. return 0 /* REPEAT */
  4717. }
  4718. }
  4719. var BACKGROUND_SIZE
  4720. ;(function (BACKGROUND_SIZE) {
  4721. BACKGROUND_SIZE['AUTO'] = 'auto'
  4722. BACKGROUND_SIZE['CONTAIN'] = 'contain'
  4723. BACKGROUND_SIZE['COVER'] = 'cover'
  4724. })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}))
  4725. var backgroundSize = {
  4726. name: 'background-size',
  4727. initialValue: '0',
  4728. prefix: false,
  4729. type: 1 /* LIST */,
  4730. parse: function parse(_context, tokens) {
  4731. return parseFunctionArgs(tokens).map(function (values) {
  4732. return values.filter(isBackgroundSizeInfoToken)
  4733. })
  4734. }
  4735. }
  4736. var isBackgroundSizeInfoToken = function isBackgroundSizeInfoToken(
  4737. value
  4738. ) {
  4739. return isIdentToken(value) || isLengthPercentage(value)
  4740. }
  4741. var borderColorForSide = function borderColorForSide(side) {
  4742. return {
  4743. name: 'border-' + side + '-color',
  4744. initialValue: 'transparent',
  4745. prefix: false,
  4746. type: 3 /* TYPE_VALUE */,
  4747. format: 'color'
  4748. }
  4749. }
  4750. var borderTopColor = borderColorForSide('top')
  4751. var borderRightColor = borderColorForSide('right')
  4752. var borderBottomColor = borderColorForSide('bottom')
  4753. var borderLeftColor = borderColorForSide('left')
  4754. var borderRadiusForSide = function borderRadiusForSide(side) {
  4755. return {
  4756. name: 'border-radius-' + side,
  4757. initialValue: '0 0',
  4758. prefix: false,
  4759. type: 1 /* LIST */,
  4760. parse: function parse(_context, tokens) {
  4761. return parseLengthPercentageTuple(
  4762. tokens.filter(isLengthPercentage)
  4763. )
  4764. }
  4765. }
  4766. }
  4767. var borderTopLeftRadius = borderRadiusForSide('top-left')
  4768. var borderTopRightRadius = borderRadiusForSide('top-right')
  4769. var borderBottomRightRadius = borderRadiusForSide('bottom-right')
  4770. var borderBottomLeftRadius = borderRadiusForSide('bottom-left')
  4771. var borderStyleForSide = function borderStyleForSide(side) {
  4772. return {
  4773. name: 'border-' + side + '-style',
  4774. initialValue: 'solid',
  4775. prefix: false,
  4776. type: 2 /* IDENT_VALUE */,
  4777. parse: function parse(_context, style) {
  4778. switch (style) {
  4779. case 'none':
  4780. return 0 /* NONE */
  4781. case 'dashed':
  4782. return 2 /* DASHED */
  4783. case 'dotted':
  4784. return 3 /* DOTTED */
  4785. case 'double':
  4786. return 4 /* DOUBLE */
  4787. }
  4788. return 1 /* SOLID */
  4789. }
  4790. }
  4791. }
  4792. var borderTopStyle = borderStyleForSide('top')
  4793. var borderRightStyle = borderStyleForSide('right')
  4794. var borderBottomStyle = borderStyleForSide('bottom')
  4795. var borderLeftStyle = borderStyleForSide('left')
  4796. var borderWidthForSide = function borderWidthForSide(side) {
  4797. return {
  4798. name: 'border-' + side + '-width',
  4799. initialValue: '0',
  4800. type: 0 /* VALUE */,
  4801. prefix: false,
  4802. parse: function parse(_context, token) {
  4803. if (isDimensionToken(token)) {
  4804. return token.number
  4805. }
  4806. return 0
  4807. }
  4808. }
  4809. }
  4810. var borderTopWidth = borderWidthForSide('top')
  4811. var borderRightWidth = borderWidthForSide('right')
  4812. var borderBottomWidth = borderWidthForSide('bottom')
  4813. var borderLeftWidth = borderWidthForSide('left')
  4814. var color = {
  4815. name: 'color',
  4816. initialValue: 'transparent',
  4817. prefix: false,
  4818. type: 3 /* TYPE_VALUE */,
  4819. format: 'color'
  4820. }
  4821. var direction = {
  4822. name: 'direction',
  4823. initialValue: 'ltr',
  4824. prefix: false,
  4825. type: 2 /* IDENT_VALUE */,
  4826. parse: function parse(_context, direction) {
  4827. switch (direction) {
  4828. case 'rtl':
  4829. return 1 /* RTL */
  4830. case 'ltr':
  4831. default:
  4832. return 0 /* LTR */
  4833. }
  4834. }
  4835. }
  4836. var display = {
  4837. name: 'display',
  4838. initialValue: 'inline-block',
  4839. prefix: false,
  4840. type: 1 /* LIST */,
  4841. parse: function parse(_context, tokens) {
  4842. return tokens.filter(isIdentToken).reduce(function (bit, token) {
  4843. return bit | parseDisplayValue(token.value)
  4844. }, 0 /* NONE */)
  4845. }
  4846. }
  4847. var parseDisplayValue = function parseDisplayValue(display) {
  4848. switch (display) {
  4849. case 'block':
  4850. case '-webkit-box':
  4851. return 2 /* BLOCK */
  4852. case 'inline':
  4853. return 4 /* INLINE */
  4854. case 'run-in':
  4855. return 8 /* RUN_IN */
  4856. case 'flow':
  4857. return 16 /* FLOW */
  4858. case 'flow-root':
  4859. return 32 /* FLOW_ROOT */
  4860. case 'table':
  4861. return 64 /* TABLE */
  4862. case 'flex':
  4863. case '-webkit-flex':
  4864. return 128 /* FLEX */
  4865. case 'grid':
  4866. case '-ms-grid':
  4867. return 256 /* GRID */
  4868. case 'ruby':
  4869. return 512 /* RUBY */
  4870. case 'subgrid':
  4871. return 1024 /* SUBGRID */
  4872. case 'list-item':
  4873. return 2048 /* LIST_ITEM */
  4874. case 'table-row-group':
  4875. return 4096 /* TABLE_ROW_GROUP */
  4876. case 'table-header-group':
  4877. return 8192 /* TABLE_HEADER_GROUP */
  4878. case 'table-footer-group':
  4879. return 16384 /* TABLE_FOOTER_GROUP */
  4880. case 'table-row':
  4881. return 32768 /* TABLE_ROW */
  4882. case 'table-cell':
  4883. return 65536 /* TABLE_CELL */
  4884. case 'table-column-group':
  4885. return 131072 /* TABLE_COLUMN_GROUP */
  4886. case 'table-column':
  4887. return 262144 /* TABLE_COLUMN */
  4888. case 'table-caption':
  4889. return 524288 /* TABLE_CAPTION */
  4890. case 'ruby-base':
  4891. return 1048576 /* RUBY_BASE */
  4892. case 'ruby-text':
  4893. return 2097152 /* RUBY_TEXT */
  4894. case 'ruby-base-container':
  4895. return 4194304 /* RUBY_BASE_CONTAINER */
  4896. case 'ruby-text-container':
  4897. return 8388608 /* RUBY_TEXT_CONTAINER */
  4898. case 'contents':
  4899. return 16777216 /* CONTENTS */
  4900. case 'inline-block':
  4901. return 33554432 /* INLINE_BLOCK */
  4902. case 'inline-list-item':
  4903. return 67108864 /* INLINE_LIST_ITEM */
  4904. case 'inline-table':
  4905. return 134217728 /* INLINE_TABLE */
  4906. case 'inline-flex':
  4907. return 268435456 /* INLINE_FLEX */
  4908. case 'inline-grid':
  4909. return 536870912 /* INLINE_GRID */
  4910. }
  4911. return 0 /* NONE */
  4912. }
  4913. var float = {
  4914. name: 'float',
  4915. initialValue: 'none',
  4916. prefix: false,
  4917. type: 2 /* IDENT_VALUE */,
  4918. parse: function parse(_context, float) {
  4919. switch (float) {
  4920. case 'left':
  4921. return 1 /* LEFT */
  4922. case 'right':
  4923. return 2 /* RIGHT */
  4924. case 'inline-start':
  4925. return 3 /* INLINE_START */
  4926. case 'inline-end':
  4927. return 4 /* INLINE_END */
  4928. }
  4929. return 0 /* NONE */
  4930. }
  4931. }
  4932. var letterSpacing = {
  4933. name: 'letter-spacing',
  4934. initialValue: '0',
  4935. prefix: false,
  4936. type: 0 /* VALUE */,
  4937. parse: function parse(_context, token) {
  4938. if (
  4939. token.type === 20 /* IDENT_TOKEN */ &&
  4940. token.value === 'normal'
  4941. ) {
  4942. return 0
  4943. }
  4944. if (token.type === 17 /* NUMBER_TOKEN */) {
  4945. return token.number
  4946. }
  4947. if (token.type === 15 /* DIMENSION_TOKEN */) {
  4948. return token.number
  4949. }
  4950. return 0
  4951. }
  4952. }
  4953. var LINE_BREAK
  4954. ;(function (LINE_BREAK) {
  4955. LINE_BREAK['NORMAL'] = 'normal'
  4956. LINE_BREAK['STRICT'] = 'strict'
  4957. })(LINE_BREAK || (LINE_BREAK = {}))
  4958. var lineBreak = {
  4959. name: 'line-break',
  4960. initialValue: 'normal',
  4961. prefix: false,
  4962. type: 2 /* IDENT_VALUE */,
  4963. parse: function parse(_context, lineBreak) {
  4964. switch (lineBreak) {
  4965. case 'strict':
  4966. return LINE_BREAK.STRICT
  4967. case 'normal':
  4968. default:
  4969. return LINE_BREAK.NORMAL
  4970. }
  4971. }
  4972. }
  4973. var lineHeight = {
  4974. name: 'line-height',
  4975. initialValue: 'normal',
  4976. prefix: false,
  4977. type: 4 /* TOKEN_VALUE */
  4978. }
  4979. var computeLineHeight = function computeLineHeight(token, fontSize) {
  4980. if (isIdentToken(token) && token.value === 'normal') {
  4981. return 1.2 * fontSize
  4982. } else if (token.type === 17 /* NUMBER_TOKEN */) {
  4983. return fontSize * token.number
  4984. } else if (isLengthPercentage(token)) {
  4985. return getAbsoluteValue(token, fontSize)
  4986. }
  4987. return fontSize
  4988. }
  4989. var listStyleImage = {
  4990. name: 'list-style-image',
  4991. initialValue: 'none',
  4992. type: 0 /* VALUE */,
  4993. prefix: false,
  4994. parse: function parse(context, token) {
  4995. if (
  4996. token.type === 20 /* IDENT_TOKEN */ &&
  4997. token.value === 'none'
  4998. ) {
  4999. return null
  5000. }
  5001. return image.parse(context, token)
  5002. }
  5003. }
  5004. var listStylePosition = {
  5005. name: 'list-style-position',
  5006. initialValue: 'outside',
  5007. prefix: false,
  5008. type: 2 /* IDENT_VALUE */,
  5009. parse: function parse(_context, position) {
  5010. switch (position) {
  5011. case 'inside':
  5012. return 0 /* INSIDE */
  5013. case 'outside':
  5014. default:
  5015. return 1 /* OUTSIDE */
  5016. }
  5017. }
  5018. }
  5019. var listStyleType = {
  5020. name: 'list-style-type',
  5021. initialValue: 'none',
  5022. prefix: false,
  5023. type: 2 /* IDENT_VALUE */,
  5024. parse: function parse(_context, type) {
  5025. switch (type) {
  5026. case 'disc':
  5027. return 0 /* DISC */
  5028. case 'circle':
  5029. return 1 /* CIRCLE */
  5030. case 'square':
  5031. return 2 /* SQUARE */
  5032. case 'decimal':
  5033. return 3 /* DECIMAL */
  5034. case 'cjk-decimal':
  5035. return 4 /* CJK_DECIMAL */
  5036. case 'decimal-leading-zero':
  5037. return 5 /* DECIMAL_LEADING_ZERO */
  5038. case 'lower-roman':
  5039. return 6 /* LOWER_ROMAN */
  5040. case 'upper-roman':
  5041. return 7 /* UPPER_ROMAN */
  5042. case 'lower-greek':
  5043. return 8 /* LOWER_GREEK */
  5044. case 'lower-alpha':
  5045. return 9 /* LOWER_ALPHA */
  5046. case 'upper-alpha':
  5047. return 10 /* UPPER_ALPHA */
  5048. case 'arabic-indic':
  5049. return 11 /* ARABIC_INDIC */
  5050. case 'armenian':
  5051. return 12 /* ARMENIAN */
  5052. case 'bengali':
  5053. return 13 /* BENGALI */
  5054. case 'cambodian':
  5055. return 14 /* CAMBODIAN */
  5056. case 'cjk-earthly-branch':
  5057. return 15 /* CJK_EARTHLY_BRANCH */
  5058. case 'cjk-heavenly-stem':
  5059. return 16 /* CJK_HEAVENLY_STEM */
  5060. case 'cjk-ideographic':
  5061. return 17 /* CJK_IDEOGRAPHIC */
  5062. case 'devanagari':
  5063. return 18 /* DEVANAGARI */
  5064. case 'ethiopic-numeric':
  5065. return 19 /* ETHIOPIC_NUMERIC */
  5066. case 'georgian':
  5067. return 20 /* GEORGIAN */
  5068. case 'gujarati':
  5069. return 21 /* GUJARATI */
  5070. case 'gurmukhi':
  5071. return 22 /* GURMUKHI */
  5072. case 'hebrew':
  5073. return 22 /* HEBREW */
  5074. case 'hiragana':
  5075. return 23 /* HIRAGANA */
  5076. case 'hiragana-iroha':
  5077. return 24 /* HIRAGANA_IROHA */
  5078. case 'japanese-formal':
  5079. return 25 /* JAPANESE_FORMAL */
  5080. case 'japanese-informal':
  5081. return 26 /* JAPANESE_INFORMAL */
  5082. case 'kannada':
  5083. return 27 /* KANNADA */
  5084. case 'katakana':
  5085. return 28 /* KATAKANA */
  5086. case 'katakana-iroha':
  5087. return 29 /* KATAKANA_IROHA */
  5088. case 'khmer':
  5089. return 30 /* KHMER */
  5090. case 'korean-hangul-formal':
  5091. return 31 /* KOREAN_HANGUL_FORMAL */
  5092. case 'korean-hanja-formal':
  5093. return 32 /* KOREAN_HANJA_FORMAL */
  5094. case 'korean-hanja-informal':
  5095. return 33 /* KOREAN_HANJA_INFORMAL */
  5096. case 'lao':
  5097. return 34 /* LAO */
  5098. case 'lower-armenian':
  5099. return 35 /* LOWER_ARMENIAN */
  5100. case 'malayalam':
  5101. return 36 /* MALAYALAM */
  5102. case 'mongolian':
  5103. return 37 /* MONGOLIAN */
  5104. case 'myanmar':
  5105. return 38 /* MYANMAR */
  5106. case 'oriya':
  5107. return 39 /* ORIYA */
  5108. case 'persian':
  5109. return 40 /* PERSIAN */
  5110. case 'simp-chinese-formal':
  5111. return 41 /* SIMP_CHINESE_FORMAL */
  5112. case 'simp-chinese-informal':
  5113. return 42 /* SIMP_CHINESE_INFORMAL */
  5114. case 'tamil':
  5115. return 43 /* TAMIL */
  5116. case 'telugu':
  5117. return 44 /* TELUGU */
  5118. case 'thai':
  5119. return 45 /* THAI */
  5120. case 'tibetan':
  5121. return 46 /* TIBETAN */
  5122. case 'trad-chinese-formal':
  5123. return 47 /* TRAD_CHINESE_FORMAL */
  5124. case 'trad-chinese-informal':
  5125. return 48 /* TRAD_CHINESE_INFORMAL */
  5126. case 'upper-armenian':
  5127. return 49 /* UPPER_ARMENIAN */
  5128. case 'disclosure-open':
  5129. return 50 /* DISCLOSURE_OPEN */
  5130. case 'disclosure-closed':
  5131. return 51 /* DISCLOSURE_CLOSED */
  5132. case 'none':
  5133. default:
  5134. return -1 /* NONE */
  5135. }
  5136. }
  5137. }
  5138. var marginForSide = function marginForSide(side) {
  5139. return {
  5140. name: 'margin-' + side,
  5141. initialValue: '0',
  5142. prefix: false,
  5143. type: 4 /* TOKEN_VALUE */
  5144. }
  5145. }
  5146. var marginTop = marginForSide('top')
  5147. var marginRight = marginForSide('right')
  5148. var marginBottom = marginForSide('bottom')
  5149. var marginLeft = marginForSide('left')
  5150. var overflow = {
  5151. name: 'overflow',
  5152. initialValue: 'visible',
  5153. prefix: false,
  5154. type: 1 /* LIST */,
  5155. parse: function parse(_context, tokens) {
  5156. return tokens.filter(isIdentToken).map(function (overflow) {
  5157. switch (overflow.value) {
  5158. case 'hidden':
  5159. return 1 /* HIDDEN */
  5160. case 'scroll':
  5161. return 2 /* SCROLL */
  5162. case 'clip':
  5163. return 3 /* CLIP */
  5164. case 'auto':
  5165. return 4 /* AUTO */
  5166. case 'visible':
  5167. default:
  5168. return 0 /* VISIBLE */
  5169. }
  5170. })
  5171. }
  5172. }
  5173. var overflowWrap = {
  5174. name: 'overflow-wrap',
  5175. initialValue: 'normal',
  5176. prefix: false,
  5177. type: 2 /* IDENT_VALUE */,
  5178. parse: function parse(_context, overflow) {
  5179. switch (overflow) {
  5180. case 'break-word':
  5181. return 'break-word' /* BREAK_WORD */
  5182. case 'normal':
  5183. default:
  5184. return 'normal' /* NORMAL */
  5185. }
  5186. }
  5187. }
  5188. var paddingForSide = function paddingForSide(side) {
  5189. return {
  5190. name: 'padding-' + side,
  5191. initialValue: '0',
  5192. prefix: false,
  5193. type: 3 /* TYPE_VALUE */,
  5194. format: 'length-percentage'
  5195. }
  5196. }
  5197. var paddingTop = paddingForSide('top')
  5198. var paddingRight = paddingForSide('right')
  5199. var paddingBottom = paddingForSide('bottom')
  5200. var paddingLeft = paddingForSide('left')
  5201. var textAlign = {
  5202. name: 'text-align',
  5203. initialValue: 'left',
  5204. prefix: false,
  5205. type: 2 /* IDENT_VALUE */,
  5206. parse: function parse(_context, textAlign) {
  5207. switch (textAlign) {
  5208. case 'right':
  5209. return 2 /* RIGHT */
  5210. case 'center':
  5211. case 'justify':
  5212. return 1 /* CENTER */
  5213. case 'left':
  5214. default:
  5215. return 0 /* LEFT */
  5216. }
  5217. }
  5218. }
  5219. var position = {
  5220. name: 'position',
  5221. initialValue: 'static',
  5222. prefix: false,
  5223. type: 2 /* IDENT_VALUE */,
  5224. parse: function parse(_context, position) {
  5225. switch (position) {
  5226. case 'relative':
  5227. return 1 /* RELATIVE */
  5228. case 'absolute':
  5229. return 2 /* ABSOLUTE */
  5230. case 'fixed':
  5231. return 3 /* FIXED */
  5232. case 'sticky':
  5233. return 4 /* STICKY */
  5234. }
  5235. return 0 /* STATIC */
  5236. }
  5237. }
  5238. var textShadow = {
  5239. name: 'text-shadow',
  5240. initialValue: 'none',
  5241. type: 1 /* LIST */,
  5242. prefix: false,
  5243. parse: function parse(context, tokens) {
  5244. if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
  5245. return []
  5246. }
  5247. return parseFunctionArgs(tokens).map(function (values) {
  5248. var shadow = {
  5249. color: COLORS.TRANSPARENT,
  5250. offsetX: ZERO_LENGTH,
  5251. offsetY: ZERO_LENGTH,
  5252. blur: ZERO_LENGTH
  5253. }
  5254. var c = 0
  5255. for (var i = 0; i < values.length; i++) {
  5256. var token = values[i]
  5257. if (isLength(token)) {
  5258. if (c === 0) {
  5259. shadow.offsetX = token
  5260. } else if (c === 1) {
  5261. shadow.offsetY = token
  5262. } else {
  5263. shadow.blur = token
  5264. }
  5265. c++
  5266. } else {
  5267. shadow.color = color$1.parse(context, token)
  5268. }
  5269. }
  5270. return shadow
  5271. })
  5272. }
  5273. }
  5274. var textTransform = {
  5275. name: 'text-transform',
  5276. initialValue: 'none',
  5277. prefix: false,
  5278. type: 2 /* IDENT_VALUE */,
  5279. parse: function parse(_context, textTransform) {
  5280. switch (textTransform) {
  5281. case 'uppercase':
  5282. return 2 /* UPPERCASE */
  5283. case 'lowercase':
  5284. return 1 /* LOWERCASE */
  5285. case 'capitalize':
  5286. return 3 /* CAPITALIZE */
  5287. }
  5288. return 0 /* NONE */
  5289. }
  5290. }
  5291. var transform$1 = {
  5292. name: 'transform',
  5293. initialValue: 'none',
  5294. prefix: true,
  5295. type: 0 /* VALUE */,
  5296. parse: function parse(_context, token) {
  5297. if (
  5298. token.type === 20 /* IDENT_TOKEN */ &&
  5299. token.value === 'none'
  5300. ) {
  5301. return null
  5302. }
  5303. if (token.type === 18 /* FUNCTION */) {
  5304. var transformFunction =
  5305. SUPPORTED_TRANSFORM_FUNCTIONS[token.name]
  5306. if (typeof transformFunction === 'undefined') {
  5307. throw new Error(
  5308. 'Attempting to parse an unsupported transform function "' +
  5309. token.name +
  5310. '"'
  5311. )
  5312. }
  5313. return transformFunction(token.values)
  5314. }
  5315. return null
  5316. }
  5317. }
  5318. var matrix = function matrix(args) {
  5319. var values = args
  5320. .filter(function (arg) {
  5321. return arg.type === 17 /* NUMBER_TOKEN */
  5322. })
  5323. .map(function (arg) {
  5324. return arg.number
  5325. })
  5326. return values.length === 6 ? values : null
  5327. } // doesn't support 3D transforms at the moment
  5328. var matrix3d = function matrix3d(args) {
  5329. var values = args
  5330. .filter(function (arg) {
  5331. return arg.type === 17 /* NUMBER_TOKEN */
  5332. })
  5333. .map(function (arg) {
  5334. return arg.number
  5335. })
  5336. var a1 = values[0],
  5337. b1 = values[1]
  5338. values[2]
  5339. values[3]
  5340. var a2 = values[4],
  5341. b2 = values[5]
  5342. values[6]
  5343. values[7]
  5344. values[8]
  5345. values[9]
  5346. values[10]
  5347. values[11]
  5348. var a4 = values[12],
  5349. b4 = values[13]
  5350. values[14]
  5351. values[15]
  5352. return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null
  5353. }
  5354. var SUPPORTED_TRANSFORM_FUNCTIONS = {
  5355. matrix: matrix,
  5356. matrix3d: matrix3d
  5357. }
  5358. var DEFAULT_VALUE = {
  5359. type: 16 /* PERCENTAGE_TOKEN */,
  5360. number: 50,
  5361. flags: FLAG_INTEGER
  5362. }
  5363. var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE]
  5364. var transformOrigin = {
  5365. name: 'transform-origin',
  5366. initialValue: '50% 50%',
  5367. prefix: true,
  5368. type: 1 /* LIST */,
  5369. parse: function parse(_context, tokens) {
  5370. var origins = tokens.filter(isLengthPercentage)
  5371. if (origins.length !== 2) {
  5372. return DEFAULT
  5373. }
  5374. return [origins[0], origins[1]]
  5375. }
  5376. }
  5377. var visibility = {
  5378. name: 'visible',
  5379. initialValue: 'none',
  5380. prefix: false,
  5381. type: 2 /* IDENT_VALUE */,
  5382. parse: function parse(_context, visibility) {
  5383. switch (visibility) {
  5384. case 'hidden':
  5385. return 1 /* HIDDEN */
  5386. case 'collapse':
  5387. return 2 /* COLLAPSE */
  5388. case 'visible':
  5389. default:
  5390. return 0 /* VISIBLE */
  5391. }
  5392. }
  5393. }
  5394. var WORD_BREAK
  5395. ;(function (WORD_BREAK) {
  5396. WORD_BREAK['NORMAL'] = 'normal'
  5397. WORD_BREAK['BREAK_ALL'] = 'break-all'
  5398. WORD_BREAK['KEEP_ALL'] = 'keep-all'
  5399. })(WORD_BREAK || (WORD_BREAK = {}))
  5400. var wordBreak = {
  5401. name: 'word-break',
  5402. initialValue: 'normal',
  5403. prefix: false,
  5404. type: 2 /* IDENT_VALUE */,
  5405. parse: function parse(_context, wordBreak) {
  5406. switch (wordBreak) {
  5407. case 'break-all':
  5408. return WORD_BREAK.BREAK_ALL
  5409. case 'keep-all':
  5410. return WORD_BREAK.KEEP_ALL
  5411. case 'normal':
  5412. default:
  5413. return WORD_BREAK.NORMAL
  5414. }
  5415. }
  5416. }
  5417. var zIndex = {
  5418. name: 'z-index',
  5419. initialValue: 'auto',
  5420. prefix: false,
  5421. type: 0 /* VALUE */,
  5422. parse: function parse(_context, token) {
  5423. if (token.type === 20 /* IDENT_TOKEN */) {
  5424. return { auto: true, order: 0 }
  5425. }
  5426. if (isNumberToken(token)) {
  5427. return { auto: false, order: token.number }
  5428. }
  5429. throw new Error('Invalid z-index number parsed')
  5430. }
  5431. }
  5432. var time = {
  5433. name: 'time',
  5434. parse: function parse(_context, value) {
  5435. if (value.type === 15 /* DIMENSION_TOKEN */) {
  5436. switch (value.unit.toLowerCase()) {
  5437. case 's':
  5438. return 1000 * value.number
  5439. case 'ms':
  5440. return value.number
  5441. }
  5442. }
  5443. throw new Error('Unsupported time type')
  5444. }
  5445. }
  5446. var opacity = {
  5447. name: 'opacity',
  5448. initialValue: '1',
  5449. type: 0 /* VALUE */,
  5450. prefix: false,
  5451. parse: function parse(_context, token) {
  5452. if (isNumberToken(token)) {
  5453. return token.number
  5454. }
  5455. return 1
  5456. }
  5457. }
  5458. var textDecorationColor = {
  5459. name: 'text-decoration-color',
  5460. initialValue: 'transparent',
  5461. prefix: false,
  5462. type: 3 /* TYPE_VALUE */,
  5463. format: 'color'
  5464. }
  5465. var textDecorationLine = {
  5466. name: 'text-decoration-line',
  5467. initialValue: 'none',
  5468. prefix: false,
  5469. type: 1 /* LIST */,
  5470. parse: function parse(_context, tokens) {
  5471. return tokens
  5472. .filter(isIdentToken)
  5473. .map(function (token) {
  5474. switch (token.value) {
  5475. case 'underline':
  5476. return 1 /* UNDERLINE */
  5477. case 'overline':
  5478. return 2 /* OVERLINE */
  5479. case 'line-through':
  5480. return 3 /* LINE_THROUGH */
  5481. case 'none':
  5482. return 4 /* BLINK */
  5483. }
  5484. return 0 /* NONE */
  5485. })
  5486. .filter(function (line) {
  5487. return line !== 0 /* NONE */
  5488. })
  5489. }
  5490. }
  5491. var fontFamily = {
  5492. name: 'font-family',
  5493. initialValue: '',
  5494. prefix: false,
  5495. type: 1 /* LIST */,
  5496. parse: function parse(_context, tokens) {
  5497. var accumulator = []
  5498. var results = []
  5499. tokens.forEach(function (token) {
  5500. switch (token.type) {
  5501. case 20 /* IDENT_TOKEN */:
  5502. case 0 /* STRING_TOKEN */:
  5503. accumulator.push(token.value)
  5504. break
  5505. case 17 /* NUMBER_TOKEN */:
  5506. accumulator.push(token.number.toString())
  5507. break
  5508. case 4 /* COMMA_TOKEN */:
  5509. results.push(accumulator.join(' '))
  5510. accumulator.length = 0
  5511. break
  5512. }
  5513. })
  5514. if (accumulator.length) {
  5515. results.push(accumulator.join(' '))
  5516. }
  5517. return results.map(function (result) {
  5518. return result.indexOf(' ') === -1 ? result : "'" + result + "'"
  5519. })
  5520. }
  5521. }
  5522. var fontSize = {
  5523. name: 'font-size',
  5524. initialValue: '0',
  5525. prefix: false,
  5526. type: 3 /* TYPE_VALUE */,
  5527. format: 'length'
  5528. }
  5529. var fontWeight = {
  5530. name: 'font-weight',
  5531. initialValue: 'normal',
  5532. type: 0 /* VALUE */,
  5533. prefix: false,
  5534. parse: function parse(_context, token) {
  5535. if (isNumberToken(token)) {
  5536. return token.number
  5537. }
  5538. if (isIdentToken(token)) {
  5539. switch (token.value) {
  5540. case 'bold':
  5541. return 700
  5542. case 'normal':
  5543. default:
  5544. return 400
  5545. }
  5546. }
  5547. return 400
  5548. }
  5549. }
  5550. var fontVariant = {
  5551. name: 'font-variant',
  5552. initialValue: 'none',
  5553. type: 1 /* LIST */,
  5554. prefix: false,
  5555. parse: function parse(_context, tokens) {
  5556. return tokens.filter(isIdentToken).map(function (token) {
  5557. return token.value
  5558. })
  5559. }
  5560. }
  5561. var fontStyle = {
  5562. name: 'font-style',
  5563. initialValue: 'normal',
  5564. prefix: false,
  5565. type: 2 /* IDENT_VALUE */,
  5566. parse: function parse(_context, overflow) {
  5567. switch (overflow) {
  5568. case 'oblique':
  5569. return 'oblique' /* OBLIQUE */
  5570. case 'italic':
  5571. return 'italic' /* ITALIC */
  5572. case 'normal':
  5573. default:
  5574. return 'normal' /* NORMAL */
  5575. }
  5576. }
  5577. }
  5578. var contains = function contains(bit, value) {
  5579. return (bit & value) !== 0
  5580. }
  5581. var content = {
  5582. name: 'content',
  5583. initialValue: 'none',
  5584. type: 1 /* LIST */,
  5585. prefix: false,
  5586. parse: function parse(_context, tokens) {
  5587. if (tokens.length === 0) {
  5588. return []
  5589. }
  5590. var first = tokens[0]
  5591. if (
  5592. first.type === 20 /* IDENT_TOKEN */ &&
  5593. first.value === 'none'
  5594. ) {
  5595. return []
  5596. }
  5597. return tokens
  5598. }
  5599. }
  5600. var counterIncrement = {
  5601. name: 'counter-increment',
  5602. initialValue: 'none',
  5603. prefix: true,
  5604. type: 1 /* LIST */,
  5605. parse: function parse(_context, tokens) {
  5606. if (tokens.length === 0) {
  5607. return null
  5608. }
  5609. var first = tokens[0]
  5610. if (
  5611. first.type === 20 /* IDENT_TOKEN */ &&
  5612. first.value === 'none'
  5613. ) {
  5614. return null
  5615. }
  5616. var increments = []
  5617. var filtered = tokens.filter(nonWhiteSpace)
  5618. for (var i = 0; i < filtered.length; i++) {
  5619. var counter = filtered[i]
  5620. var next = filtered[i + 1]
  5621. if (counter.type === 20 /* IDENT_TOKEN */) {
  5622. var increment = next && isNumberToken(next) ? next.number : 1
  5623. increments.push({
  5624. counter: counter.value,
  5625. increment: increment
  5626. })
  5627. }
  5628. }
  5629. return increments
  5630. }
  5631. }
  5632. var counterReset = {
  5633. name: 'counter-reset',
  5634. initialValue: 'none',
  5635. prefix: true,
  5636. type: 1 /* LIST */,
  5637. parse: function parse(_context, tokens) {
  5638. if (tokens.length === 0) {
  5639. return []
  5640. }
  5641. var resets = []
  5642. var filtered = tokens.filter(nonWhiteSpace)
  5643. for (var i = 0; i < filtered.length; i++) {
  5644. var counter = filtered[i]
  5645. var next = filtered[i + 1]
  5646. if (isIdentToken(counter) && counter.value !== 'none') {
  5647. var reset = next && isNumberToken(next) ? next.number : 0
  5648. resets.push({ counter: counter.value, reset: reset })
  5649. }
  5650. }
  5651. return resets
  5652. }
  5653. }
  5654. var duration = {
  5655. name: 'duration',
  5656. initialValue: '0s',
  5657. prefix: false,
  5658. type: 1 /* LIST */,
  5659. parse: function parse(context, tokens) {
  5660. return tokens.filter(isDimensionToken).map(function (token) {
  5661. return time.parse(context, token)
  5662. })
  5663. }
  5664. }
  5665. var quotes = {
  5666. name: 'quotes',
  5667. initialValue: 'none',
  5668. prefix: true,
  5669. type: 1 /* LIST */,
  5670. parse: function parse(_context, tokens) {
  5671. if (tokens.length === 0) {
  5672. return null
  5673. }
  5674. var first = tokens[0]
  5675. if (
  5676. first.type === 20 /* IDENT_TOKEN */ &&
  5677. first.value === 'none'
  5678. ) {
  5679. return null
  5680. }
  5681. var quotes = []
  5682. var filtered = tokens.filter(isStringToken)
  5683. if (filtered.length % 2 !== 0) {
  5684. return null
  5685. }
  5686. for (var i = 0; i < filtered.length; i += 2) {
  5687. var open_1 = filtered[i].value
  5688. var close_1 = filtered[i + 1].value
  5689. quotes.push({ open: open_1, close: close_1 })
  5690. }
  5691. return quotes
  5692. }
  5693. }
  5694. var getQuote = function getQuote(quotes, depth, open) {
  5695. if (!quotes) {
  5696. return ''
  5697. }
  5698. var quote = quotes[Math.min(depth, quotes.length - 1)]
  5699. if (!quote) {
  5700. return ''
  5701. }
  5702. return open ? quote.open : quote.close
  5703. }
  5704. var boxShadow = {
  5705. name: 'box-shadow',
  5706. initialValue: 'none',
  5707. type: 1 /* LIST */,
  5708. prefix: false,
  5709. parse: function parse(context, tokens) {
  5710. if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
  5711. return []
  5712. }
  5713. return parseFunctionArgs(tokens).map(function (values) {
  5714. var shadow = {
  5715. color: 0x000000ff,
  5716. offsetX: ZERO_LENGTH,
  5717. offsetY: ZERO_LENGTH,
  5718. blur: ZERO_LENGTH,
  5719. spread: ZERO_LENGTH,
  5720. inset: false
  5721. }
  5722. var c = 0
  5723. for (var i = 0; i < values.length; i++) {
  5724. var token = values[i]
  5725. if (isIdentWithValue(token, 'inset')) {
  5726. shadow.inset = true
  5727. } else if (isLength(token)) {
  5728. if (c === 0) {
  5729. shadow.offsetX = token
  5730. } else if (c === 1) {
  5731. shadow.offsetY = token
  5732. } else if (c === 2) {
  5733. shadow.blur = token
  5734. } else {
  5735. shadow.spread = token
  5736. }
  5737. c++
  5738. } else {
  5739. shadow.color = color$1.parse(context, token)
  5740. }
  5741. }
  5742. return shadow
  5743. })
  5744. }
  5745. }
  5746. var paintOrder = {
  5747. name: 'paint-order',
  5748. initialValue: 'normal',
  5749. prefix: false,
  5750. type: 1 /* LIST */,
  5751. parse: function parse(_context, tokens) {
  5752. var DEFAULT_VALUE = [
  5753. 0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */
  5754. ]
  5755. var layers = []
  5756. tokens.filter(isIdentToken).forEach(function (token) {
  5757. switch (token.value) {
  5758. case 'stroke':
  5759. layers.push(1 /* STROKE */)
  5760. break
  5761. case 'fill':
  5762. layers.push(0 /* FILL */)
  5763. break
  5764. case 'markers':
  5765. layers.push(2 /* MARKERS */)
  5766. break
  5767. }
  5768. })
  5769. DEFAULT_VALUE.forEach(function (value) {
  5770. if (layers.indexOf(value) === -1) {
  5771. layers.push(value)
  5772. }
  5773. })
  5774. return layers
  5775. }
  5776. }
  5777. var webkitTextStrokeColor = {
  5778. name: '-webkit-text-stroke-color',
  5779. initialValue: 'currentcolor',
  5780. prefix: false,
  5781. type: 3 /* TYPE_VALUE */,
  5782. format: 'color'
  5783. }
  5784. var webkitTextStrokeWidth = {
  5785. name: '-webkit-text-stroke-width',
  5786. initialValue: '0',
  5787. type: 0 /* VALUE */,
  5788. prefix: false,
  5789. parse: function parse(_context, token) {
  5790. if (isDimensionToken(token)) {
  5791. return token.number
  5792. }
  5793. return 0
  5794. }
  5795. }
  5796. var CSSParsedDeclaration = /** @class */ (function () {
  5797. function CSSParsedDeclaration(context, declaration) {
  5798. var _a, _b
  5799. this.animationDuration = parse(
  5800. context,
  5801. duration,
  5802. declaration.animationDuration
  5803. )
  5804. this.backgroundClip = parse(
  5805. context,
  5806. backgroundClip,
  5807. declaration.backgroundClip
  5808. )
  5809. this.backgroundColor = parse(
  5810. context,
  5811. backgroundColor,
  5812. declaration.backgroundColor
  5813. )
  5814. this.backgroundImage = parse(
  5815. context,
  5816. backgroundImage,
  5817. declaration.backgroundImage
  5818. )
  5819. this.backgroundOrigin = parse(
  5820. context,
  5821. backgroundOrigin,
  5822. declaration.backgroundOrigin
  5823. )
  5824. this.backgroundPosition = parse(
  5825. context,
  5826. backgroundPosition,
  5827. declaration.backgroundPosition
  5828. )
  5829. this.backgroundRepeat = parse(
  5830. context,
  5831. backgroundRepeat,
  5832. declaration.backgroundRepeat
  5833. )
  5834. this.backgroundSize = parse(
  5835. context,
  5836. backgroundSize,
  5837. declaration.backgroundSize
  5838. )
  5839. this.borderTopColor = parse(
  5840. context,
  5841. borderTopColor,
  5842. declaration.borderTopColor
  5843. )
  5844. this.borderRightColor = parse(
  5845. context,
  5846. borderRightColor,
  5847. declaration.borderRightColor
  5848. )
  5849. this.borderBottomColor = parse(
  5850. context,
  5851. borderBottomColor,
  5852. declaration.borderBottomColor
  5853. )
  5854. this.borderLeftColor = parse(
  5855. context,
  5856. borderLeftColor,
  5857. declaration.borderLeftColor
  5858. )
  5859. this.borderTopLeftRadius = parse(
  5860. context,
  5861. borderTopLeftRadius,
  5862. declaration.borderTopLeftRadius
  5863. )
  5864. this.borderTopRightRadius = parse(
  5865. context,
  5866. borderTopRightRadius,
  5867. declaration.borderTopRightRadius
  5868. )
  5869. this.borderBottomRightRadius = parse(
  5870. context,
  5871. borderBottomRightRadius,
  5872. declaration.borderBottomRightRadius
  5873. )
  5874. this.borderBottomLeftRadius = parse(
  5875. context,
  5876. borderBottomLeftRadius,
  5877. declaration.borderBottomLeftRadius
  5878. )
  5879. this.borderTopStyle = parse(
  5880. context,
  5881. borderTopStyle,
  5882. declaration.borderTopStyle
  5883. )
  5884. this.borderRightStyle = parse(
  5885. context,
  5886. borderRightStyle,
  5887. declaration.borderRightStyle
  5888. )
  5889. this.borderBottomStyle = parse(
  5890. context,
  5891. borderBottomStyle,
  5892. declaration.borderBottomStyle
  5893. )
  5894. this.borderLeftStyle = parse(
  5895. context,
  5896. borderLeftStyle,
  5897. declaration.borderLeftStyle
  5898. )
  5899. this.borderTopWidth = parse(
  5900. context,
  5901. borderTopWidth,
  5902. declaration.borderTopWidth
  5903. )
  5904. this.borderRightWidth = parse(
  5905. context,
  5906. borderRightWidth,
  5907. declaration.borderRightWidth
  5908. )
  5909. this.borderBottomWidth = parse(
  5910. context,
  5911. borderBottomWidth,
  5912. declaration.borderBottomWidth
  5913. )
  5914. this.borderLeftWidth = parse(
  5915. context,
  5916. borderLeftWidth,
  5917. declaration.borderLeftWidth
  5918. )
  5919. this.boxShadow = parse(context, boxShadow, declaration.boxShadow)
  5920. this.color = parse(context, color, declaration.color)
  5921. this.direction = parse(context, direction, declaration.direction)
  5922. this.display = parse(context, display, declaration.display)
  5923. this.float = parse(context, float, declaration.cssFloat)
  5924. this.fontFamily = parse(
  5925. context,
  5926. fontFamily,
  5927. declaration.fontFamily
  5928. )
  5929. this.fontSize = parse(context, fontSize, declaration.fontSize)
  5930. this.fontStyle = parse(context, fontStyle, declaration.fontStyle)
  5931. this.fontVariant = parse(
  5932. context,
  5933. fontVariant,
  5934. declaration.fontVariant
  5935. )
  5936. this.fontWeight = parse(
  5937. context,
  5938. fontWeight,
  5939. declaration.fontWeight
  5940. )
  5941. this.letterSpacing = parse(
  5942. context,
  5943. letterSpacing,
  5944. declaration.letterSpacing
  5945. )
  5946. this.lineBreak = parse(context, lineBreak, declaration.lineBreak)
  5947. this.lineHeight = parse(
  5948. context,
  5949. lineHeight,
  5950. declaration.lineHeight
  5951. )
  5952. this.listStyleImage = parse(
  5953. context,
  5954. listStyleImage,
  5955. declaration.listStyleImage
  5956. )
  5957. this.listStylePosition = parse(
  5958. context,
  5959. listStylePosition,
  5960. declaration.listStylePosition
  5961. )
  5962. this.listStyleType = parse(
  5963. context,
  5964. listStyleType,
  5965. declaration.listStyleType
  5966. )
  5967. this.marginTop = parse(context, marginTop, declaration.marginTop)
  5968. this.marginRight = parse(
  5969. context,
  5970. marginRight,
  5971. declaration.marginRight
  5972. )
  5973. this.marginBottom = parse(
  5974. context,
  5975. marginBottom,
  5976. declaration.marginBottom
  5977. )
  5978. this.marginLeft = parse(
  5979. context,
  5980. marginLeft,
  5981. declaration.marginLeft
  5982. )
  5983. this.opacity = parse(context, opacity, declaration.opacity)
  5984. var overflowTuple = parse(context, overflow, declaration.overflow)
  5985. this.overflowX = overflowTuple[0]
  5986. this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]
  5987. this.overflowWrap = parse(
  5988. context,
  5989. overflowWrap,
  5990. declaration.overflowWrap
  5991. )
  5992. this.paddingTop = parse(
  5993. context,
  5994. paddingTop,
  5995. declaration.paddingTop
  5996. )
  5997. this.paddingRight = parse(
  5998. context,
  5999. paddingRight,
  6000. declaration.paddingRight
  6001. )
  6002. this.paddingBottom = parse(
  6003. context,
  6004. paddingBottom,
  6005. declaration.paddingBottom
  6006. )
  6007. this.paddingLeft = parse(
  6008. context,
  6009. paddingLeft,
  6010. declaration.paddingLeft
  6011. )
  6012. this.paintOrder = parse(
  6013. context,
  6014. paintOrder,
  6015. declaration.paintOrder
  6016. )
  6017. this.position = parse(context, position, declaration.position)
  6018. this.textAlign = parse(context, textAlign, declaration.textAlign)
  6019. this.textDecorationColor = parse(
  6020. context,
  6021. textDecorationColor,
  6022. (_a = declaration.textDecorationColor) !== null && _a !== void 0
  6023. ? _a
  6024. : declaration.color
  6025. )
  6026. this.textDecorationLine = parse(
  6027. context,
  6028. textDecorationLine,
  6029. (_b = declaration.textDecorationLine) !== null && _b !== void 0
  6030. ? _b
  6031. : declaration.textDecoration
  6032. )
  6033. this.textShadow = parse(
  6034. context,
  6035. textShadow,
  6036. declaration.textShadow
  6037. )
  6038. this.textTransform = parse(
  6039. context,
  6040. textTransform,
  6041. declaration.textTransform
  6042. )
  6043. this.transform = parse(
  6044. context,
  6045. transform$1,
  6046. declaration.transform
  6047. )
  6048. this.transformOrigin = parse(
  6049. context,
  6050. transformOrigin,
  6051. declaration.transformOrigin
  6052. )
  6053. this.visibility = parse(
  6054. context,
  6055. visibility,
  6056. declaration.visibility
  6057. )
  6058. this.webkitTextStrokeColor = parse(
  6059. context,
  6060. webkitTextStrokeColor,
  6061. declaration.webkitTextStrokeColor
  6062. )
  6063. this.webkitTextStrokeWidth = parse(
  6064. context,
  6065. webkitTextStrokeWidth,
  6066. declaration.webkitTextStrokeWidth
  6067. )
  6068. this.wordBreak = parse(context, wordBreak, declaration.wordBreak)
  6069. this.zIndex = parse(context, zIndex, declaration.zIndex)
  6070. }
  6071. CSSParsedDeclaration.prototype.isVisible = function () {
  6072. return (
  6073. this.display > 0 &&
  6074. this.opacity > 0 &&
  6075. this.visibility === 0 /* VISIBLE */
  6076. )
  6077. }
  6078. CSSParsedDeclaration.prototype.isTransparent = function () {
  6079. return isTransparent(this.backgroundColor)
  6080. }
  6081. CSSParsedDeclaration.prototype.isTransformed = function () {
  6082. return this.transform !== null
  6083. }
  6084. CSSParsedDeclaration.prototype.isPositioned = function () {
  6085. return this.position !== 0 /* STATIC */
  6086. }
  6087. CSSParsedDeclaration.prototype.isPositionedWithZIndex =
  6088. function () {
  6089. return this.isPositioned() && !this.zIndex.auto
  6090. }
  6091. CSSParsedDeclaration.prototype.isFloating = function () {
  6092. return this.float !== 0 /* NONE */
  6093. }
  6094. CSSParsedDeclaration.prototype.isInlineLevel = function () {
  6095. return (
  6096. contains(this.display, 4 /* INLINE */) ||
  6097. contains(this.display, 33554432 /* INLINE_BLOCK */) ||
  6098. contains(this.display, 268435456 /* INLINE_FLEX */) ||
  6099. contains(this.display, 536870912 /* INLINE_GRID */) ||
  6100. contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||
  6101. contains(this.display, 134217728 /* INLINE_TABLE */)
  6102. )
  6103. }
  6104. return CSSParsedDeclaration
  6105. })()
  6106. var CSSParsedPseudoDeclaration = /** @class */ (function () {
  6107. function CSSParsedPseudoDeclaration(context, declaration) {
  6108. this.content = parse(context, content, declaration.content)
  6109. this.quotes = parse(context, quotes, declaration.quotes)
  6110. }
  6111. return CSSParsedPseudoDeclaration
  6112. })()
  6113. var CSSParsedCounterDeclaration = /** @class */ (function () {
  6114. function CSSParsedCounterDeclaration(context, declaration) {
  6115. this.counterIncrement = parse(
  6116. context,
  6117. counterIncrement,
  6118. declaration.counterIncrement
  6119. )
  6120. this.counterReset = parse(
  6121. context,
  6122. counterReset,
  6123. declaration.counterReset
  6124. )
  6125. }
  6126. return CSSParsedCounterDeclaration
  6127. })() // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6128. var parse = function parse(context, descriptor, style) {
  6129. var tokenizer = new Tokenizer()
  6130. var value =
  6131. style !== null && typeof style !== 'undefined'
  6132. ? style.toString()
  6133. : descriptor.initialValue
  6134. tokenizer.write(value)
  6135. var parser = new Parser(tokenizer.read())
  6136. switch (descriptor.type) {
  6137. case 2 /* IDENT_VALUE */:
  6138. var token = parser.parseComponentValue()
  6139. return descriptor.parse(
  6140. context,
  6141. isIdentToken(token) ? token.value : descriptor.initialValue
  6142. )
  6143. case 0 /* VALUE */:
  6144. return descriptor.parse(context, parser.parseComponentValue())
  6145. case 1 /* LIST */:
  6146. return descriptor.parse(context, parser.parseComponentValues())
  6147. case 4 /* TOKEN_VALUE */:
  6148. return parser.parseComponentValue()
  6149. case 3 /* TYPE_VALUE */:
  6150. switch (descriptor.format) {
  6151. case 'angle':
  6152. return angle.parse(context, parser.parseComponentValue())
  6153. case 'color':
  6154. return color$1.parse(context, parser.parseComponentValue())
  6155. case 'image':
  6156. return image.parse(context, parser.parseComponentValue())
  6157. case 'length':
  6158. var length_1 = parser.parseComponentValue()
  6159. return isLength(length_1) ? length_1 : ZERO_LENGTH
  6160. case 'length-percentage':
  6161. var value_1 = parser.parseComponentValue()
  6162. return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH
  6163. case 'time':
  6164. return time.parse(context, parser.parseComponentValue())
  6165. }
  6166. break
  6167. }
  6168. }
  6169. var elementDebuggerAttribute = 'data-html2canvas-debug'
  6170. var getElementDebugType = function getElementDebugType(element) {
  6171. var attribute = element.getAttribute(elementDebuggerAttribute)
  6172. switch (attribute) {
  6173. case 'all':
  6174. return 1 /* ALL */
  6175. case 'clone':
  6176. return 2 /* CLONE */
  6177. case 'parse':
  6178. return 3 /* PARSE */
  6179. case 'render':
  6180. return 4 /* RENDER */
  6181. default:
  6182. return 0 /* NONE */
  6183. }
  6184. }
  6185. var isDebugging = function isDebugging(element, type) {
  6186. var elementType = getElementDebugType(element)
  6187. return elementType === 1 /* ALL */ || type === elementType
  6188. }
  6189. var ElementContainer = /** @class */ (function () {
  6190. function ElementContainer(context, element) {
  6191. this.context = context
  6192. this.textNodes = []
  6193. this.elements = []
  6194. this.flags = 0
  6195. if (isDebugging(element, 3 /* PARSE */)) {
  6196. debugger
  6197. }
  6198. this.styles = new CSSParsedDeclaration(
  6199. context,
  6200. window.getComputedStyle(element, null)
  6201. )
  6202. if (isHTMLElementNode(element)) {
  6203. if (
  6204. this.styles.animationDuration.some(function (duration) {
  6205. return duration > 0
  6206. })
  6207. ) {
  6208. element.style.animationDuration = '0s'
  6209. }
  6210. if (this.styles.transform !== null) {
  6211. // getBoundingClientRect takes transforms into account
  6212. element.style.transform = 'none'
  6213. }
  6214. }
  6215. this.bounds = parseBounds(this.context, element)
  6216. if (isDebugging(element, 4 /* RENDER */)) {
  6217. this.flags |= 16 /* DEBUG_RENDER */
  6218. }
  6219. }
  6220. return ElementContainer
  6221. })()
  6222. /*
  6223. * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>
  6224. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  6225. * Released under MIT License
  6226. */ var base64 =
  6227. 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA='
  6228. /*
  6229. * utrie 1.0.2 <https://github.com/niklasvh/utrie>
  6230. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  6231. * Released under MIT License
  6232. */ var chars$1 =
  6233. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' // Use a lookup table to find the index.
  6234. var lookup$1 =
  6235. typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
  6236. for (var i$1 = 0; i$1 < chars$1.length; i$1++) {
  6237. lookup$1[chars$1.charCodeAt(i$1)] = i$1
  6238. }
  6239. var decode = function decode(base64) {
  6240. var bufferLength = base64.length * 0.75,
  6241. len = base64.length,
  6242. i,
  6243. p = 0,
  6244. encoded1,
  6245. encoded2,
  6246. encoded3,
  6247. encoded4
  6248. if (base64[base64.length - 1] === '=') {
  6249. bufferLength--
  6250. if (base64[base64.length - 2] === '=') {
  6251. bufferLength--
  6252. }
  6253. }
  6254. var buffer =
  6255. typeof ArrayBuffer !== 'undefined' &&
  6256. typeof Uint8Array !== 'undefined' &&
  6257. typeof Uint8Array.prototype.slice !== 'undefined'
  6258. ? new ArrayBuffer(bufferLength)
  6259. : new Array(bufferLength)
  6260. var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer)
  6261. for (i = 0; i < len; i += 4) {
  6262. encoded1 = lookup$1[base64.charCodeAt(i)]
  6263. encoded2 = lookup$1[base64.charCodeAt(i + 1)]
  6264. encoded3 = lookup$1[base64.charCodeAt(i + 2)]
  6265. encoded4 = lookup$1[base64.charCodeAt(i + 3)]
  6266. bytes[p++] = (encoded1 << 2) | (encoded2 >> 4)
  6267. bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2)
  6268. bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63)
  6269. }
  6270. return buffer
  6271. }
  6272. var polyUint16Array = function polyUint16Array(buffer) {
  6273. var length = buffer.length
  6274. var bytes = []
  6275. for (var i = 0; i < length; i += 2) {
  6276. bytes.push((buffer[i + 1] << 8) | buffer[i])
  6277. }
  6278. return bytes
  6279. }
  6280. var polyUint32Array = function polyUint32Array(buffer) {
  6281. var length = buffer.length
  6282. var bytes = []
  6283. for (var i = 0; i < length; i += 4) {
  6284. bytes.push(
  6285. (buffer[i + 3] << 24) |
  6286. (buffer[i + 2] << 16) |
  6287. (buffer[i + 1] << 8) |
  6288. buffer[i]
  6289. )
  6290. }
  6291. return bytes
  6292. }
  6293. /** Shift size for getting the index-2 table offset. */ var UTRIE2_SHIFT_2 = 5
  6294. /** Shift size for getting the index-1 table offset. */ var UTRIE2_SHIFT_1 =
  6295. 6 + 5
  6296. /**
  6297. * Shift size for shifting left the index array values.
  6298. * Increases possible data size with 16-bit index values at the cost
  6299. * of compactability.
  6300. * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
  6301. */ var UTRIE2_INDEX_SHIFT = 2
  6302. /**
  6303. * Difference between the two shift sizes,
  6304. * for getting an index-1 offset from an index-2 offset. 6=11-5
  6305. */ var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2
  6306. /**
  6307. * The part of the index-2 table for U+D800..U+DBFF stores values for
  6308. * lead surrogate code _units_ not code _points_.
  6309. * Values for lead surrogate code _points_ are indexed with this portion of the table.
  6310. * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
  6311. */ var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2
  6312. /** Number of entries in a data block. 32=0x20 */ var UTRIE2_DATA_BLOCK_LENGTH =
  6313. 1 << UTRIE2_SHIFT_2
  6314. /** Mask for getting the lower bits for the in-data-block offset. */ var UTRIE2_DATA_MASK =
  6315. UTRIE2_DATA_BLOCK_LENGTH - 1
  6316. var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2
  6317. /** Count the lengths of both BMP pieces. 2080=0x820 */ var UTRIE2_INDEX_2_BMP_LENGTH =
  6318. UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH
  6319. /**
  6320. * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
  6321. * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
  6322. */ var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH
  6323. var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6
  6324. /* U+0800 is the first code point after 2-byte UTF-8 */ /**
  6325. * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
  6326. * Variable length, for code points up to highStart, where the last single-value range starts.
  6327. * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
  6328. * (For 0x100000 supplementary code points U+10000..U+10ffff.)
  6329. *
  6330. * The part of the index-2 table for supplementary code points starts
  6331. * after this index-1 table.
  6332. *
  6333. * Both the index-1 table and the following part of the index-2 table
  6334. * are omitted completely if there is only BMP data.
  6335. */ var UTRIE2_INDEX_1_OFFSET =
  6336. UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH
  6337. /**
  6338. * Number of index-1 entries for the BMP. 32=0x20
  6339. * This part of the index-1 table is omitted from the serialized form.
  6340. */ var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1
  6341. /** Number of entries in an index-2 block. 64=0x40 */ var UTRIE2_INDEX_2_BLOCK_LENGTH =
  6342. 1 << UTRIE2_SHIFT_1_2
  6343. /** Mask for getting the lower bits for the in-index-2-block offset. */ var UTRIE2_INDEX_2_MASK =
  6344. UTRIE2_INDEX_2_BLOCK_LENGTH - 1
  6345. var slice16 = function slice16(view, start, end) {
  6346. if (view.slice) {
  6347. return view.slice(start, end)
  6348. }
  6349. return new Uint16Array(Array.prototype.slice.call(view, start, end))
  6350. }
  6351. var slice32 = function slice32(view, start, end) {
  6352. if (view.slice) {
  6353. return view.slice(start, end)
  6354. }
  6355. return new Uint32Array(Array.prototype.slice.call(view, start, end))
  6356. }
  6357. var createTrieFromBase64 = function createTrieFromBase64(
  6358. base64,
  6359. _byteLength
  6360. ) {
  6361. var buffer = decode(base64)
  6362. var view32 = Array.isArray(buffer)
  6363. ? polyUint32Array(buffer)
  6364. : new Uint32Array(buffer)
  6365. var view16 = Array.isArray(buffer)
  6366. ? polyUint16Array(buffer)
  6367. : new Uint16Array(buffer)
  6368. var headerLength = 24
  6369. var index = slice16(view16, headerLength / 2, view32[4] / 2)
  6370. var data =
  6371. view32[5] === 2
  6372. ? slice16(view16, (headerLength + view32[4]) / 2)
  6373. : slice32(view32, Math.ceil((headerLength + view32[4]) / 4))
  6374. return new Trie(
  6375. view32[0],
  6376. view32[1],
  6377. view32[2],
  6378. view32[3],
  6379. index,
  6380. data
  6381. )
  6382. }
  6383. var Trie = /** @class */ (function () {
  6384. function Trie(
  6385. initialValue,
  6386. errorValue,
  6387. highStart,
  6388. highValueIndex,
  6389. index,
  6390. data
  6391. ) {
  6392. this.initialValue = initialValue
  6393. this.errorValue = errorValue
  6394. this.highStart = highStart
  6395. this.highValueIndex = highValueIndex
  6396. this.index = index
  6397. this.data = data
  6398. }
  6399. /**
  6400. * Get the value for a code point as stored in the Trie.
  6401. *
  6402. * @param codePoint the code point
  6403. * @return the value
  6404. */ Trie.prototype.get = function (codePoint) {
  6405. var ix
  6406. if (codePoint >= 0) {
  6407. if (
  6408. codePoint < 0x0d800 ||
  6409. (codePoint > 0x0dbff && codePoint <= 0x0ffff)
  6410. ) {
  6411. // Ordinary BMP code point, excluding leading surrogates.
  6412. // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.
  6413. // 16 bit data is stored in the index array itself.
  6414. ix = this.index[codePoint >> UTRIE2_SHIFT_2]
  6415. ix =
  6416. (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK)
  6417. return this.data[ix]
  6418. }
  6419. if (codePoint <= 0xffff) {
  6420. // Lead Surrogate Code Point. A Separate index section is stored for
  6421. // lead surrogate code units and code points.
  6422. // The main index has the code unit data.
  6423. // For this function, we need the code point data.
  6424. // Note: this expression could be refactored for slightly improved efficiency, but
  6425. // surrogate code points will be so rare in practice that it's not worth it.
  6426. ix =
  6427. this.index[
  6428. UTRIE2_LSCP_INDEX_2_OFFSET +
  6429. ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)
  6430. ]
  6431. ix =
  6432. (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK)
  6433. return this.data[ix]
  6434. }
  6435. if (codePoint < this.highStart) {
  6436. // Supplemental code point, use two-level lookup.
  6437. ix =
  6438. UTRIE2_INDEX_1_OFFSET -
  6439. UTRIE2_OMITTED_BMP_INDEX_1_LENGTH +
  6440. (codePoint >> UTRIE2_SHIFT_1)
  6441. ix = this.index[ix]
  6442. ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK
  6443. ix = this.index[ix]
  6444. ix =
  6445. (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK)
  6446. return this.data[ix]
  6447. }
  6448. if (codePoint <= 0x10ffff) {
  6449. return this.data[this.highValueIndex]
  6450. }
  6451. } // Fall through. The code point is outside of the legal range of 0..0x10ffff.
  6452. return this.errorValue
  6453. }
  6454. return Trie
  6455. })()
  6456. /*
  6457. * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>
  6458. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  6459. * Released under MIT License
  6460. */ var chars =
  6461. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' // Use a lookup table to find the index.
  6462. var lookup =
  6463. typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
  6464. for (var i = 0; i < chars.length; i++) {
  6465. lookup[chars.charCodeAt(i)] = i
  6466. }
  6467. var Prepend = 1
  6468. var CR = 2
  6469. var LF = 3
  6470. var Control = 4
  6471. var Extend = 5
  6472. var SpacingMark = 7
  6473. var L = 8
  6474. var V = 9
  6475. var T = 10
  6476. var LV = 11
  6477. var LVT = 12
  6478. var ZWJ = 13
  6479. var Extended_Pictographic = 14
  6480. var RI = 15
  6481. var toCodePoints = function toCodePoints(str) {
  6482. var codePoints = []
  6483. var i = 0
  6484. var length = str.length
  6485. while (i < length) {
  6486. var value = str.charCodeAt(i++)
  6487. if (value >= 0xd800 && value <= 0xdbff && i < length) {
  6488. var extra = str.charCodeAt(i++)
  6489. if ((extra & 0xfc00) === 0xdc00) {
  6490. codePoints.push(
  6491. ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000
  6492. )
  6493. } else {
  6494. codePoints.push(value)
  6495. i--
  6496. }
  6497. } else {
  6498. codePoints.push(value)
  6499. }
  6500. }
  6501. return codePoints
  6502. }
  6503. var fromCodePoint = function fromCodePoint() {
  6504. var codePoints = []
  6505. for (var _i = 0; _i < arguments.length; _i++) {
  6506. codePoints[_i] = arguments[_i]
  6507. }
  6508. if (String.fromCodePoint) {
  6509. return String.fromCodePoint.apply(String, codePoints)
  6510. }
  6511. var length = codePoints.length
  6512. if (!length) {
  6513. return ''
  6514. }
  6515. var codeUnits = []
  6516. var index = -1
  6517. var result = ''
  6518. while (++index < length) {
  6519. var codePoint = codePoints[index]
  6520. if (codePoint <= 0xffff) {
  6521. codeUnits.push(codePoint)
  6522. } else {
  6523. codePoint -= 0x10000
  6524. codeUnits.push(
  6525. (codePoint >> 10) + 0xd800,
  6526. (codePoint % 0x400) + 0xdc00
  6527. )
  6528. }
  6529. if (index + 1 === length || codeUnits.length > 0x4000) {
  6530. result += String.fromCharCode.apply(String, codeUnits)
  6531. codeUnits.length = 0
  6532. }
  6533. }
  6534. return result
  6535. }
  6536. var UnicodeTrie = createTrieFromBase64(base64)
  6537. var BREAK_NOT_ALLOWED = '×'
  6538. var BREAK_ALLOWED = '÷'
  6539. var codePointToClass = function codePointToClass(codePoint) {
  6540. return UnicodeTrie.get(codePoint)
  6541. }
  6542. var _graphemeBreakAtIndex = function _graphemeBreakAtIndex(
  6543. _codePoints,
  6544. classTypes,
  6545. index
  6546. ) {
  6547. var prevIndex = index - 2
  6548. var prev = classTypes[prevIndex]
  6549. var current = classTypes[index - 1]
  6550. var next = classTypes[index] // GB3 Do not break between a CR and LF
  6551. if (current === CR && next === LF) {
  6552. return BREAK_NOT_ALLOWED
  6553. } // GB4 Otherwise, break before and after controls.
  6554. if (current === CR || current === LF || current === Control) {
  6555. return BREAK_ALLOWED
  6556. } // GB5
  6557. if (next === CR || next === LF || next === Control) {
  6558. return BREAK_ALLOWED
  6559. } // Do not break Hangul syllable sequences.
  6560. // GB6
  6561. if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
  6562. return BREAK_NOT_ALLOWED
  6563. } // GB7
  6564. if (
  6565. (current === LV || current === V) &&
  6566. (next === V || next === T)
  6567. ) {
  6568. return BREAK_NOT_ALLOWED
  6569. } // GB8
  6570. if ((current === LVT || current === T) && next === T) {
  6571. return BREAK_NOT_ALLOWED
  6572. } // GB9 Do not break before extending characters or ZWJ.
  6573. if (next === ZWJ || next === Extend) {
  6574. return BREAK_NOT_ALLOWED
  6575. } // Do not break before SpacingMarks, or after Prepend characters.
  6576. // GB9a
  6577. if (next === SpacingMark) {
  6578. return BREAK_NOT_ALLOWED
  6579. } // GB9a
  6580. if (current === Prepend) {
  6581. return BREAK_NOT_ALLOWED
  6582. } // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.
  6583. if (current === ZWJ && next === Extended_Pictographic) {
  6584. while (prev === Extend) {
  6585. prev = classTypes[--prevIndex]
  6586. }
  6587. if (prev === Extended_Pictographic) {
  6588. return BREAK_NOT_ALLOWED
  6589. }
  6590. } // GB12 Do not break within emoji flag sequences.
  6591. // That is, do not break between regional indicator (RI) symbols
  6592. // if there is an odd number of RI characters before the break point.
  6593. if (current === RI && next === RI) {
  6594. var countRI = 0
  6595. while (prev === RI) {
  6596. countRI++
  6597. prev = classTypes[--prevIndex]
  6598. }
  6599. if (countRI % 2 === 0) {
  6600. return BREAK_NOT_ALLOWED
  6601. }
  6602. }
  6603. return BREAK_ALLOWED
  6604. }
  6605. var GraphemeBreaker = function GraphemeBreaker(str) {
  6606. var codePoints = toCodePoints(str)
  6607. var length = codePoints.length
  6608. var index = 0
  6609. var lastEnd = 0
  6610. var classTypes = codePoints.map(codePointToClass)
  6611. return {
  6612. next: function next() {
  6613. if (index >= length) {
  6614. return { done: true, value: null }
  6615. }
  6616. var graphemeBreak = BREAK_NOT_ALLOWED
  6617. while (
  6618. index < length &&
  6619. (graphemeBreak = _graphemeBreakAtIndex(
  6620. codePoints,
  6621. classTypes,
  6622. ++index
  6623. )) === BREAK_NOT_ALLOWED
  6624. ) {}
  6625. if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
  6626. var value = fromCodePoint.apply(
  6627. null,
  6628. codePoints.slice(lastEnd, index)
  6629. )
  6630. lastEnd = index
  6631. return { value: value, done: false }
  6632. }
  6633. return { done: true, value: null }
  6634. }
  6635. }
  6636. }
  6637. var splitGraphemes = function splitGraphemes(str) {
  6638. var breaker = GraphemeBreaker(str)
  6639. var graphemes = []
  6640. var bk
  6641. while (!(bk = breaker.next()).done) {
  6642. if (bk.value) {
  6643. graphemes.push(bk.value.slice())
  6644. }
  6645. }
  6646. return graphemes
  6647. }
  6648. var testRangeBounds = function testRangeBounds(document) {
  6649. var TEST_HEIGHT = 123
  6650. if (document.createRange) {
  6651. var range = document.createRange()
  6652. if (range.getBoundingClientRect) {
  6653. var testElement = document.createElement('boundtest')
  6654. testElement.style.height = TEST_HEIGHT + 'px'
  6655. testElement.style.display = 'block'
  6656. document.body.appendChild(testElement)
  6657. range.selectNode(testElement)
  6658. var rangeBounds = range.getBoundingClientRect()
  6659. var rangeHeight = Math.round(rangeBounds.height)
  6660. document.body.removeChild(testElement)
  6661. if (rangeHeight === TEST_HEIGHT) {
  6662. return true
  6663. }
  6664. }
  6665. }
  6666. return false
  6667. }
  6668. var testIOSLineBreak = function testIOSLineBreak(document) {
  6669. var testElement = document.createElement('boundtest')
  6670. testElement.style.width = '50px'
  6671. testElement.style.display = 'block'
  6672. testElement.style.fontSize = '12px'
  6673. testElement.style.letterSpacing = '0px'
  6674. testElement.style.wordSpacing = '0px'
  6675. document.body.appendChild(testElement)
  6676. var range = document.createRange()
  6677. testElement.innerHTML =
  6678. typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : ''
  6679. var node = testElement.firstChild
  6680. var textList = toCodePoints$1(node.data).map(function (i) {
  6681. return fromCodePoint$1(i)
  6682. })
  6683. var offset = 0
  6684. var prev = {} // ios 13 does not handle range getBoundingClientRect line changes correctly #2177
  6685. var supports = textList.every(function (text, i) {
  6686. range.setStart(node, offset)
  6687. range.setEnd(node, offset + text.length)
  6688. var rect = range.getBoundingClientRect()
  6689. offset += text.length
  6690. var boundAhead = rect.x > prev.x || rect.y > prev.y
  6691. prev = rect
  6692. if (i === 0) {
  6693. return true
  6694. }
  6695. return boundAhead
  6696. })
  6697. document.body.removeChild(testElement)
  6698. return supports
  6699. }
  6700. var testCORS = function testCORS() {
  6701. return typeof new Image().crossOrigin !== 'undefined'
  6702. }
  6703. var testResponseType = function testResponseType() {
  6704. return typeof new XMLHttpRequest().responseType === 'string'
  6705. }
  6706. var testSVG = function testSVG(document) {
  6707. var img = new Image()
  6708. var canvas = document.createElement('canvas')
  6709. var ctx = canvas.getContext('2d')
  6710. if (!ctx) {
  6711. return false
  6712. }
  6713. img.src =
  6714. "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>"
  6715. try {
  6716. ctx.drawImage(img, 0, 0)
  6717. canvas.toDataURL()
  6718. } catch (e) {
  6719. return false
  6720. }
  6721. return true
  6722. }
  6723. var isGreenPixel = function isGreenPixel(data) {
  6724. return (
  6725. data[0] === 0 &&
  6726. data[1] === 255 &&
  6727. data[2] === 0 &&
  6728. data[3] === 255
  6729. )
  6730. }
  6731. var testForeignObject = function testForeignObject(document) {
  6732. var canvas = document.createElement('canvas')
  6733. var size = 100
  6734. canvas.width = size
  6735. canvas.height = size
  6736. var ctx = canvas.getContext('2d')
  6737. if (!ctx) {
  6738. return Promise.reject(false)
  6739. }
  6740. ctx.fillStyle = 'rgb(0, 255, 0)'
  6741. ctx.fillRect(0, 0, size, size)
  6742. var img = new Image()
  6743. var greenImageSrc = canvas.toDataURL()
  6744. img.src = greenImageSrc
  6745. var svg = createForeignObjectSVG(size, size, 0, 0, img)
  6746. ctx.fillStyle = 'red'
  6747. ctx.fillRect(0, 0, size, size)
  6748. return loadSerializedSVG$1(svg)
  6749. .then(function (img) {
  6750. ctx.drawImage(img, 0, 0)
  6751. var data = ctx.getImageData(0, 0, size, size).data
  6752. ctx.fillStyle = 'red'
  6753. ctx.fillRect(0, 0, size, size)
  6754. var node = document.createElement('div')
  6755. node.style.backgroundImage = 'url(' + greenImageSrc + ')'
  6756. node.style.height = size + 'px' // Firefox 55 does not render inline <img /> tags
  6757. return isGreenPixel(data)
  6758. ? loadSerializedSVG$1(
  6759. createForeignObjectSVG(size, size, 0, 0, node)
  6760. )
  6761. : Promise.reject(false)
  6762. })
  6763. .then(function (img) {
  6764. ctx.drawImage(img, 0, 0) // Edge does not render background-images
  6765. return isGreenPixel(ctx.getImageData(0, 0, size, size).data)
  6766. })
  6767. .catch(function () {
  6768. return false
  6769. })
  6770. }
  6771. var createForeignObjectSVG = function createForeignObjectSVG(
  6772. width,
  6773. height,
  6774. x,
  6775. y,
  6776. node
  6777. ) {
  6778. var xmlns = 'http://www.w3.org/2000/svg'
  6779. var svg = document.createElementNS(xmlns, 'svg')
  6780. var foreignObject = document.createElementNS(xmlns, 'foreignObject')
  6781. svg.setAttributeNS(null, 'width', width.toString())
  6782. svg.setAttributeNS(null, 'height', height.toString())
  6783. foreignObject.setAttributeNS(null, 'width', '100%')
  6784. foreignObject.setAttributeNS(null, 'height', '100%')
  6785. foreignObject.setAttributeNS(null, 'x', x.toString())
  6786. foreignObject.setAttributeNS(null, 'y', y.toString())
  6787. foreignObject.setAttributeNS(
  6788. null,
  6789. 'externalResourcesRequired',
  6790. 'true'
  6791. )
  6792. svg.appendChild(foreignObject)
  6793. foreignObject.appendChild(node)
  6794. return svg
  6795. }
  6796. var loadSerializedSVG$1 = function loadSerializedSVG$1(svg) {
  6797. return new Promise(function (resolve, reject) {
  6798. var img = new Image()
  6799. img.onload = function () {
  6800. return resolve(img)
  6801. }
  6802. img.onerror = reject
  6803. img.src =
  6804. 'data:image/svg+xml;charset=utf-8,' +
  6805. encodeURIComponent(new XMLSerializer().serializeToString(svg))
  6806. })
  6807. }
  6808. var FEATURES = {
  6809. get SUPPORT_RANGE_BOUNDS() {
  6810. var value = testRangeBounds(document)
  6811. Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {
  6812. value: value
  6813. })
  6814. return value
  6815. },
  6816. get SUPPORT_WORD_BREAKING() {
  6817. var value =
  6818. FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document)
  6819. Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {
  6820. value: value
  6821. })
  6822. return value
  6823. },
  6824. get SUPPORT_SVG_DRAWING() {
  6825. var value = testSVG(document)
  6826. Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {
  6827. value: value
  6828. })
  6829. return value
  6830. },
  6831. get SUPPORT_FOREIGNOBJECT_DRAWING() {
  6832. var value =
  6833. typeof Array.from === 'function' &&
  6834. typeof window.fetch === 'function'
  6835. ? testForeignObject(document)
  6836. : Promise.resolve(false)
  6837. Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {
  6838. value: value
  6839. })
  6840. return value
  6841. },
  6842. get SUPPORT_CORS_IMAGES() {
  6843. var value = testCORS()
  6844. Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {
  6845. value: value
  6846. })
  6847. return value
  6848. },
  6849. get SUPPORT_RESPONSE_TYPE() {
  6850. var value = testResponseType()
  6851. Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {
  6852. value: value
  6853. })
  6854. return value
  6855. },
  6856. get SUPPORT_CORS_XHR() {
  6857. var value = 'withCredentials' in new XMLHttpRequest()
  6858. Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {
  6859. value: value
  6860. })
  6861. return value
  6862. },
  6863. get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
  6864. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6865. var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter)
  6866. Object.defineProperty(
  6867. FEATURES,
  6868. 'SUPPORT_NATIVE_TEXT_SEGMENTATION',
  6869. { value: value }
  6870. )
  6871. return value
  6872. }
  6873. }
  6874. var TextBounds = /** @class */ (function () {
  6875. function TextBounds(text, bounds) {
  6876. this.text = text
  6877. this.bounds = bounds
  6878. }
  6879. return TextBounds
  6880. })()
  6881. var parseTextBounds = function parseTextBounds(
  6882. context,
  6883. value,
  6884. styles,
  6885. node
  6886. ) {
  6887. var textList = breakText(value, styles)
  6888. var textBounds = []
  6889. var offset = 0
  6890. textList.forEach(function (text) {
  6891. if (styles.textDecorationLine.length || text.trim().length > 0) {
  6892. if (FEATURES.SUPPORT_RANGE_BOUNDS) {
  6893. var clientRects = createRange(
  6894. node,
  6895. offset,
  6896. text.length
  6897. ).getClientRects()
  6898. if (clientRects.length > 1) {
  6899. var subSegments = segmentGraphemes(text)
  6900. var subOffset_1 = 0
  6901. subSegments.forEach(function (subSegment) {
  6902. textBounds.push(
  6903. new TextBounds(
  6904. subSegment,
  6905. Bounds.fromDOMRectList(
  6906. context,
  6907. createRange(
  6908. node,
  6909. subOffset_1 + offset,
  6910. subSegment.length
  6911. ).getClientRects()
  6912. )
  6913. )
  6914. )
  6915. subOffset_1 += subSegment.length
  6916. })
  6917. } else {
  6918. textBounds.push(
  6919. new TextBounds(
  6920. text,
  6921. Bounds.fromDOMRectList(context, clientRects)
  6922. )
  6923. )
  6924. }
  6925. } else {
  6926. var replacementNode = node.splitText(text.length)
  6927. textBounds.push(
  6928. new TextBounds(text, getWrapperBounds(context, node))
  6929. )
  6930. node = replacementNode
  6931. }
  6932. } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
  6933. node = node.splitText(text.length)
  6934. }
  6935. offset += text.length
  6936. })
  6937. return textBounds
  6938. }
  6939. var getWrapperBounds = function getWrapperBounds(context, node) {
  6940. var ownerDocument = node.ownerDocument
  6941. if (ownerDocument) {
  6942. var wrapper = ownerDocument.createElement('html2canvaswrapper')
  6943. wrapper.appendChild(node.cloneNode(true))
  6944. var parentNode = node.parentNode
  6945. if (parentNode) {
  6946. parentNode.replaceChild(wrapper, node)
  6947. var bounds = parseBounds(context, wrapper)
  6948. if (wrapper.firstChild) {
  6949. parentNode.replaceChild(wrapper.firstChild, wrapper)
  6950. }
  6951. return bounds
  6952. }
  6953. }
  6954. return Bounds.EMPTY
  6955. }
  6956. var createRange = function createRange(node, offset, length) {
  6957. var ownerDocument = node.ownerDocument
  6958. if (!ownerDocument) {
  6959. throw new Error('Node has no owner document')
  6960. }
  6961. var range = ownerDocument.createRange()
  6962. range.setStart(node, offset)
  6963. range.setEnd(node, offset + length)
  6964. return range
  6965. }
  6966. var segmentGraphemes = function segmentGraphemes(value) {
  6967. if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
  6968. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6969. var segmenter = new Intl.Segmenter(void 0, {
  6970. granularity: 'grapheme'
  6971. }) // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6972. return Array.from(segmenter.segment(value)).map(function (
  6973. segment
  6974. ) {
  6975. return segment.segment
  6976. })
  6977. }
  6978. return splitGraphemes(value)
  6979. }
  6980. var segmentWords = function segmentWords(value, styles) {
  6981. if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
  6982. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6983. var segmenter = new Intl.Segmenter(void 0, {
  6984. granularity: 'word'
  6985. }) // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6986. return Array.from(segmenter.segment(value)).map(function (
  6987. segment
  6988. ) {
  6989. return segment.segment
  6990. })
  6991. }
  6992. return breakWords(value, styles)
  6993. }
  6994. var breakText = function breakText(value, styles) {
  6995. return styles.letterSpacing !== 0
  6996. ? segmentGraphemes(value)
  6997. : segmentWords(value, styles)
  6998. } // https://drafts.csswg.org/css-text/#word-separator
  6999. var wordSeparators = [
  7000. 0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091
  7001. ]
  7002. var breakWords = function breakWords(str, styles) {
  7003. var breaker = LineBreaker(str, {
  7004. lineBreak: styles.lineBreak,
  7005. wordBreak:
  7006. styles.overflowWrap === 'break-word' /* BREAK_WORD */
  7007. ? 'break-word'
  7008. : styles.wordBreak
  7009. })
  7010. var words = []
  7011. var bk
  7012. var _loop_1 = function _loop_1() {
  7013. if (bk.value) {
  7014. var value = bk.value.slice()
  7015. var codePoints = toCodePoints$1(value)
  7016. var word_1 = ''
  7017. codePoints.forEach(function (codePoint) {
  7018. if (wordSeparators.indexOf(codePoint) === -1) {
  7019. word_1 += fromCodePoint$1(codePoint)
  7020. } else {
  7021. if (word_1.length) {
  7022. words.push(word_1)
  7023. }
  7024. words.push(fromCodePoint$1(codePoint))
  7025. word_1 = ''
  7026. }
  7027. })
  7028. if (word_1.length) {
  7029. words.push(word_1)
  7030. }
  7031. }
  7032. }
  7033. while (!(bk = breaker.next()).done) {
  7034. _loop_1()
  7035. }
  7036. return words
  7037. }
  7038. var TextContainer = /** @class */ (function () {
  7039. function TextContainer(context, node, styles) {
  7040. this.text = transform(node.data, styles.textTransform)
  7041. this.textBounds = parseTextBounds(
  7042. context,
  7043. this.text,
  7044. styles,
  7045. node
  7046. )
  7047. }
  7048. return TextContainer
  7049. })()
  7050. var transform = function transform(text, _transform) {
  7051. switch (_transform) {
  7052. case 1 /* LOWERCASE */:
  7053. return text.toLowerCase()
  7054. case 3 /* CAPITALIZE */:
  7055. return text.replace(CAPITALIZE, capitalize)
  7056. case 2 /* UPPERCASE */:
  7057. return text.toUpperCase()
  7058. default:
  7059. return text
  7060. }
  7061. }
  7062. var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g
  7063. var capitalize = function capitalize(m, p1, p2) {
  7064. if (m.length > 0) {
  7065. return p1 + p2.toUpperCase()
  7066. }
  7067. return m
  7068. }
  7069. var ImageElementContainer = /** @class */ (function (_super) {
  7070. __extends(ImageElementContainer, _super)
  7071. function ImageElementContainer(context, img) {
  7072. var _this = _super.call(this, context, img) || this
  7073. _this.src = img.currentSrc || img.src
  7074. _this.intrinsicWidth = img.naturalWidth
  7075. _this.intrinsicHeight = img.naturalHeight
  7076. _this.context.cache.addImage(_this.src)
  7077. return _this
  7078. }
  7079. return ImageElementContainer
  7080. })(ElementContainer)
  7081. var CanvasElementContainer = /** @class */ (function (_super) {
  7082. __extends(CanvasElementContainer, _super)
  7083. function CanvasElementContainer(context, canvas) {
  7084. var _this = _super.call(this, context, canvas) || this
  7085. _this.canvas = canvas
  7086. _this.intrinsicWidth = canvas.width
  7087. _this.intrinsicHeight = canvas.height
  7088. return _this
  7089. }
  7090. return CanvasElementContainer
  7091. })(ElementContainer)
  7092. var SVGElementContainer = /** @class */ (function (_super) {
  7093. __extends(SVGElementContainer, _super)
  7094. function SVGElementContainer(context, img) {
  7095. var _this = _super.call(this, context, img) || this
  7096. var s = new XMLSerializer()
  7097. var bounds = parseBounds(context, img)
  7098. img.setAttribute('width', bounds.width + 'px')
  7099. img.setAttribute('height', bounds.height + 'px')
  7100. _this.svg =
  7101. 'data:image/svg+xml,' +
  7102. encodeURIComponent(s.serializeToString(img))
  7103. _this.intrinsicWidth = img.width.baseVal.value
  7104. _this.intrinsicHeight = img.height.baseVal.value
  7105. _this.context.cache.addImage(_this.svg)
  7106. return _this
  7107. }
  7108. return SVGElementContainer
  7109. })(ElementContainer)
  7110. var LIElementContainer = /** @class */ (function (_super) {
  7111. __extends(LIElementContainer, _super)
  7112. function LIElementContainer(context, element) {
  7113. var _this = _super.call(this, context, element) || this
  7114. _this.value = element.value
  7115. return _this
  7116. }
  7117. return LIElementContainer
  7118. })(ElementContainer)
  7119. var OLElementContainer = /** @class */ (function (_super) {
  7120. __extends(OLElementContainer, _super)
  7121. function OLElementContainer(context, element) {
  7122. var _this = _super.call(this, context, element) || this
  7123. _this.start = element.start
  7124. _this.reversed =
  7125. typeof element.reversed === 'boolean' &&
  7126. element.reversed === true
  7127. return _this
  7128. }
  7129. return OLElementContainer
  7130. })(ElementContainer)
  7131. var CHECKBOX_BORDER_RADIUS = [
  7132. { type: 15 /* DIMENSION_TOKEN */, flags: 0, unit: 'px', number: 3 }
  7133. ]
  7134. var RADIO_BORDER_RADIUS = [
  7135. { type: 16 /* PERCENTAGE_TOKEN */, flags: 0, number: 50 }
  7136. ]
  7137. var reformatInputBounds = function reformatInputBounds(bounds) {
  7138. if (bounds.width > bounds.height) {
  7139. return new Bounds(
  7140. bounds.left + (bounds.width - bounds.height) / 2,
  7141. bounds.top,
  7142. bounds.height,
  7143. bounds.height
  7144. )
  7145. } else if (bounds.width < bounds.height) {
  7146. return new Bounds(
  7147. bounds.left,
  7148. bounds.top + (bounds.height - bounds.width) / 2,
  7149. bounds.width,
  7150. bounds.width
  7151. )
  7152. }
  7153. return bounds
  7154. }
  7155. var getInputValue = function getInputValue(node) {
  7156. var value =
  7157. node.type === PASSWORD
  7158. ? new Array(node.value.length + 1).join('\u2022')
  7159. : node.value
  7160. return value.length === 0 ? node.placeholder || '' : value
  7161. }
  7162. var CHECKBOX = 'checkbox'
  7163. var RADIO = 'radio'
  7164. var PASSWORD = 'password'
  7165. var INPUT_COLOR = 0x2a2a2aff
  7166. var InputElementContainer = /** @class */ (function (_super) {
  7167. __extends(InputElementContainer, _super)
  7168. function InputElementContainer(context, input) {
  7169. var _this = _super.call(this, context, input) || this
  7170. _this.type = input.type.toLowerCase()
  7171. _this.checked = input.checked
  7172. _this.value = getInputValue(input)
  7173. if (_this.type === CHECKBOX || _this.type === RADIO) {
  7174. _this.styles.backgroundColor = 0xdededeff
  7175. _this.styles.borderTopColor =
  7176. _this.styles.borderRightColor =
  7177. _this.styles.borderBottomColor =
  7178. _this.styles.borderLeftColor =
  7179. 0xa5a5a5ff
  7180. _this.styles.borderTopWidth =
  7181. _this.styles.borderRightWidth =
  7182. _this.styles.borderBottomWidth =
  7183. _this.styles.borderLeftWidth =
  7184. 1
  7185. _this.styles.borderTopStyle =
  7186. _this.styles.borderRightStyle =
  7187. _this.styles.borderBottomStyle =
  7188. _this.styles.borderLeftStyle =
  7189. 1 /* SOLID */
  7190. _this.styles.backgroundClip = [0 /* BORDER_BOX */]
  7191. _this.styles.backgroundOrigin = [0 /* BORDER_BOX */]
  7192. _this.bounds = reformatInputBounds(_this.bounds)
  7193. }
  7194. switch (_this.type) {
  7195. case CHECKBOX:
  7196. _this.styles.borderTopRightRadius =
  7197. _this.styles.borderTopLeftRadius =
  7198. _this.styles.borderBottomRightRadius =
  7199. _this.styles.borderBottomLeftRadius =
  7200. CHECKBOX_BORDER_RADIUS
  7201. break
  7202. case RADIO:
  7203. _this.styles.borderTopRightRadius =
  7204. _this.styles.borderTopLeftRadius =
  7205. _this.styles.borderBottomRightRadius =
  7206. _this.styles.borderBottomLeftRadius =
  7207. RADIO_BORDER_RADIUS
  7208. break
  7209. }
  7210. return _this
  7211. }
  7212. return InputElementContainer
  7213. })(ElementContainer)
  7214. var SelectElementContainer = /** @class */ (function (_super) {
  7215. __extends(SelectElementContainer, _super)
  7216. function SelectElementContainer(context, element) {
  7217. var _this = _super.call(this, context, element) || this
  7218. var option = element.options[element.selectedIndex || 0]
  7219. _this.value = option ? option.text || '' : ''
  7220. return _this
  7221. }
  7222. return SelectElementContainer
  7223. })(ElementContainer)
  7224. var TextareaElementContainer = /** @class */ (function (_super) {
  7225. __extends(TextareaElementContainer, _super)
  7226. function TextareaElementContainer(context, element) {
  7227. var _this = _super.call(this, context, element) || this
  7228. _this.value = element.value
  7229. return _this
  7230. }
  7231. return TextareaElementContainer
  7232. })(ElementContainer)
  7233. var IFrameElementContainer = /** @class */ (function (_super) {
  7234. __extends(IFrameElementContainer, _super)
  7235. function IFrameElementContainer(context, iframe) {
  7236. var _this = _super.call(this, context, iframe) || this
  7237. _this.src = iframe.src
  7238. _this.width = parseInt(iframe.width, 10) || 0
  7239. _this.height = parseInt(iframe.height, 10) || 0
  7240. _this.backgroundColor = _this.styles.backgroundColor
  7241. try {
  7242. if (
  7243. iframe.contentWindow &&
  7244. iframe.contentWindow.document &&
  7245. iframe.contentWindow.document.documentElement
  7246. ) {
  7247. _this.tree = parseTree(
  7248. context,
  7249. iframe.contentWindow.document.documentElement
  7250. ) // http://www.w3.org/TR/css3-background/#special-backgrounds
  7251. var documentBackgroundColor = iframe.contentWindow.document
  7252. .documentElement
  7253. ? parseColor(
  7254. context,
  7255. getComputedStyle(
  7256. iframe.contentWindow.document.documentElement
  7257. ).backgroundColor
  7258. )
  7259. : COLORS.TRANSPARENT
  7260. var bodyBackgroundColor = iframe.contentWindow.document.body
  7261. ? parseColor(
  7262. context,
  7263. getComputedStyle(iframe.contentWindow.document.body)
  7264. .backgroundColor
  7265. )
  7266. : COLORS.TRANSPARENT
  7267. _this.backgroundColor = isTransparent(documentBackgroundColor)
  7268. ? isTransparent(bodyBackgroundColor)
  7269. ? _this.styles.backgroundColor
  7270. : bodyBackgroundColor
  7271. : documentBackgroundColor
  7272. }
  7273. } catch (e) {}
  7274. return _this
  7275. }
  7276. return IFrameElementContainer
  7277. })(ElementContainer)
  7278. var LIST_OWNERS = ['OL', 'UL', 'MENU']
  7279. var parseNodeTree = function parseNodeTree(
  7280. context,
  7281. node,
  7282. parent,
  7283. root
  7284. ) {
  7285. for (
  7286. var childNode = node.firstChild, nextNode = void 0;
  7287. childNode;
  7288. childNode = nextNode
  7289. ) {
  7290. nextNode = childNode.nextSibling
  7291. if (isTextNode(childNode) && childNode.data.trim().length > 0) {
  7292. parent.textNodes.push(
  7293. new TextContainer(context, childNode, parent.styles)
  7294. )
  7295. } else if (isElementNode(childNode)) {
  7296. if (isSlotElement(childNode) && childNode.assignedNodes) {
  7297. childNode.assignedNodes().forEach(function (childNode) {
  7298. return parseNodeTree(context, childNode, parent, root)
  7299. })
  7300. } else {
  7301. var container = createContainer(context, childNode)
  7302. if (container.styles.isVisible()) {
  7303. if (
  7304. createsRealStackingContext(childNode, container, root)
  7305. ) {
  7306. container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */
  7307. } else if (createsStackingContext(container.styles)) {
  7308. container.flags |= 2 /* CREATES_STACKING_CONTEXT */
  7309. }
  7310. if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
  7311. container.flags |= 8 /* IS_LIST_OWNER */
  7312. }
  7313. parent.elements.push(container)
  7314. childNode.slot
  7315. if (childNode.shadowRoot) {
  7316. parseNodeTree(
  7317. context,
  7318. childNode.shadowRoot,
  7319. container,
  7320. root
  7321. )
  7322. } else if (
  7323. !isTextareaElement(childNode) &&
  7324. !isSVGElement(childNode) &&
  7325. !isSelectElement(childNode)
  7326. ) {
  7327. parseNodeTree(context, childNode, container, root)
  7328. }
  7329. }
  7330. }
  7331. }
  7332. }
  7333. }
  7334. var createContainer = function createContainer(context, element) {
  7335. if (isImageElement(element)) {
  7336. return new ImageElementContainer(context, element)
  7337. }
  7338. if (isCanvasElement(element)) {
  7339. return new CanvasElementContainer(context, element)
  7340. }
  7341. if (isSVGElement(element)) {
  7342. return new SVGElementContainer(context, element)
  7343. }
  7344. if (isLIElement(element)) {
  7345. return new LIElementContainer(context, element)
  7346. }
  7347. if (isOLElement(element)) {
  7348. return new OLElementContainer(context, element)
  7349. }
  7350. if (isInputElement(element)) {
  7351. return new InputElementContainer(context, element)
  7352. }
  7353. if (isSelectElement(element)) {
  7354. return new SelectElementContainer(context, element)
  7355. }
  7356. if (isTextareaElement(element)) {
  7357. return new TextareaElementContainer(context, element)
  7358. }
  7359. if (isIFrameElement(element)) {
  7360. return new IFrameElementContainer(context, element)
  7361. }
  7362. return new ElementContainer(context, element)
  7363. }
  7364. var parseTree = function parseTree(context, element) {
  7365. var container = createContainer(context, element)
  7366. container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */
  7367. parseNodeTree(context, element, container, container)
  7368. return container
  7369. }
  7370. var createsRealStackingContext = function createsRealStackingContext(
  7371. node,
  7372. container,
  7373. root
  7374. ) {
  7375. return (
  7376. container.styles.isPositionedWithZIndex() ||
  7377. container.styles.opacity < 1 ||
  7378. container.styles.isTransformed() ||
  7379. (isBodyElement(node) && root.styles.isTransparent())
  7380. )
  7381. }
  7382. var createsStackingContext = function createsStackingContext(styles) {
  7383. return styles.isPositioned() || styles.isFloating()
  7384. }
  7385. var isTextNode = function isTextNode(node) {
  7386. return node.nodeType === Node.TEXT_NODE
  7387. }
  7388. var isElementNode = function isElementNode(node) {
  7389. return node.nodeType === Node.ELEMENT_NODE
  7390. }
  7391. var isHTMLElementNode = function isHTMLElementNode(node) {
  7392. return (
  7393. isElementNode(node) &&
  7394. typeof node.style !== 'undefined' &&
  7395. !isSVGElementNode(node)
  7396. )
  7397. }
  7398. var isSVGElementNode = function isSVGElementNode(element) {
  7399. return _typeof(element.className) === 'object'
  7400. }
  7401. var isLIElement = function isLIElement(node) {
  7402. return node.tagName === 'LI'
  7403. }
  7404. var isOLElement = function isOLElement(node) {
  7405. return node.tagName === 'OL'
  7406. }
  7407. var isInputElement = function isInputElement(node) {
  7408. return node.tagName === 'INPUT'
  7409. }
  7410. var isHTMLElement = function isHTMLElement(node) {
  7411. return node.tagName === 'HTML'
  7412. }
  7413. var isSVGElement = function isSVGElement(node) {
  7414. return node.tagName === 'svg'
  7415. }
  7416. var isBodyElement = function isBodyElement(node) {
  7417. return node.tagName === 'BODY'
  7418. }
  7419. var isCanvasElement = function isCanvasElement(node) {
  7420. return node.tagName === 'CANVAS'
  7421. }
  7422. var isVideoElement = function isVideoElement(node) {
  7423. return node.tagName === 'VIDEO'
  7424. }
  7425. var isImageElement = function isImageElement(node) {
  7426. return node.tagName === 'IMG'
  7427. }
  7428. var isIFrameElement = function isIFrameElement(node) {
  7429. return node.tagName === 'IFRAME'
  7430. }
  7431. var isStyleElement = function isStyleElement(node) {
  7432. return node.tagName === 'STYLE'
  7433. }
  7434. var isScriptElement = function isScriptElement(node) {
  7435. return node.tagName === 'SCRIPT'
  7436. }
  7437. var isTextareaElement = function isTextareaElement(node) {
  7438. return node.tagName === 'TEXTAREA'
  7439. }
  7440. var isSelectElement = function isSelectElement(node) {
  7441. return node.tagName === 'SELECT'
  7442. }
  7443. var isSlotElement = function isSlotElement(node) {
  7444. return node.tagName === 'SLOT'
  7445. } // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
  7446. var isCustomElement = function isCustomElement(node) {
  7447. return node.tagName.indexOf('-') > 0
  7448. }
  7449. var CounterState = /** @class */ (function () {
  7450. function CounterState() {
  7451. this.counters = {}
  7452. }
  7453. CounterState.prototype.getCounterValue = function (name) {
  7454. var counter = this.counters[name]
  7455. if (counter && counter.length) {
  7456. return counter[counter.length - 1]
  7457. }
  7458. return 1
  7459. }
  7460. CounterState.prototype.getCounterValues = function (name) {
  7461. var counter = this.counters[name]
  7462. return counter ? counter : []
  7463. }
  7464. CounterState.prototype.pop = function (counters) {
  7465. var _this = this
  7466. counters.forEach(function (counter) {
  7467. return _this.counters[counter].pop()
  7468. })
  7469. }
  7470. CounterState.prototype.parse = function (style) {
  7471. var _this = this
  7472. var counterIncrement = style.counterIncrement
  7473. var counterReset = style.counterReset
  7474. var canReset = true
  7475. if (counterIncrement !== null) {
  7476. counterIncrement.forEach(function (entry) {
  7477. var counter = _this.counters[entry.counter]
  7478. if (counter && entry.increment !== 0) {
  7479. canReset = false
  7480. if (!counter.length) {
  7481. counter.push(1)
  7482. }
  7483. counter[Math.max(0, counter.length - 1)] += entry.increment
  7484. }
  7485. })
  7486. }
  7487. var counterNames = []
  7488. if (canReset) {
  7489. counterReset.forEach(function (entry) {
  7490. var counter = _this.counters[entry.counter]
  7491. counterNames.push(entry.counter)
  7492. if (!counter) {
  7493. counter = _this.counters[entry.counter] = []
  7494. }
  7495. counter.push(entry.reset)
  7496. })
  7497. }
  7498. return counterNames
  7499. }
  7500. return CounterState
  7501. })()
  7502. var ROMAN_UPPER = {
  7503. integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
  7504. values: [
  7505. 'M',
  7506. 'CM',
  7507. 'D',
  7508. 'CD',
  7509. 'C',
  7510. 'XC',
  7511. 'L',
  7512. 'XL',
  7513. 'X',
  7514. 'IX',
  7515. 'V',
  7516. 'IV',
  7517. 'I'
  7518. ]
  7519. }
  7520. var ARMENIAN = {
  7521. integers: [
  7522. 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800,
  7523. 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,
  7524. 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
  7525. ],
  7526. values: [
  7527. 'Ք',
  7528. 'Փ',
  7529. 'Ւ',
  7530. 'Ց',
  7531. 'Ր',
  7532. 'Տ',
  7533. 'Վ',
  7534. 'Ս',
  7535. 'Ռ',
  7536. 'Ջ',
  7537. 'Պ',
  7538. 'Չ',
  7539. 'Ո',
  7540. 'Շ',
  7541. 'Ն',
  7542. 'Յ',
  7543. 'Մ',
  7544. 'Ճ',
  7545. 'Ղ',
  7546. 'Ձ',
  7547. 'Հ',
  7548. 'Կ',
  7549. 'Ծ',
  7550. 'Խ',
  7551. 'Լ',
  7552. 'Ի',
  7553. 'Ժ',
  7554. 'Թ',
  7555. 'Ը',
  7556. 'Է',
  7557. 'Զ',
  7558. 'Ե',
  7559. 'Դ',
  7560. 'Գ',
  7561. 'Բ',
  7562. 'Ա'
  7563. ]
  7564. }
  7565. var HEBREW = {
  7566. integers: [
  7567. 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400,
  7568. 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15,
  7569. 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
  7570. ],
  7571. values: [
  7572. 'י׳',
  7573. 'ט׳',
  7574. 'ח׳',
  7575. 'ז׳',
  7576. 'ו׳',
  7577. 'ה׳',
  7578. 'ד׳',
  7579. 'ג׳',
  7580. 'ב׳',
  7581. 'א׳',
  7582. 'ת',
  7583. 'ש',
  7584. 'ר',
  7585. 'ק',
  7586. 'צ',
  7587. 'פ',
  7588. 'ע',
  7589. 'ס',
  7590. 'נ',
  7591. 'מ',
  7592. 'ל',
  7593. 'כ',
  7594. 'יט',
  7595. 'יח',
  7596. 'יז',
  7597. 'טז',
  7598. 'טו',
  7599. 'י',
  7600. 'ט',
  7601. 'ח',
  7602. 'ז',
  7603. 'ו',
  7604. 'ה',
  7605. 'ד',
  7606. 'ג',
  7607. 'ב',
  7608. 'א'
  7609. ]
  7610. }
  7611. var GEORGIAN = {
  7612. integers: [
  7613. 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900,
  7614. 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40,
  7615. 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
  7616. ],
  7617. values: [
  7618. 'ჵ',
  7619. 'ჰ',
  7620. 'ჯ',
  7621. 'ჴ',
  7622. 'ხ',
  7623. 'ჭ',
  7624. 'წ',
  7625. 'ძ',
  7626. 'ც',
  7627. 'ჩ',
  7628. 'შ',
  7629. 'ყ',
  7630. 'ღ',
  7631. 'ქ',
  7632. 'ფ',
  7633. 'ჳ',
  7634. 'ტ',
  7635. 'ს',
  7636. 'რ',
  7637. 'ჟ',
  7638. 'პ',
  7639. 'ო',
  7640. 'ჲ',
  7641. 'ნ',
  7642. 'მ',
  7643. 'ლ',
  7644. 'კ',
  7645. 'ი',
  7646. 'თ',
  7647. 'ჱ',
  7648. 'ზ',
  7649. 'ვ',
  7650. 'ე',
  7651. 'დ',
  7652. 'გ',
  7653. 'ბ',
  7654. 'ა'
  7655. ]
  7656. }
  7657. var createAdditiveCounter = function createAdditiveCounter(
  7658. value,
  7659. min,
  7660. max,
  7661. symbols,
  7662. fallback,
  7663. suffix
  7664. ) {
  7665. if (value < min || value > max) {
  7666. return createCounterText(value, fallback, suffix.length > 0)
  7667. }
  7668. return (
  7669. symbols.integers.reduce(function (string, integer, index) {
  7670. while (value >= integer) {
  7671. value -= integer
  7672. string += symbols.values[index]
  7673. }
  7674. return string
  7675. }, '') + suffix
  7676. )
  7677. }
  7678. var createCounterStyleWithSymbolResolver =
  7679. function createCounterStyleWithSymbolResolver(
  7680. value,
  7681. codePointRangeLength,
  7682. isNumeric,
  7683. resolver
  7684. ) {
  7685. var string = ''
  7686. do {
  7687. if (!isNumeric) {
  7688. value--
  7689. }
  7690. string = resolver(value) + string
  7691. value /= codePointRangeLength
  7692. } while (value * codePointRangeLength >= codePointRangeLength)
  7693. return string
  7694. }
  7695. var createCounterStyleFromRange =
  7696. function createCounterStyleFromRange(
  7697. value,
  7698. codePointRangeStart,
  7699. codePointRangeEnd,
  7700. isNumeric,
  7701. suffix
  7702. ) {
  7703. var codePointRangeLength =
  7704. codePointRangeEnd - codePointRangeStart + 1
  7705. return (
  7706. (value < 0 ? '-' : '') +
  7707. (createCounterStyleWithSymbolResolver(
  7708. Math.abs(value),
  7709. codePointRangeLength,
  7710. isNumeric,
  7711. function (codePoint) {
  7712. return fromCodePoint$1(
  7713. Math.floor(codePoint % codePointRangeLength) +
  7714. codePointRangeStart
  7715. )
  7716. }
  7717. ) +
  7718. suffix)
  7719. )
  7720. }
  7721. var createCounterStyleFromSymbols =
  7722. function createCounterStyleFromSymbols(value, symbols, suffix) {
  7723. if (suffix === void 0) {
  7724. suffix = '. '
  7725. }
  7726. var codePointRangeLength = symbols.length
  7727. return (
  7728. createCounterStyleWithSymbolResolver(
  7729. Math.abs(value),
  7730. codePointRangeLength,
  7731. false,
  7732. function (codePoint) {
  7733. return symbols[Math.floor(codePoint % codePointRangeLength)]
  7734. }
  7735. ) + suffix
  7736. )
  7737. }
  7738. var CJK_ZEROS = 1 << 0
  7739. var CJK_TEN_COEFFICIENTS = 1 << 1
  7740. var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2
  7741. var CJK_HUNDRED_COEFFICIENTS = 1 << 3
  7742. var createCJKCounter = function createCJKCounter(
  7743. value,
  7744. numbers,
  7745. multipliers,
  7746. negativeSign,
  7747. suffix,
  7748. flags
  7749. ) {
  7750. if (value < -9999 || value > 9999) {
  7751. return createCounterText(
  7752. value,
  7753. 4 /* CJK_DECIMAL */,
  7754. suffix.length > 0
  7755. )
  7756. }
  7757. var tmp = Math.abs(value)
  7758. var string = suffix
  7759. if (tmp === 0) {
  7760. return numbers[0] + string
  7761. }
  7762. for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
  7763. var coefficient = tmp % 10
  7764. if (
  7765. coefficient === 0 &&
  7766. contains(flags, CJK_ZEROS) &&
  7767. string !== ''
  7768. ) {
  7769. string = numbers[coefficient] + string
  7770. } else if (
  7771. coefficient > 1 ||
  7772. (coefficient === 1 && digit === 0) ||
  7773. (coefficient === 1 &&
  7774. digit === 1 &&
  7775. contains(flags, CJK_TEN_COEFFICIENTS)) ||
  7776. (coefficient === 1 &&
  7777. digit === 1 &&
  7778. contains(flags, CJK_TEN_HIGH_COEFFICIENTS) &&
  7779. value > 100) ||
  7780. (coefficient === 1 &&
  7781. digit > 1 &&
  7782. contains(flags, CJK_HUNDRED_COEFFICIENTS))
  7783. ) {
  7784. string =
  7785. numbers[coefficient] +
  7786. (digit > 0 ? multipliers[digit - 1] : '') +
  7787. string
  7788. } else if (coefficient === 1 && digit > 0) {
  7789. string = multipliers[digit - 1] + string
  7790. }
  7791. tmp = Math.floor(tmp / 10)
  7792. }
  7793. return (value < 0 ? negativeSign : '') + string
  7794. }
  7795. var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬'
  7796. var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬'
  7797. var JAPANESE_NEGATIVE = 'マイナス'
  7798. var KOREAN_NEGATIVE = '마이너스'
  7799. var createCounterText = function createCounterText(
  7800. value,
  7801. type,
  7802. appendSuffix
  7803. ) {
  7804. var defaultSuffix = appendSuffix ? '. ' : ''
  7805. var cjkSuffix = appendSuffix ? '、' : ''
  7806. var koreanSuffix = appendSuffix ? ', ' : ''
  7807. var spaceSuffix = appendSuffix ? ' ' : ''
  7808. switch (type) {
  7809. case 0 /* DISC */:
  7810. return '•' + spaceSuffix
  7811. case 1 /* CIRCLE */:
  7812. return '◦' + spaceSuffix
  7813. case 2 /* SQUARE */:
  7814. return '◾' + spaceSuffix
  7815. case 5 /* DECIMAL_LEADING_ZERO */:
  7816. var string = createCounterStyleFromRange(
  7817. value,
  7818. 48,
  7819. 57,
  7820. true,
  7821. defaultSuffix
  7822. )
  7823. return string.length < 4 ? '0' + string : string
  7824. case 4 /* CJK_DECIMAL */:
  7825. return createCounterStyleFromSymbols(
  7826. value,
  7827. '〇一二三四五六七八九',
  7828. cjkSuffix
  7829. )
  7830. case 6 /* LOWER_ROMAN */:
  7831. return createAdditiveCounter(
  7832. value,
  7833. 1,
  7834. 3999,
  7835. ROMAN_UPPER,
  7836. 3 /* DECIMAL */,
  7837. defaultSuffix
  7838. ).toLowerCase()
  7839. case 7 /* UPPER_ROMAN */:
  7840. return createAdditiveCounter(
  7841. value,
  7842. 1,
  7843. 3999,
  7844. ROMAN_UPPER,
  7845. 3 /* DECIMAL */,
  7846. defaultSuffix
  7847. )
  7848. case 8 /* LOWER_GREEK */:
  7849. return createCounterStyleFromRange(
  7850. value,
  7851. 945,
  7852. 969,
  7853. false,
  7854. defaultSuffix
  7855. )
  7856. case 9 /* LOWER_ALPHA */:
  7857. return createCounterStyleFromRange(
  7858. value,
  7859. 97,
  7860. 122,
  7861. false,
  7862. defaultSuffix
  7863. )
  7864. case 10 /* UPPER_ALPHA */:
  7865. return createCounterStyleFromRange(
  7866. value,
  7867. 65,
  7868. 90,
  7869. false,
  7870. defaultSuffix
  7871. )
  7872. case 11 /* ARABIC_INDIC */:
  7873. return createCounterStyleFromRange(
  7874. value,
  7875. 1632,
  7876. 1641,
  7877. true,
  7878. defaultSuffix
  7879. )
  7880. case 12 /* ARMENIAN */:
  7881. case 49 /* UPPER_ARMENIAN */:
  7882. return createAdditiveCounter(
  7883. value,
  7884. 1,
  7885. 9999,
  7886. ARMENIAN,
  7887. 3 /* DECIMAL */,
  7888. defaultSuffix
  7889. )
  7890. case 35 /* LOWER_ARMENIAN */:
  7891. return createAdditiveCounter(
  7892. value,
  7893. 1,
  7894. 9999,
  7895. ARMENIAN,
  7896. 3 /* DECIMAL */,
  7897. defaultSuffix
  7898. ).toLowerCase()
  7899. case 13 /* BENGALI */:
  7900. return createCounterStyleFromRange(
  7901. value,
  7902. 2534,
  7903. 2543,
  7904. true,
  7905. defaultSuffix
  7906. )
  7907. case 14 /* CAMBODIAN */:
  7908. case 30 /* KHMER */:
  7909. return createCounterStyleFromRange(
  7910. value,
  7911. 6112,
  7912. 6121,
  7913. true,
  7914. defaultSuffix
  7915. )
  7916. case 15 /* CJK_EARTHLY_BRANCH */:
  7917. return createCounterStyleFromSymbols(
  7918. value,
  7919. '子丑寅卯辰巳午未申酉戌亥',
  7920. cjkSuffix
  7921. )
  7922. case 16 /* CJK_HEAVENLY_STEM */:
  7923. return createCounterStyleFromSymbols(
  7924. value,
  7925. '甲乙丙丁戊己庚辛壬癸',
  7926. cjkSuffix
  7927. )
  7928. case 17 /* CJK_IDEOGRAPHIC */:
  7929. case 48 /* TRAD_CHINESE_INFORMAL */:
  7930. return createCJKCounter(
  7931. value,
  7932. '零一二三四五六七八九',
  7933. CHINESE_INFORMAL_MULTIPLIERS,
  7934. '負',
  7935. cjkSuffix,
  7936. CJK_TEN_COEFFICIENTS |
  7937. CJK_TEN_HIGH_COEFFICIENTS |
  7938. CJK_HUNDRED_COEFFICIENTS
  7939. )
  7940. case 47 /* TRAD_CHINESE_FORMAL */:
  7941. return createCJKCounter(
  7942. value,
  7943. '零壹貳參肆伍陸柒捌玖',
  7944. CHINESE_FORMAL_MULTIPLIERS,
  7945. '負',
  7946. cjkSuffix,
  7947. CJK_ZEROS |
  7948. CJK_TEN_COEFFICIENTS |
  7949. CJK_TEN_HIGH_COEFFICIENTS |
  7950. CJK_HUNDRED_COEFFICIENTS
  7951. )
  7952. case 42 /* SIMP_CHINESE_INFORMAL */:
  7953. return createCJKCounter(
  7954. value,
  7955. '零一二三四五六七八九',
  7956. CHINESE_INFORMAL_MULTIPLIERS,
  7957. '负',
  7958. cjkSuffix,
  7959. CJK_TEN_COEFFICIENTS |
  7960. CJK_TEN_HIGH_COEFFICIENTS |
  7961. CJK_HUNDRED_COEFFICIENTS
  7962. )
  7963. case 41 /* SIMP_CHINESE_FORMAL */:
  7964. return createCJKCounter(
  7965. value,
  7966. '零壹贰叁肆伍陆柒捌玖',
  7967. CHINESE_FORMAL_MULTIPLIERS,
  7968. '负',
  7969. cjkSuffix,
  7970. CJK_ZEROS |
  7971. CJK_TEN_COEFFICIENTS |
  7972. CJK_TEN_HIGH_COEFFICIENTS |
  7973. CJK_HUNDRED_COEFFICIENTS
  7974. )
  7975. case 26 /* JAPANESE_INFORMAL */:
  7976. return createCJKCounter(
  7977. value,
  7978. '〇一二三四五六七八九',
  7979. '十百千万',
  7980. JAPANESE_NEGATIVE,
  7981. cjkSuffix,
  7982. 0
  7983. )
  7984. case 25 /* JAPANESE_FORMAL */:
  7985. return createCJKCounter(
  7986. value,
  7987. '零壱弐参四伍六七八九',
  7988. '拾百千万',
  7989. JAPANESE_NEGATIVE,
  7990. cjkSuffix,
  7991. CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
  7992. )
  7993. case 31 /* KOREAN_HANGUL_FORMAL */:
  7994. return createCJKCounter(
  7995. value,
  7996. '영일이삼사오육칠팔구',
  7997. '십백천만',
  7998. KOREAN_NEGATIVE,
  7999. koreanSuffix,
  8000. CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
  8001. )
  8002. case 33 /* KOREAN_HANJA_INFORMAL */:
  8003. return createCJKCounter(
  8004. value,
  8005. '零一二三四五六七八九',
  8006. '十百千萬',
  8007. KOREAN_NEGATIVE,
  8008. koreanSuffix,
  8009. 0
  8010. )
  8011. case 32 /* KOREAN_HANJA_FORMAL */:
  8012. return createCJKCounter(
  8013. value,
  8014. '零壹貳參四五六七八九',
  8015. '拾百千',
  8016. KOREAN_NEGATIVE,
  8017. koreanSuffix,
  8018. CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
  8019. )
  8020. case 18 /* DEVANAGARI */:
  8021. return createCounterStyleFromRange(
  8022. value,
  8023. 0x966,
  8024. 0x96f,
  8025. true,
  8026. defaultSuffix
  8027. )
  8028. case 20 /* GEORGIAN */:
  8029. return createAdditiveCounter(
  8030. value,
  8031. 1,
  8032. 19999,
  8033. GEORGIAN,
  8034. 3 /* DECIMAL */,
  8035. defaultSuffix
  8036. )
  8037. case 21 /* GUJARATI */:
  8038. return createCounterStyleFromRange(
  8039. value,
  8040. 0xae6,
  8041. 0xaef,
  8042. true,
  8043. defaultSuffix
  8044. )
  8045. case 22 /* GURMUKHI */:
  8046. return createCounterStyleFromRange(
  8047. value,
  8048. 0xa66,
  8049. 0xa6f,
  8050. true,
  8051. defaultSuffix
  8052. )
  8053. case 22 /* HEBREW */:
  8054. return createAdditiveCounter(
  8055. value,
  8056. 1,
  8057. 10999,
  8058. HEBREW,
  8059. 3 /* DECIMAL */,
  8060. defaultSuffix
  8061. )
  8062. case 23 /* HIRAGANA */:
  8063. return createCounterStyleFromSymbols(
  8064. value,
  8065. 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'
  8066. )
  8067. case 24 /* HIRAGANA_IROHA */:
  8068. return createCounterStyleFromSymbols(
  8069. value,
  8070. 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'
  8071. )
  8072. case 27 /* KANNADA */:
  8073. return createCounterStyleFromRange(
  8074. value,
  8075. 0xce6,
  8076. 0xcef,
  8077. true,
  8078. defaultSuffix
  8079. )
  8080. case 28 /* KATAKANA */:
  8081. return createCounterStyleFromSymbols(
  8082. value,
  8083. 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',
  8084. cjkSuffix
  8085. )
  8086. case 29 /* KATAKANA_IROHA */:
  8087. return createCounterStyleFromSymbols(
  8088. value,
  8089. 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',
  8090. cjkSuffix
  8091. )
  8092. case 34 /* LAO */:
  8093. return createCounterStyleFromRange(
  8094. value,
  8095. 0xed0,
  8096. 0xed9,
  8097. true,
  8098. defaultSuffix
  8099. )
  8100. case 37 /* MONGOLIAN */:
  8101. return createCounterStyleFromRange(
  8102. value,
  8103. 0x1810,
  8104. 0x1819,
  8105. true,
  8106. defaultSuffix
  8107. )
  8108. case 38 /* MYANMAR */:
  8109. return createCounterStyleFromRange(
  8110. value,
  8111. 0x1040,
  8112. 0x1049,
  8113. true,
  8114. defaultSuffix
  8115. )
  8116. case 39 /* ORIYA */:
  8117. return createCounterStyleFromRange(
  8118. value,
  8119. 0xb66,
  8120. 0xb6f,
  8121. true,
  8122. defaultSuffix
  8123. )
  8124. case 40 /* PERSIAN */:
  8125. return createCounterStyleFromRange(
  8126. value,
  8127. 0x6f0,
  8128. 0x6f9,
  8129. true,
  8130. defaultSuffix
  8131. )
  8132. case 43 /* TAMIL */:
  8133. return createCounterStyleFromRange(
  8134. value,
  8135. 0xbe6,
  8136. 0xbef,
  8137. true,
  8138. defaultSuffix
  8139. )
  8140. case 44 /* TELUGU */:
  8141. return createCounterStyleFromRange(
  8142. value,
  8143. 0xc66,
  8144. 0xc6f,
  8145. true,
  8146. defaultSuffix
  8147. )
  8148. case 45 /* THAI */:
  8149. return createCounterStyleFromRange(
  8150. value,
  8151. 0xe50,
  8152. 0xe59,
  8153. true,
  8154. defaultSuffix
  8155. )
  8156. case 46 /* TIBETAN */:
  8157. return createCounterStyleFromRange(
  8158. value,
  8159. 0xf20,
  8160. 0xf29,
  8161. true,
  8162. defaultSuffix
  8163. )
  8164. case 3 /* DECIMAL */:
  8165. default:
  8166. return createCounterStyleFromRange(
  8167. value,
  8168. 48,
  8169. 57,
  8170. true,
  8171. defaultSuffix
  8172. )
  8173. }
  8174. }
  8175. var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore'
  8176. var DocumentCloner = /** @class */ (function () {
  8177. function DocumentCloner(context, element, options) {
  8178. this.context = context
  8179. this.options = options
  8180. this.scrolledElements = []
  8181. this.referenceElement = element
  8182. this.counters = new CounterState()
  8183. this.quoteDepth = 0
  8184. if (!element.ownerDocument) {
  8185. throw new Error(
  8186. 'Cloned element does not have an owner document'
  8187. )
  8188. }
  8189. this.documentElement = this.cloneNode(
  8190. element.ownerDocument.documentElement,
  8191. false
  8192. )
  8193. }
  8194. DocumentCloner.prototype.toIFrame = function (
  8195. ownerDocument,
  8196. windowSize
  8197. ) {
  8198. var _this = this
  8199. var iframe = createIFrameContainer(ownerDocument, windowSize)
  8200. if (!iframe.contentWindow) {
  8201. return Promise.reject('Unable to find iframe window')
  8202. }
  8203. var scrollX = ownerDocument.defaultView.pageXOffset
  8204. var scrollY = ownerDocument.defaultView.pageYOffset
  8205. var cloneWindow = iframe.contentWindow
  8206. var documentClone = cloneWindow.document
  8207. /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle
  8208. if window url is about:blank, we can assign the url to current by writing onto the document
  8209. */ var iframeLoad = iframeLoader(iframe).then(function () {
  8210. return __awaiter(_this, void 0, void 0, function () {
  8211. var onclone, referenceElement
  8212. return __generator(this, function (_a) {
  8213. switch (_a.label) {
  8214. case 0:
  8215. this.scrolledElements.forEach(restoreNodeScroll)
  8216. if (cloneWindow) {
  8217. cloneWindow.scrollTo(windowSize.left, windowSize.top)
  8218. if (
  8219. /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&
  8220. (cloneWindow.scrollY !== windowSize.top ||
  8221. cloneWindow.scrollX !== windowSize.left)
  8222. ) {
  8223. this.context.logger.warn(
  8224. 'Unable to restore scroll position for cloned document'
  8225. )
  8226. this.context.windowBounds =
  8227. this.context.windowBounds.add(
  8228. cloneWindow.scrollX - windowSize.left,
  8229. cloneWindow.scrollY - windowSize.top,
  8230. 0,
  8231. 0
  8232. )
  8233. }
  8234. }
  8235. onclone = this.options.onclone
  8236. referenceElement = this.clonedReferenceElement
  8237. if (typeof referenceElement === 'undefined') {
  8238. return [
  8239. 2 /*return*/,
  8240. Promise.reject(
  8241. 'Error finding the ' +
  8242. this.referenceElement.nodeName +
  8243. ' in the cloned document'
  8244. )
  8245. ]
  8246. }
  8247. if (!(documentClone.fonts && documentClone.fonts.ready))
  8248. return [3 /*break*/, 2]
  8249. return [4 /*yield*/, documentClone.fonts.ready]
  8250. case 1:
  8251. _a.sent()
  8252. _a.label = 2
  8253. case 2:
  8254. if (!/(AppleWebKit)/g.test(navigator.userAgent))
  8255. return [3 /*break*/, 4]
  8256. return [4 /*yield*/, imagesReady(documentClone)]
  8257. case 3:
  8258. _a.sent()
  8259. _a.label = 4
  8260. case 4:
  8261. if (typeof onclone === 'function') {
  8262. return [
  8263. 2 /*return*/,
  8264. Promise.resolve()
  8265. .then(function () {
  8266. return onclone(documentClone, referenceElement)
  8267. })
  8268. .then(function () {
  8269. return iframe
  8270. })
  8271. ]
  8272. }
  8273. return [2 /*return*/, iframe]
  8274. }
  8275. })
  8276. })
  8277. })
  8278. documentClone.open()
  8279. documentClone.write(
  8280. serializeDoctype(document.doctype) + '<html></html>'
  8281. ) // Chrome scrolls the parent document for some reason after the write to the cloned window???
  8282. restoreOwnerScroll(
  8283. this.referenceElement.ownerDocument,
  8284. scrollX,
  8285. scrollY
  8286. )
  8287. documentClone.replaceChild(
  8288. documentClone.adoptNode(this.documentElement),
  8289. documentClone.documentElement
  8290. )
  8291. documentClone.close()
  8292. return iframeLoad
  8293. }
  8294. DocumentCloner.prototype.createElementClone = function (node) {
  8295. if (isDebugging(node, 2 /* CLONE */)) {
  8296. debugger
  8297. }
  8298. if (isCanvasElement(node)) {
  8299. return this.createCanvasClone(node)
  8300. }
  8301. if (isVideoElement(node)) {
  8302. return this.createVideoClone(node)
  8303. }
  8304. if (isStyleElement(node)) {
  8305. return this.createStyleClone(node)
  8306. }
  8307. var clone = node.cloneNode(false)
  8308. if (isImageElement(clone)) {
  8309. if (
  8310. isImageElement(node) &&
  8311. node.currentSrc &&
  8312. node.currentSrc !== node.src
  8313. ) {
  8314. clone.src = node.currentSrc
  8315. clone.srcset = ''
  8316. }
  8317. if (clone.loading === 'lazy') {
  8318. clone.loading = 'eager'
  8319. }
  8320. }
  8321. if (isCustomElement(clone)) {
  8322. return this.createCustomElementClone(clone)
  8323. }
  8324. return clone
  8325. }
  8326. DocumentCloner.prototype.createCustomElementClone = function (
  8327. node
  8328. ) {
  8329. var clone = document.createElement('html2canvascustomelement')
  8330. copyCSSStyles(node.style, clone)
  8331. return clone
  8332. }
  8333. DocumentCloner.prototype.createStyleClone = function (node) {
  8334. try {
  8335. var sheet = node.sheet
  8336. if (sheet && sheet.cssRules) {
  8337. var css = [].slice
  8338. .call(sheet.cssRules, 0)
  8339. .reduce(function (css, rule) {
  8340. if (rule && typeof rule.cssText === 'string') {
  8341. return css + rule.cssText
  8342. }
  8343. return css
  8344. }, '')
  8345. var style = node.cloneNode(false)
  8346. style.textContent = css
  8347. return style
  8348. }
  8349. } catch (e) {
  8350. // accessing node.sheet.cssRules throws a DOMException
  8351. this.context.logger.error(
  8352. 'Unable to access cssRules property',
  8353. e
  8354. )
  8355. if (e.name !== 'SecurityError') {
  8356. throw e
  8357. }
  8358. }
  8359. return node.cloneNode(false)
  8360. }
  8361. DocumentCloner.prototype.createCanvasClone = function (canvas) {
  8362. var _a
  8363. if (this.options.inlineImages && canvas.ownerDocument) {
  8364. var img = canvas.ownerDocument.createElement('img')
  8365. try {
  8366. img.src = canvas.toDataURL()
  8367. return img
  8368. } catch (e) {
  8369. this.context.logger.info(
  8370. 'Unable to inline canvas contents, canvas is tainted',
  8371. canvas
  8372. )
  8373. }
  8374. }
  8375. var clonedCanvas = canvas.cloneNode(false)
  8376. try {
  8377. clonedCanvas.width = canvas.width
  8378. clonedCanvas.height = canvas.height
  8379. var ctx = canvas.getContext('2d')
  8380. var clonedCtx = clonedCanvas.getContext('2d')
  8381. if (clonedCtx) {
  8382. if (!this.options.allowTaint && ctx) {
  8383. clonedCtx.putImageData(
  8384. ctx.getImageData(0, 0, canvas.width, canvas.height),
  8385. 0,
  8386. 0
  8387. )
  8388. } else {
  8389. var gl =
  8390. (_a = canvas.getContext('webgl2')) !== null &&
  8391. _a !== void 0
  8392. ? _a
  8393. : canvas.getContext('webgl')
  8394. if (gl) {
  8395. var attribs = gl.getContextAttributes()
  8396. if (
  8397. (attribs === null || attribs === void 0
  8398. ? void 0
  8399. : attribs.preserveDrawingBuffer) === false
  8400. ) {
  8401. this.context.logger.warn(
  8402. 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',
  8403. canvas
  8404. )
  8405. }
  8406. }
  8407. clonedCtx.drawImage(canvas, 0, 0)
  8408. }
  8409. }
  8410. return clonedCanvas
  8411. } catch (e) {
  8412. this.context.logger.info(
  8413. 'Unable to clone canvas as it is tainted',
  8414. canvas
  8415. )
  8416. }
  8417. return clonedCanvas
  8418. }
  8419. DocumentCloner.prototype.createVideoClone = function (video) {
  8420. var canvas = video.ownerDocument.createElement('canvas')
  8421. canvas.width = video.offsetWidth
  8422. canvas.height = video.offsetHeight
  8423. var ctx = canvas.getContext('2d')
  8424. try {
  8425. if (ctx) {
  8426. ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
  8427. if (!this.options.allowTaint) {
  8428. ctx.getImageData(0, 0, canvas.width, canvas.height)
  8429. }
  8430. }
  8431. return canvas
  8432. } catch (e) {
  8433. this.context.logger.info(
  8434. 'Unable to clone video as it is tainted',
  8435. video
  8436. )
  8437. }
  8438. var blankCanvas = video.ownerDocument.createElement('canvas')
  8439. blankCanvas.width = video.offsetWidth
  8440. blankCanvas.height = video.offsetHeight
  8441. return blankCanvas
  8442. }
  8443. DocumentCloner.prototype.appendChildNode = function (
  8444. clone,
  8445. child,
  8446. copyStyles
  8447. ) {
  8448. if (
  8449. !isElementNode(child) ||
  8450. (!isScriptElement(child) &&
  8451. !child.hasAttribute(IGNORE_ATTRIBUTE) &&
  8452. (typeof this.options.ignoreElements !== 'function' ||
  8453. !this.options.ignoreElements(child)))
  8454. ) {
  8455. if (
  8456. !this.options.copyStyles ||
  8457. !isElementNode(child) ||
  8458. !isStyleElement(child)
  8459. ) {
  8460. clone.appendChild(this.cloneNode(child, copyStyles))
  8461. }
  8462. }
  8463. }
  8464. DocumentCloner.prototype.cloneChildNodes = function (
  8465. node,
  8466. clone,
  8467. copyStyles
  8468. ) {
  8469. var _this = this
  8470. for (
  8471. var child = node.shadowRoot
  8472. ? node.shadowRoot.firstChild
  8473. : node.firstChild;
  8474. child;
  8475. child = child.nextSibling
  8476. ) {
  8477. if (
  8478. isElementNode(child) &&
  8479. isSlotElement(child) &&
  8480. typeof child.assignedNodes === 'function'
  8481. ) {
  8482. var assignedNodes = child.assignedNodes()
  8483. if (assignedNodes.length) {
  8484. assignedNodes.forEach(function (assignedNode) {
  8485. return _this.appendChildNode(
  8486. clone,
  8487. assignedNode,
  8488. copyStyles
  8489. )
  8490. })
  8491. }
  8492. } else {
  8493. this.appendChildNode(clone, child, copyStyles)
  8494. }
  8495. }
  8496. }
  8497. DocumentCloner.prototype.cloneNode = function (node, copyStyles) {
  8498. if (isTextNode(node)) {
  8499. return document.createTextNode(node.data)
  8500. }
  8501. if (!node.ownerDocument) {
  8502. return node.cloneNode(false)
  8503. }
  8504. var window = node.ownerDocument.defaultView
  8505. if (
  8506. window &&
  8507. isElementNode(node) &&
  8508. (isHTMLElementNode(node) || isSVGElementNode(node))
  8509. ) {
  8510. var clone = this.createElementClone(node)
  8511. clone.style.transitionProperty = 'none'
  8512. var style = window.getComputedStyle(node)
  8513. var styleBefore = window.getComputedStyle(node, ':before')
  8514. var styleAfter = window.getComputedStyle(node, ':after')
  8515. if (
  8516. this.referenceElement === node &&
  8517. isHTMLElementNode(clone)
  8518. ) {
  8519. this.clonedReferenceElement = clone
  8520. }
  8521. if (isBodyElement(clone)) {
  8522. createPseudoHideStyles(clone)
  8523. }
  8524. var counters = this.counters.parse(
  8525. new CSSParsedCounterDeclaration(this.context, style)
  8526. )
  8527. var before = this.resolvePseudoContent(
  8528. node,
  8529. clone,
  8530. styleBefore,
  8531. PseudoElementType.BEFORE
  8532. )
  8533. if (isCustomElement(node)) {
  8534. copyStyles = true
  8535. }
  8536. if (!isVideoElement(node)) {
  8537. this.cloneChildNodes(node, clone, copyStyles)
  8538. }
  8539. if (before) {
  8540. clone.insertBefore(before, clone.firstChild)
  8541. }
  8542. var after = this.resolvePseudoContent(
  8543. node,
  8544. clone,
  8545. styleAfter,
  8546. PseudoElementType.AFTER
  8547. )
  8548. if (after) {
  8549. clone.appendChild(after)
  8550. }
  8551. this.counters.pop(counters)
  8552. if (
  8553. (style &&
  8554. (this.options.copyStyles || isSVGElementNode(node)) &&
  8555. !isIFrameElement(node)) ||
  8556. copyStyles
  8557. ) {
  8558. copyCSSStyles(style, clone)
  8559. }
  8560. if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
  8561. this.scrolledElements.push([
  8562. clone,
  8563. node.scrollLeft,
  8564. node.scrollTop
  8565. ])
  8566. }
  8567. if (
  8568. (isTextareaElement(node) || isSelectElement(node)) &&
  8569. (isTextareaElement(clone) || isSelectElement(clone))
  8570. ) {
  8571. clone.value = node.value
  8572. }
  8573. return clone
  8574. }
  8575. return node.cloneNode(false)
  8576. }
  8577. DocumentCloner.prototype.resolvePseudoContent = function (
  8578. node,
  8579. clone,
  8580. style,
  8581. pseudoElt
  8582. ) {
  8583. var _this = this
  8584. if (!style) {
  8585. return
  8586. }
  8587. var value = style.content
  8588. var document = clone.ownerDocument
  8589. if (
  8590. !document ||
  8591. !value ||
  8592. value === 'none' ||
  8593. value === '-moz-alt-content' ||
  8594. style.display === 'none'
  8595. ) {
  8596. return
  8597. }
  8598. this.counters.parse(
  8599. new CSSParsedCounterDeclaration(this.context, style)
  8600. )
  8601. var declaration = new CSSParsedPseudoDeclaration(
  8602. this.context,
  8603. style
  8604. )
  8605. var anonymousReplacedElement = document.createElement(
  8606. 'html2canvaspseudoelement'
  8607. )
  8608. copyCSSStyles(style, anonymousReplacedElement)
  8609. declaration.content.forEach(function (token) {
  8610. if (token.type === 0 /* STRING_TOKEN */) {
  8611. anonymousReplacedElement.appendChild(
  8612. document.createTextNode(token.value)
  8613. )
  8614. } else if (token.type === 22 /* URL_TOKEN */) {
  8615. var img = document.createElement('img')
  8616. img.src = token.value
  8617. img.style.opacity = '1'
  8618. anonymousReplacedElement.appendChild(img)
  8619. } else if (token.type === 18 /* FUNCTION */) {
  8620. if (token.name === 'attr') {
  8621. var attr = token.values.filter(isIdentToken)
  8622. if (attr.length) {
  8623. anonymousReplacedElement.appendChild(
  8624. document.createTextNode(
  8625. node.getAttribute(attr[0].value) || ''
  8626. )
  8627. )
  8628. }
  8629. } else if (token.name === 'counter') {
  8630. var _a = token.values.filter(nonFunctionArgSeparator),
  8631. counter = _a[0],
  8632. counterStyle = _a[1]
  8633. if (counter && isIdentToken(counter)) {
  8634. var counterState = _this.counters.getCounterValue(
  8635. counter.value
  8636. )
  8637. var counterType =
  8638. counterStyle && isIdentToken(counterStyle)
  8639. ? listStyleType.parse(
  8640. _this.context,
  8641. counterStyle.value
  8642. )
  8643. : 3 /* DECIMAL */
  8644. anonymousReplacedElement.appendChild(
  8645. document.createTextNode(
  8646. createCounterText(counterState, counterType, false)
  8647. )
  8648. )
  8649. }
  8650. } else if (token.name === 'counters') {
  8651. var _b = token.values.filter(nonFunctionArgSeparator),
  8652. counter = _b[0],
  8653. delim = _b[1],
  8654. counterStyle = _b[2]
  8655. if (counter && isIdentToken(counter)) {
  8656. var counterStates = _this.counters.getCounterValues(
  8657. counter.value
  8658. )
  8659. var counterType_1 =
  8660. counterStyle && isIdentToken(counterStyle)
  8661. ? listStyleType.parse(
  8662. _this.context,
  8663. counterStyle.value
  8664. )
  8665. : 3 /* DECIMAL */
  8666. var separator =
  8667. delim && delim.type === 0 /* STRING_TOKEN */
  8668. ? delim.value
  8669. : ''
  8670. var text = counterStates
  8671. .map(function (value) {
  8672. return createCounterText(value, counterType_1, false)
  8673. })
  8674. .join(separator)
  8675. anonymousReplacedElement.appendChild(
  8676. document.createTextNode(text)
  8677. )
  8678. }
  8679. } else;
  8680. } else if (token.type === 20 /* IDENT_TOKEN */) {
  8681. switch (token.value) {
  8682. case 'open-quote':
  8683. anonymousReplacedElement.appendChild(
  8684. document.createTextNode(
  8685. getQuote(declaration.quotes, _this.quoteDepth++, true)
  8686. )
  8687. )
  8688. break
  8689. case 'close-quote':
  8690. anonymousReplacedElement.appendChild(
  8691. document.createTextNode(
  8692. getQuote(
  8693. declaration.quotes,
  8694. --_this.quoteDepth,
  8695. false
  8696. )
  8697. )
  8698. )
  8699. break
  8700. default:
  8701. // safari doesn't parse string tokens correctly because of lack of quotes
  8702. anonymousReplacedElement.appendChild(
  8703. document.createTextNode(token.value)
  8704. )
  8705. }
  8706. }
  8707. })
  8708. anonymousReplacedElement.className =
  8709. PSEUDO_HIDE_ELEMENT_CLASS_BEFORE +
  8710. ' ' +
  8711. PSEUDO_HIDE_ELEMENT_CLASS_AFTER
  8712. var newClassName =
  8713. pseudoElt === PseudoElementType.BEFORE
  8714. ? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE
  8715. : ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER
  8716. if (isSVGElementNode(clone)) {
  8717. clone.className.baseValue += newClassName
  8718. } else {
  8719. clone.className += newClassName
  8720. }
  8721. return anonymousReplacedElement
  8722. }
  8723. DocumentCloner.destroy = function (container) {
  8724. if (container.parentNode) {
  8725. container.parentNode.removeChild(container)
  8726. return true
  8727. }
  8728. return false
  8729. }
  8730. return DocumentCloner
  8731. })()
  8732. var PseudoElementType
  8733. ;(function (PseudoElementType) {
  8734. PseudoElementType[(PseudoElementType['BEFORE'] = 0)] = 'BEFORE'
  8735. PseudoElementType[(PseudoElementType['AFTER'] = 1)] = 'AFTER'
  8736. })(PseudoElementType || (PseudoElementType = {}))
  8737. var createIFrameContainer = function createIFrameContainer(
  8738. ownerDocument,
  8739. bounds
  8740. ) {
  8741. var cloneIframeContainer = ownerDocument.createElement('iframe')
  8742. cloneIframeContainer.className = 'html2canvas-container'
  8743. cloneIframeContainer.style.visibility = 'hidden'
  8744. cloneIframeContainer.style.position = 'fixed'
  8745. cloneIframeContainer.style.left = '-10000px'
  8746. cloneIframeContainer.style.top = '0px'
  8747. cloneIframeContainer.style.border = '0'
  8748. cloneIframeContainer.width = bounds.width.toString()
  8749. cloneIframeContainer.height = bounds.height.toString()
  8750. cloneIframeContainer.scrolling = 'no' // ios won't scroll without it
  8751. cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true')
  8752. ownerDocument.body.appendChild(cloneIframeContainer)
  8753. return cloneIframeContainer
  8754. }
  8755. var imageReady = function imageReady(img) {
  8756. return new Promise(function (resolve) {
  8757. if (img.complete) {
  8758. resolve()
  8759. return
  8760. }
  8761. if (!img.src) {
  8762. resolve()
  8763. return
  8764. }
  8765. img.onload = resolve
  8766. img.onerror = resolve
  8767. })
  8768. }
  8769. var imagesReady = function imagesReady(document) {
  8770. return Promise.all(
  8771. [].slice.call(document.images, 0).map(imageReady)
  8772. )
  8773. }
  8774. var iframeLoader = function iframeLoader(iframe) {
  8775. return new Promise(function (resolve, reject) {
  8776. var cloneWindow = iframe.contentWindow
  8777. if (!cloneWindow) {
  8778. return reject('No window assigned for iframe')
  8779. }
  8780. var documentClone = cloneWindow.document
  8781. cloneWindow.onload = iframe.onload = function () {
  8782. cloneWindow.onload = iframe.onload = null
  8783. var interval = setInterval(function () {
  8784. if (
  8785. documentClone.body.childNodes.length > 0 &&
  8786. documentClone.readyState === 'complete'
  8787. ) {
  8788. clearInterval(interval)
  8789. resolve(iframe)
  8790. }
  8791. }, 50)
  8792. }
  8793. })
  8794. }
  8795. var ignoredStyleProperties = [
  8796. 'all',
  8797. 'd',
  8798. 'content' // Safari shows pseudoelements if content is set
  8799. ]
  8800. var copyCSSStyles = function copyCSSStyles(style, target) {
  8801. // Edge does not provide value for cssText
  8802. for (var i = style.length - 1; i >= 0; i--) {
  8803. var property = style.item(i)
  8804. if (ignoredStyleProperties.indexOf(property) === -1) {
  8805. target.style.setProperty(
  8806. property,
  8807. style.getPropertyValue(property)
  8808. )
  8809. }
  8810. }
  8811. return target
  8812. }
  8813. var serializeDoctype = function serializeDoctype(doctype) {
  8814. var str = ''
  8815. if (doctype) {
  8816. str += '<!DOCTYPE '
  8817. if (doctype.name) {
  8818. str += doctype.name
  8819. }
  8820. if (doctype.internalSubset) {
  8821. str += doctype.internalSubset
  8822. }
  8823. if (doctype.publicId) {
  8824. str += '"' + doctype.publicId + '"'
  8825. }
  8826. if (doctype.systemId) {
  8827. str += '"' + doctype.systemId + '"'
  8828. }
  8829. str += '>'
  8830. }
  8831. return str
  8832. }
  8833. var restoreOwnerScroll = function restoreOwnerScroll(
  8834. ownerDocument,
  8835. x,
  8836. y
  8837. ) {
  8838. if (
  8839. ownerDocument &&
  8840. ownerDocument.defaultView &&
  8841. (x !== ownerDocument.defaultView.pageXOffset ||
  8842. y !== ownerDocument.defaultView.pageYOffset)
  8843. ) {
  8844. ownerDocument.defaultView.scrollTo(x, y)
  8845. }
  8846. }
  8847. var restoreNodeScroll = function restoreNodeScroll(_a) {
  8848. var element = _a[0],
  8849. x = _a[1],
  8850. y = _a[2]
  8851. element.scrollLeft = x
  8852. element.scrollTop = y
  8853. }
  8854. var PSEUDO_BEFORE = ':before'
  8855. var PSEUDO_AFTER = ':after'
  8856. var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE =
  8857. '___html2canvas___pseudoelement_before'
  8858. var PSEUDO_HIDE_ELEMENT_CLASS_AFTER =
  8859. '___html2canvas___pseudoelement_after'
  8860. var PSEUDO_HIDE_ELEMENT_STYLE =
  8861. '{\n content: "" !important;\n display: none !important;\n}'
  8862. var createPseudoHideStyles = function createPseudoHideStyles(body) {
  8863. createStyles(
  8864. body,
  8865. '.' +
  8866. PSEUDO_HIDE_ELEMENT_CLASS_BEFORE +
  8867. PSEUDO_BEFORE +
  8868. PSEUDO_HIDE_ELEMENT_STYLE +
  8869. '\n .' +
  8870. PSEUDO_HIDE_ELEMENT_CLASS_AFTER +
  8871. PSEUDO_AFTER +
  8872. PSEUDO_HIDE_ELEMENT_STYLE
  8873. )
  8874. }
  8875. var createStyles = function createStyles(body, styles) {
  8876. var document = body.ownerDocument
  8877. if (document) {
  8878. var style = document.createElement('style')
  8879. style.textContent = styles
  8880. body.appendChild(style)
  8881. }
  8882. }
  8883. var CacheStorage = /** @class */ (function () {
  8884. function CacheStorage() {}
  8885. CacheStorage.getOrigin = function (url) {
  8886. var link = CacheStorage._link
  8887. if (!link) {
  8888. return 'about:blank'
  8889. }
  8890. link.href = url
  8891. link.href = link.href // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
  8892. return link.protocol + link.hostname + link.port
  8893. }
  8894. CacheStorage.isSameOrigin = function (src) {
  8895. return CacheStorage.getOrigin(src) === CacheStorage._origin
  8896. }
  8897. CacheStorage.setContext = function (window) {
  8898. CacheStorage._link = window.document.createElement('a')
  8899. CacheStorage._origin = CacheStorage.getOrigin(
  8900. window.location.href
  8901. )
  8902. }
  8903. CacheStorage._origin = 'about:blank'
  8904. return CacheStorage
  8905. })()
  8906. var Cache = /** @class */ (function () {
  8907. function Cache(context, _options) {
  8908. this.context = context
  8909. this._options = _options // eslint-disable-next-line @typescript-eslint/no-explicit-any
  8910. this._cache = {}
  8911. }
  8912. Cache.prototype.addImage = function (src) {
  8913. var result = Promise.resolve()
  8914. if (this.has(src)) {
  8915. return result
  8916. }
  8917. if (isBlobImage(src) || isRenderable(src)) {
  8918. ;(this._cache[src] = this.loadImage(src)).catch(function () {
  8919. // prevent unhandled rejection
  8920. })
  8921. return result
  8922. }
  8923. return result
  8924. } // eslint-disable-next-line @typescript-eslint/no-explicit-any
  8925. Cache.prototype.match = function (src) {
  8926. return this._cache[src]
  8927. }
  8928. Cache.prototype.loadImage = function (key) {
  8929. return __awaiter(this, void 0, void 0, function () {
  8930. var isSameOrigin, useCORS, useProxy, src
  8931. var _this = this
  8932. return __generator(this, function (_a) {
  8933. switch (_a.label) {
  8934. case 0:
  8935. isSameOrigin = CacheStorage.isSameOrigin(key)
  8936. useCORS =
  8937. !isInlineImage(key) &&
  8938. this._options.useCORS === true &&
  8939. FEATURES.SUPPORT_CORS_IMAGES &&
  8940. !isSameOrigin
  8941. useProxy =
  8942. !isInlineImage(key) &&
  8943. !isSameOrigin &&
  8944. !isBlobImage(key) &&
  8945. typeof this._options.proxy === 'string' &&
  8946. FEATURES.SUPPORT_CORS_XHR &&
  8947. !useCORS
  8948. if (
  8949. !isSameOrigin &&
  8950. this._options.allowTaint === false &&
  8951. !isInlineImage(key) &&
  8952. !isBlobImage(key) &&
  8953. !useProxy &&
  8954. !useCORS
  8955. ) {
  8956. return [2 /*return*/]
  8957. }
  8958. src = key
  8959. if (!useProxy) return [3 /*break*/, 2]
  8960. return [4 /*yield*/, this.proxy(src)]
  8961. case 1:
  8962. src = _a.sent()
  8963. _a.label = 2
  8964. case 2:
  8965. this.context.logger.debug(
  8966. 'Added image ' + key.substring(0, 256)
  8967. )
  8968. return [
  8969. 4 /*yield*/,
  8970. new Promise(function (resolve, reject) {
  8971. var img = new Image()
  8972. img.onload = function () {
  8973. return resolve(img)
  8974. }
  8975. img.onerror = reject //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
  8976. if (isInlineBase64Image(src) || useCORS) {
  8977. img.crossOrigin = 'anonymous'
  8978. }
  8979. img.src = src
  8980. if (img.complete === true) {
  8981. // Inline XML images may fail to parse, throwing an Error later on
  8982. setTimeout(function () {
  8983. return resolve(img)
  8984. }, 500)
  8985. }
  8986. if (_this._options.imageTimeout > 0) {
  8987. setTimeout(function () {
  8988. return reject(
  8989. 'Timed out (' +
  8990. _this._options.imageTimeout +
  8991. 'ms) loading image'
  8992. )
  8993. }, _this._options.imageTimeout)
  8994. }
  8995. })
  8996. ]
  8997. case 3:
  8998. return [2 /*return*/, _a.sent()]
  8999. }
  9000. })
  9001. })
  9002. }
  9003. Cache.prototype.has = function (key) {
  9004. return typeof this._cache[key] !== 'undefined'
  9005. }
  9006. Cache.prototype.keys = function () {
  9007. return Promise.resolve(Object.keys(this._cache))
  9008. }
  9009. Cache.prototype.proxy = function (src) {
  9010. var _this = this
  9011. var proxy = this._options.proxy
  9012. if (!proxy) {
  9013. throw new Error('No proxy defined')
  9014. }
  9015. var key = src.substring(0, 256)
  9016. return new Promise(function (resolve, reject) {
  9017. var responseType = FEATURES.SUPPORT_RESPONSE_TYPE
  9018. ? 'blob'
  9019. : 'text'
  9020. var xhr = new XMLHttpRequest()
  9021. xhr.onload = function () {
  9022. if (xhr.status === 200) {
  9023. if (responseType === 'text') {
  9024. resolve(xhr.response)
  9025. } else {
  9026. var reader_1 = new FileReader()
  9027. reader_1.addEventListener(
  9028. 'load',
  9029. function () {
  9030. return resolve(reader_1.result)
  9031. },
  9032. false
  9033. )
  9034. reader_1.addEventListener(
  9035. 'error',
  9036. function (e) {
  9037. return reject(e)
  9038. },
  9039. false
  9040. )
  9041. reader_1.readAsDataURL(xhr.response)
  9042. }
  9043. } else {
  9044. reject(
  9045. 'Failed to proxy resource ' +
  9046. key +
  9047. ' with status code ' +
  9048. xhr.status
  9049. )
  9050. }
  9051. }
  9052. xhr.onerror = reject
  9053. var queryString = proxy.indexOf('?') > -1 ? '&' : '?'
  9054. xhr.open(
  9055. 'GET',
  9056. '' +
  9057. proxy +
  9058. queryString +
  9059. 'url=' +
  9060. encodeURIComponent(src) +
  9061. '&responseType=' +
  9062. responseType
  9063. )
  9064. if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
  9065. xhr.responseType = responseType
  9066. }
  9067. if (_this._options.imageTimeout) {
  9068. var timeout_1 = _this._options.imageTimeout
  9069. xhr.timeout = timeout_1
  9070. xhr.ontimeout = function () {
  9071. return reject(
  9072. 'Timed out (' + timeout_1 + 'ms) proxying ' + key
  9073. )
  9074. }
  9075. }
  9076. xhr.send()
  9077. })
  9078. }
  9079. return Cache
  9080. })()
  9081. var INLINE_SVG = /^data:image\/svg\+xml/i
  9082. var INLINE_BASE64 = /^data:image\/.*;base64,/i
  9083. var INLINE_IMG = /^data:image\/.*/i
  9084. var isRenderable = function isRenderable(src) {
  9085. return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src)
  9086. }
  9087. var isInlineImage = function isInlineImage(src) {
  9088. return INLINE_IMG.test(src)
  9089. }
  9090. var isInlineBase64Image = function isInlineBase64Image(src) {
  9091. return INLINE_BASE64.test(src)
  9092. }
  9093. var isBlobImage = function isBlobImage(src) {
  9094. return src.substr(0, 4) === 'blob'
  9095. }
  9096. var isSVG = function isSVG(src) {
  9097. return (
  9098. src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src)
  9099. )
  9100. }
  9101. var Vector = /** @class */ (function () {
  9102. function Vector(x, y) {
  9103. this.type = 0 /* VECTOR */
  9104. this.x = x
  9105. this.y = y
  9106. }
  9107. Vector.prototype.add = function (deltaX, deltaY) {
  9108. return new Vector(this.x + deltaX, this.y + deltaY)
  9109. }
  9110. return Vector
  9111. })()
  9112. var lerp = function lerp(a, b, t) {
  9113. return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t)
  9114. }
  9115. var BezierCurve = /** @class */ (function () {
  9116. function BezierCurve(start, startControl, endControl, end) {
  9117. this.type = 1 /* BEZIER_CURVE */
  9118. this.start = start
  9119. this.startControl = startControl
  9120. this.endControl = endControl
  9121. this.end = end
  9122. }
  9123. BezierCurve.prototype.subdivide = function (t, firstHalf) {
  9124. var ab = lerp(this.start, this.startControl, t)
  9125. var bc = lerp(this.startControl, this.endControl, t)
  9126. var cd = lerp(this.endControl, this.end, t)
  9127. var abbc = lerp(ab, bc, t)
  9128. var bccd = lerp(bc, cd, t)
  9129. var dest = lerp(abbc, bccd, t)
  9130. return firstHalf
  9131. ? new BezierCurve(this.start, ab, abbc, dest)
  9132. : new BezierCurve(dest, bccd, cd, this.end)
  9133. }
  9134. BezierCurve.prototype.add = function (deltaX, deltaY) {
  9135. return new BezierCurve(
  9136. this.start.add(deltaX, deltaY),
  9137. this.startControl.add(deltaX, deltaY),
  9138. this.endControl.add(deltaX, deltaY),
  9139. this.end.add(deltaX, deltaY)
  9140. )
  9141. }
  9142. BezierCurve.prototype.reverse = function () {
  9143. return new BezierCurve(
  9144. this.end,
  9145. this.endControl,
  9146. this.startControl,
  9147. this.start
  9148. )
  9149. }
  9150. return BezierCurve
  9151. })()
  9152. var isBezierCurve = function isBezierCurve(path) {
  9153. return path.type === 1 /* BEZIER_CURVE */
  9154. }
  9155. var BoundCurves = /** @class */ (function () {
  9156. function BoundCurves(element) {
  9157. var styles = element.styles
  9158. var bounds = element.bounds
  9159. var _a = getAbsoluteValueForTuple(
  9160. styles.borderTopLeftRadius,
  9161. bounds.width,
  9162. bounds.height
  9163. ),
  9164. tlh = _a[0],
  9165. tlv = _a[1]
  9166. var _b = getAbsoluteValueForTuple(
  9167. styles.borderTopRightRadius,
  9168. bounds.width,
  9169. bounds.height
  9170. ),
  9171. trh = _b[0],
  9172. trv = _b[1]
  9173. var _c = getAbsoluteValueForTuple(
  9174. styles.borderBottomRightRadius,
  9175. bounds.width,
  9176. bounds.height
  9177. ),
  9178. brh = _c[0],
  9179. brv = _c[1]
  9180. var _d = getAbsoluteValueForTuple(
  9181. styles.borderBottomLeftRadius,
  9182. bounds.width,
  9183. bounds.height
  9184. ),
  9185. blh = _d[0],
  9186. blv = _d[1]
  9187. var factors = []
  9188. factors.push((tlh + trh) / bounds.width)
  9189. factors.push((blh + brh) / bounds.width)
  9190. factors.push((tlv + blv) / bounds.height)
  9191. factors.push((trv + brv) / bounds.height)
  9192. var maxFactor = Math.max.apply(Math, factors)
  9193. if (maxFactor > 1) {
  9194. tlh /= maxFactor
  9195. tlv /= maxFactor
  9196. trh /= maxFactor
  9197. trv /= maxFactor
  9198. brh /= maxFactor
  9199. brv /= maxFactor
  9200. blh /= maxFactor
  9201. blv /= maxFactor
  9202. }
  9203. var topWidth = bounds.width - trh
  9204. var rightHeight = bounds.height - brv
  9205. var bottomWidth = bounds.width - brh
  9206. var leftHeight = bounds.height - blv
  9207. var borderTopWidth = styles.borderTopWidth
  9208. var borderRightWidth = styles.borderRightWidth
  9209. var borderBottomWidth = styles.borderBottomWidth
  9210. var borderLeftWidth = styles.borderLeftWidth
  9211. var paddingTop = getAbsoluteValue(
  9212. styles.paddingTop,
  9213. element.bounds.width
  9214. )
  9215. var paddingRight = getAbsoluteValue(
  9216. styles.paddingRight,
  9217. element.bounds.width
  9218. )
  9219. var paddingBottom = getAbsoluteValue(
  9220. styles.paddingBottom,
  9221. element.bounds.width
  9222. )
  9223. var paddingLeft = getAbsoluteValue(
  9224. styles.paddingLeft,
  9225. element.bounds.width
  9226. )
  9227. this.topLeftBorderDoubleOuterBox =
  9228. tlh > 0 || tlv > 0
  9229. ? getCurvePoints(
  9230. bounds.left + borderLeftWidth / 3,
  9231. bounds.top + borderTopWidth / 3,
  9232. tlh - borderLeftWidth / 3,
  9233. tlv - borderTopWidth / 3,
  9234. CORNER.TOP_LEFT
  9235. )
  9236. : new Vector(
  9237. bounds.left + borderLeftWidth / 3,
  9238. bounds.top + borderTopWidth / 3
  9239. )
  9240. this.topRightBorderDoubleOuterBox =
  9241. tlh > 0 || tlv > 0
  9242. ? getCurvePoints(
  9243. bounds.left + topWidth,
  9244. bounds.top + borderTopWidth / 3,
  9245. trh - borderRightWidth / 3,
  9246. trv - borderTopWidth / 3,
  9247. CORNER.TOP_RIGHT
  9248. )
  9249. : new Vector(
  9250. bounds.left + bounds.width - borderRightWidth / 3,
  9251. bounds.top + borderTopWidth / 3
  9252. )
  9253. this.bottomRightBorderDoubleOuterBox =
  9254. brh > 0 || brv > 0
  9255. ? getCurvePoints(
  9256. bounds.left + bottomWidth,
  9257. bounds.top + rightHeight,
  9258. brh - borderRightWidth / 3,
  9259. brv - borderBottomWidth / 3,
  9260. CORNER.BOTTOM_RIGHT
  9261. )
  9262. : new Vector(
  9263. bounds.left + bounds.width - borderRightWidth / 3,
  9264. bounds.top + bounds.height - borderBottomWidth / 3
  9265. )
  9266. this.bottomLeftBorderDoubleOuterBox =
  9267. blh > 0 || blv > 0
  9268. ? getCurvePoints(
  9269. bounds.left + borderLeftWidth / 3,
  9270. bounds.top + leftHeight,
  9271. blh - borderLeftWidth / 3,
  9272. blv - borderBottomWidth / 3,
  9273. CORNER.BOTTOM_LEFT
  9274. )
  9275. : new Vector(
  9276. bounds.left + borderLeftWidth / 3,
  9277. bounds.top + bounds.height - borderBottomWidth / 3
  9278. )
  9279. this.topLeftBorderDoubleInnerBox =
  9280. tlh > 0 || tlv > 0
  9281. ? getCurvePoints(
  9282. bounds.left + (borderLeftWidth * 2) / 3,
  9283. bounds.top + (borderTopWidth * 2) / 3,
  9284. tlh - (borderLeftWidth * 2) / 3,
  9285. tlv - (borderTopWidth * 2) / 3,
  9286. CORNER.TOP_LEFT
  9287. )
  9288. : new Vector(
  9289. bounds.left + (borderLeftWidth * 2) / 3,
  9290. bounds.top + (borderTopWidth * 2) / 3
  9291. )
  9292. this.topRightBorderDoubleInnerBox =
  9293. tlh > 0 || tlv > 0
  9294. ? getCurvePoints(
  9295. bounds.left + topWidth,
  9296. bounds.top + (borderTopWidth * 2) / 3,
  9297. trh - (borderRightWidth * 2) / 3,
  9298. trv - (borderTopWidth * 2) / 3,
  9299. CORNER.TOP_RIGHT
  9300. )
  9301. : new Vector(
  9302. bounds.left + bounds.width - (borderRightWidth * 2) / 3,
  9303. bounds.top + (borderTopWidth * 2) / 3
  9304. )
  9305. this.bottomRightBorderDoubleInnerBox =
  9306. brh > 0 || brv > 0
  9307. ? getCurvePoints(
  9308. bounds.left + bottomWidth,
  9309. bounds.top + rightHeight,
  9310. brh - (borderRightWidth * 2) / 3,
  9311. brv - (borderBottomWidth * 2) / 3,
  9312. CORNER.BOTTOM_RIGHT
  9313. )
  9314. : new Vector(
  9315. bounds.left + bounds.width - (borderRightWidth * 2) / 3,
  9316. bounds.top + bounds.height - (borderBottomWidth * 2) / 3
  9317. )
  9318. this.bottomLeftBorderDoubleInnerBox =
  9319. blh > 0 || blv > 0
  9320. ? getCurvePoints(
  9321. bounds.left + (borderLeftWidth * 2) / 3,
  9322. bounds.top + leftHeight,
  9323. blh - (borderLeftWidth * 2) / 3,
  9324. blv - (borderBottomWidth * 2) / 3,
  9325. CORNER.BOTTOM_LEFT
  9326. )
  9327. : new Vector(
  9328. bounds.left + (borderLeftWidth * 2) / 3,
  9329. bounds.top + bounds.height - (borderBottomWidth * 2) / 3
  9330. )
  9331. this.topLeftBorderStroke =
  9332. tlh > 0 || tlv > 0
  9333. ? getCurvePoints(
  9334. bounds.left + borderLeftWidth / 2,
  9335. bounds.top + borderTopWidth / 2,
  9336. tlh - borderLeftWidth / 2,
  9337. tlv - borderTopWidth / 2,
  9338. CORNER.TOP_LEFT
  9339. )
  9340. : new Vector(
  9341. bounds.left + borderLeftWidth / 2,
  9342. bounds.top + borderTopWidth / 2
  9343. )
  9344. this.topRightBorderStroke =
  9345. tlh > 0 || tlv > 0
  9346. ? getCurvePoints(
  9347. bounds.left + topWidth,
  9348. bounds.top + borderTopWidth / 2,
  9349. trh - borderRightWidth / 2,
  9350. trv - borderTopWidth / 2,
  9351. CORNER.TOP_RIGHT
  9352. )
  9353. : new Vector(
  9354. bounds.left + bounds.width - borderRightWidth / 2,
  9355. bounds.top + borderTopWidth / 2
  9356. )
  9357. this.bottomRightBorderStroke =
  9358. brh > 0 || brv > 0
  9359. ? getCurvePoints(
  9360. bounds.left + bottomWidth,
  9361. bounds.top + rightHeight,
  9362. brh - borderRightWidth / 2,
  9363. brv - borderBottomWidth / 2,
  9364. CORNER.BOTTOM_RIGHT
  9365. )
  9366. : new Vector(
  9367. bounds.left + bounds.width - borderRightWidth / 2,
  9368. bounds.top + bounds.height - borderBottomWidth / 2
  9369. )
  9370. this.bottomLeftBorderStroke =
  9371. blh > 0 || blv > 0
  9372. ? getCurvePoints(
  9373. bounds.left + borderLeftWidth / 2,
  9374. bounds.top + leftHeight,
  9375. blh - borderLeftWidth / 2,
  9376. blv - borderBottomWidth / 2,
  9377. CORNER.BOTTOM_LEFT
  9378. )
  9379. : new Vector(
  9380. bounds.left + borderLeftWidth / 2,
  9381. bounds.top + bounds.height - borderBottomWidth / 2
  9382. )
  9383. this.topLeftBorderBox =
  9384. tlh > 0 || tlv > 0
  9385. ? getCurvePoints(
  9386. bounds.left,
  9387. bounds.top,
  9388. tlh,
  9389. tlv,
  9390. CORNER.TOP_LEFT
  9391. )
  9392. : new Vector(bounds.left, bounds.top)
  9393. this.topRightBorderBox =
  9394. trh > 0 || trv > 0
  9395. ? getCurvePoints(
  9396. bounds.left + topWidth,
  9397. bounds.top,
  9398. trh,
  9399. trv,
  9400. CORNER.TOP_RIGHT
  9401. )
  9402. : new Vector(bounds.left + bounds.width, bounds.top)
  9403. this.bottomRightBorderBox =
  9404. brh > 0 || brv > 0
  9405. ? getCurvePoints(
  9406. bounds.left + bottomWidth,
  9407. bounds.top + rightHeight,
  9408. brh,
  9409. brv,
  9410. CORNER.BOTTOM_RIGHT
  9411. )
  9412. : new Vector(
  9413. bounds.left + bounds.width,
  9414. bounds.top + bounds.height
  9415. )
  9416. this.bottomLeftBorderBox =
  9417. blh > 0 || blv > 0
  9418. ? getCurvePoints(
  9419. bounds.left,
  9420. bounds.top + leftHeight,
  9421. blh,
  9422. blv,
  9423. CORNER.BOTTOM_LEFT
  9424. )
  9425. : new Vector(bounds.left, bounds.top + bounds.height)
  9426. this.topLeftPaddingBox =
  9427. tlh > 0 || tlv > 0
  9428. ? getCurvePoints(
  9429. bounds.left + borderLeftWidth,
  9430. bounds.top + borderTopWidth,
  9431. Math.max(0, tlh - borderLeftWidth),
  9432. Math.max(0, tlv - borderTopWidth),
  9433. CORNER.TOP_LEFT
  9434. )
  9435. : new Vector(
  9436. bounds.left + borderLeftWidth,
  9437. bounds.top + borderTopWidth
  9438. )
  9439. this.topRightPaddingBox =
  9440. trh > 0 || trv > 0
  9441. ? getCurvePoints(
  9442. bounds.left +
  9443. Math.min(topWidth, bounds.width - borderRightWidth),
  9444. bounds.top + borderTopWidth,
  9445. topWidth > bounds.width + borderRightWidth
  9446. ? 0
  9447. : Math.max(0, trh - borderRightWidth),
  9448. Math.max(0, trv - borderTopWidth),
  9449. CORNER.TOP_RIGHT
  9450. )
  9451. : new Vector(
  9452. bounds.left + bounds.width - borderRightWidth,
  9453. bounds.top + borderTopWidth
  9454. )
  9455. this.bottomRightPaddingBox =
  9456. brh > 0 || brv > 0
  9457. ? getCurvePoints(
  9458. bounds.left +
  9459. Math.min(bottomWidth, bounds.width - borderLeftWidth),
  9460. bounds.top +
  9461. Math.min(
  9462. rightHeight,
  9463. bounds.height - borderBottomWidth
  9464. ),
  9465. Math.max(0, brh - borderRightWidth),
  9466. Math.max(0, brv - borderBottomWidth),
  9467. CORNER.BOTTOM_RIGHT
  9468. )
  9469. : new Vector(
  9470. bounds.left + bounds.width - borderRightWidth,
  9471. bounds.top + bounds.height - borderBottomWidth
  9472. )
  9473. this.bottomLeftPaddingBox =
  9474. blh > 0 || blv > 0
  9475. ? getCurvePoints(
  9476. bounds.left + borderLeftWidth,
  9477. bounds.top +
  9478. Math.min(leftHeight, bounds.height - borderBottomWidth),
  9479. Math.max(0, blh - borderLeftWidth),
  9480. Math.max(0, blv - borderBottomWidth),
  9481. CORNER.BOTTOM_LEFT
  9482. )
  9483. : new Vector(
  9484. bounds.left + borderLeftWidth,
  9485. bounds.top + bounds.height - borderBottomWidth
  9486. )
  9487. this.topLeftContentBox =
  9488. tlh > 0 || tlv > 0
  9489. ? getCurvePoints(
  9490. bounds.left + borderLeftWidth + paddingLeft,
  9491. bounds.top + borderTopWidth + paddingTop,
  9492. Math.max(0, tlh - (borderLeftWidth + paddingLeft)),
  9493. Math.max(0, tlv - (borderTopWidth + paddingTop)),
  9494. CORNER.TOP_LEFT
  9495. )
  9496. : new Vector(
  9497. bounds.left + borderLeftWidth + paddingLeft,
  9498. bounds.top + borderTopWidth + paddingTop
  9499. )
  9500. this.topRightContentBox =
  9501. trh > 0 || trv > 0
  9502. ? getCurvePoints(
  9503. bounds.left +
  9504. Math.min(
  9505. topWidth,
  9506. bounds.width + borderLeftWidth + paddingLeft
  9507. ),
  9508. bounds.top + borderTopWidth + paddingTop,
  9509. topWidth > bounds.width + borderLeftWidth + paddingLeft
  9510. ? 0
  9511. : trh - borderLeftWidth + paddingLeft,
  9512. trv - (borderTopWidth + paddingTop),
  9513. CORNER.TOP_RIGHT
  9514. )
  9515. : new Vector(
  9516. bounds.left +
  9517. bounds.width -
  9518. (borderRightWidth + paddingRight),
  9519. bounds.top + borderTopWidth + paddingTop
  9520. )
  9521. this.bottomRightContentBox =
  9522. brh > 0 || brv > 0
  9523. ? getCurvePoints(
  9524. bounds.left +
  9525. Math.min(
  9526. bottomWidth,
  9527. bounds.width - (borderLeftWidth + paddingLeft)
  9528. ),
  9529. bounds.top +
  9530. Math.min(
  9531. rightHeight,
  9532. bounds.height + borderTopWidth + paddingTop
  9533. ),
  9534. Math.max(0, brh - (borderRightWidth + paddingRight)),
  9535. brv - (borderBottomWidth + paddingBottom),
  9536. CORNER.BOTTOM_RIGHT
  9537. )
  9538. : new Vector(
  9539. bounds.left +
  9540. bounds.width -
  9541. (borderRightWidth + paddingRight),
  9542. bounds.top +
  9543. bounds.height -
  9544. (borderBottomWidth + paddingBottom)
  9545. )
  9546. this.bottomLeftContentBox =
  9547. blh > 0 || blv > 0
  9548. ? getCurvePoints(
  9549. bounds.left + borderLeftWidth + paddingLeft,
  9550. bounds.top + leftHeight,
  9551. Math.max(0, blh - (borderLeftWidth + paddingLeft)),
  9552. blv - (borderBottomWidth + paddingBottom),
  9553. CORNER.BOTTOM_LEFT
  9554. )
  9555. : new Vector(
  9556. bounds.left + borderLeftWidth + paddingLeft,
  9557. bounds.top +
  9558. bounds.height -
  9559. (borderBottomWidth + paddingBottom)
  9560. )
  9561. }
  9562. return BoundCurves
  9563. })()
  9564. var CORNER
  9565. ;(function (CORNER) {
  9566. CORNER[(CORNER['TOP_LEFT'] = 0)] = 'TOP_LEFT'
  9567. CORNER[(CORNER['TOP_RIGHT'] = 1)] = 'TOP_RIGHT'
  9568. CORNER[(CORNER['BOTTOM_RIGHT'] = 2)] = 'BOTTOM_RIGHT'
  9569. CORNER[(CORNER['BOTTOM_LEFT'] = 3)] = 'BOTTOM_LEFT'
  9570. })(CORNER || (CORNER = {}))
  9571. var getCurvePoints = function getCurvePoints(x, y, r1, r2, position) {
  9572. var kappa = 4 * ((Math.sqrt(2) - 1) / 3)
  9573. var ox = r1 * kappa // control point offset horizontal
  9574. var oy = r2 * kappa // control point offset vertical
  9575. var xm = x + r1 // x-middle
  9576. var ym = y + r2 // y-middle
  9577. switch (position) {
  9578. case CORNER.TOP_LEFT:
  9579. return new BezierCurve(
  9580. new Vector(x, ym),
  9581. new Vector(x, ym - oy),
  9582. new Vector(xm - ox, y),
  9583. new Vector(xm, y)
  9584. )
  9585. case CORNER.TOP_RIGHT:
  9586. return new BezierCurve(
  9587. new Vector(x, y),
  9588. new Vector(x + ox, y),
  9589. new Vector(xm, ym - oy),
  9590. new Vector(xm, ym)
  9591. )
  9592. case CORNER.BOTTOM_RIGHT:
  9593. return new BezierCurve(
  9594. new Vector(xm, y),
  9595. new Vector(xm, y + oy),
  9596. new Vector(x + ox, ym),
  9597. new Vector(x, ym)
  9598. )
  9599. case CORNER.BOTTOM_LEFT:
  9600. default:
  9601. return new BezierCurve(
  9602. new Vector(xm, ym),
  9603. new Vector(xm - ox, ym),
  9604. new Vector(x, y + oy),
  9605. new Vector(x, y)
  9606. )
  9607. }
  9608. }
  9609. var calculateBorderBoxPath = function calculateBorderBoxPath(curves) {
  9610. return [
  9611. curves.topLeftBorderBox,
  9612. curves.topRightBorderBox,
  9613. curves.bottomRightBorderBox,
  9614. curves.bottomLeftBorderBox
  9615. ]
  9616. }
  9617. var calculateContentBoxPath = function calculateContentBoxPath(
  9618. curves
  9619. ) {
  9620. return [
  9621. curves.topLeftContentBox,
  9622. curves.topRightContentBox,
  9623. curves.bottomRightContentBox,
  9624. curves.bottomLeftContentBox
  9625. ]
  9626. }
  9627. var calculatePaddingBoxPath = function calculatePaddingBoxPath(
  9628. curves
  9629. ) {
  9630. return [
  9631. curves.topLeftPaddingBox,
  9632. curves.topRightPaddingBox,
  9633. curves.bottomRightPaddingBox,
  9634. curves.bottomLeftPaddingBox
  9635. ]
  9636. }
  9637. var TransformEffect = /** @class */ (function () {
  9638. function TransformEffect(offsetX, offsetY, matrix) {
  9639. this.offsetX = offsetX
  9640. this.offsetY = offsetY
  9641. this.matrix = matrix
  9642. this.type = 0 /* TRANSFORM */
  9643. this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */
  9644. }
  9645. return TransformEffect
  9646. })()
  9647. var ClipEffect = /** @class */ (function () {
  9648. function ClipEffect(path, target) {
  9649. this.path = path
  9650. this.target = target
  9651. this.type = 1 /* CLIP */
  9652. }
  9653. return ClipEffect
  9654. })()
  9655. var OpacityEffect = /** @class */ (function () {
  9656. function OpacityEffect(opacity) {
  9657. this.opacity = opacity
  9658. this.type = 2 /* OPACITY */
  9659. this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */
  9660. }
  9661. return OpacityEffect
  9662. })()
  9663. var isTransformEffect = function isTransformEffect(effect) {
  9664. return effect.type === 0 /* TRANSFORM */
  9665. }
  9666. var isClipEffect = function isClipEffect(effect) {
  9667. return effect.type === 1 /* CLIP */
  9668. }
  9669. var isOpacityEffect = function isOpacityEffect(effect) {
  9670. return effect.type === 2 /* OPACITY */
  9671. }
  9672. var equalPath = function equalPath(a, b) {
  9673. if (a.length === b.length) {
  9674. return a.some(function (v, i) {
  9675. return v === b[i]
  9676. })
  9677. }
  9678. return false
  9679. }
  9680. var transformPath = function transformPath(
  9681. path,
  9682. deltaX,
  9683. deltaY,
  9684. deltaW,
  9685. deltaH
  9686. ) {
  9687. return path.map(function (point, index) {
  9688. switch (index) {
  9689. case 0:
  9690. return point.add(deltaX, deltaY)
  9691. case 1:
  9692. return point.add(deltaX + deltaW, deltaY)
  9693. case 2:
  9694. return point.add(deltaX + deltaW, deltaY + deltaH)
  9695. case 3:
  9696. return point.add(deltaX, deltaY + deltaH)
  9697. }
  9698. return point
  9699. })
  9700. }
  9701. var StackingContext = /** @class */ (function () {
  9702. function StackingContext(container) {
  9703. this.element = container
  9704. this.inlineLevel = []
  9705. this.nonInlineLevel = []
  9706. this.negativeZIndex = []
  9707. this.zeroOrAutoZIndexOrTransformedOrOpacity = []
  9708. this.positiveZIndex = []
  9709. this.nonPositionedFloats = []
  9710. this.nonPositionedInlineLevel = []
  9711. }
  9712. return StackingContext
  9713. })()
  9714. var ElementPaint = /** @class */ (function () {
  9715. function ElementPaint(container, parent) {
  9716. this.container = container
  9717. this.parent = parent
  9718. this.effects = []
  9719. this.curves = new BoundCurves(this.container)
  9720. if (this.container.styles.opacity < 1) {
  9721. this.effects.push(
  9722. new OpacityEffect(this.container.styles.opacity)
  9723. )
  9724. }
  9725. if (this.container.styles.transform !== null) {
  9726. var offsetX =
  9727. this.container.bounds.left +
  9728. this.container.styles.transformOrigin[0].number
  9729. var offsetY =
  9730. this.container.bounds.top +
  9731. this.container.styles.transformOrigin[1].number
  9732. var matrix = this.container.styles.transform
  9733. this.effects.push(new TransformEffect(offsetX, offsetY, matrix))
  9734. }
  9735. if (this.container.styles.overflowX !== 0 /* VISIBLE */) {
  9736. var borderBox = calculateBorderBoxPath(this.curves)
  9737. var paddingBox = calculatePaddingBoxPath(this.curves)
  9738. if (equalPath(borderBox, paddingBox)) {
  9739. this.effects.push(
  9740. new ClipEffect(
  9741. borderBox,
  9742. 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */
  9743. )
  9744. )
  9745. } else {
  9746. this.effects.push(
  9747. new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */)
  9748. )
  9749. this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */))
  9750. }
  9751. }
  9752. }
  9753. ElementPaint.prototype.getEffects = function (target) {
  9754. var inFlow =
  9755. [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(
  9756. this.container.styles.position
  9757. ) === -1
  9758. var parent = this.parent
  9759. var effects = this.effects.slice(0)
  9760. while (parent) {
  9761. var croplessEffects = parent.effects.filter(function (effect) {
  9762. return !isClipEffect(effect)
  9763. })
  9764. if (
  9765. inFlow ||
  9766. parent.container.styles.position !== 0 /* STATIC */ ||
  9767. !parent.parent
  9768. ) {
  9769. effects.unshift.apply(effects, croplessEffects)
  9770. inFlow =
  9771. [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(
  9772. parent.container.styles.position
  9773. ) === -1
  9774. if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {
  9775. var borderBox = calculateBorderBoxPath(parent.curves)
  9776. var paddingBox = calculatePaddingBoxPath(parent.curves)
  9777. if (!equalPath(borderBox, paddingBox)) {
  9778. effects.unshift(
  9779. new ClipEffect(
  9780. paddingBox,
  9781. 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */
  9782. )
  9783. )
  9784. }
  9785. }
  9786. } else {
  9787. effects.unshift.apply(effects, croplessEffects)
  9788. }
  9789. parent = parent.parent
  9790. }
  9791. return effects.filter(function (effect) {
  9792. return contains(effect.target, target)
  9793. })
  9794. }
  9795. return ElementPaint
  9796. })()
  9797. var parseStackTree = function parseStackTree(
  9798. parent,
  9799. stackingContext,
  9800. realStackingContext,
  9801. listItems
  9802. ) {
  9803. parent.container.elements.forEach(function (child) {
  9804. var treatAsRealStackingContext = contains(
  9805. child.flags,
  9806. 4 /* CREATES_REAL_STACKING_CONTEXT */
  9807. )
  9808. var createsStackingContext = contains(
  9809. child.flags,
  9810. 2 /* CREATES_STACKING_CONTEXT */
  9811. )
  9812. var paintContainer = new ElementPaint(child, parent)
  9813. if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {
  9814. listItems.push(paintContainer)
  9815. }
  9816. var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */)
  9817. ? []
  9818. : listItems
  9819. if (treatAsRealStackingContext || createsStackingContext) {
  9820. var parentStack =
  9821. treatAsRealStackingContext || child.styles.isPositioned()
  9822. ? realStackingContext
  9823. : stackingContext
  9824. var stack = new StackingContext(paintContainer)
  9825. if (
  9826. child.styles.isPositioned() ||
  9827. child.styles.opacity < 1 ||
  9828. child.styles.isTransformed()
  9829. ) {
  9830. var order_1 = child.styles.zIndex.order
  9831. if (order_1 < 0) {
  9832. var index_1 = 0
  9833. parentStack.negativeZIndex.some(function (current, i) {
  9834. if (
  9835. order_1 > current.element.container.styles.zIndex.order
  9836. ) {
  9837. index_1 = i
  9838. return false
  9839. } else if (index_1 > 0) {
  9840. return true
  9841. }
  9842. return false
  9843. })
  9844. parentStack.negativeZIndex.splice(index_1, 0, stack)
  9845. } else if (order_1 > 0) {
  9846. var index_2 = 0
  9847. parentStack.positiveZIndex.some(function (current, i) {
  9848. if (
  9849. order_1 >= current.element.container.styles.zIndex.order
  9850. ) {
  9851. index_2 = i + 1
  9852. return false
  9853. } else if (index_2 > 0) {
  9854. return true
  9855. }
  9856. return false
  9857. })
  9858. parentStack.positiveZIndex.splice(index_2, 0, stack)
  9859. } else {
  9860. parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(
  9861. stack
  9862. )
  9863. }
  9864. } else {
  9865. if (child.styles.isFloating()) {
  9866. parentStack.nonPositionedFloats.push(stack)
  9867. } else {
  9868. parentStack.nonPositionedInlineLevel.push(stack)
  9869. }
  9870. }
  9871. parseStackTree(
  9872. paintContainer,
  9873. stack,
  9874. treatAsRealStackingContext ? stack : realStackingContext,
  9875. listOwnerItems
  9876. )
  9877. } else {
  9878. if (child.styles.isInlineLevel()) {
  9879. stackingContext.inlineLevel.push(paintContainer)
  9880. } else {
  9881. stackingContext.nonInlineLevel.push(paintContainer)
  9882. }
  9883. parseStackTree(
  9884. paintContainer,
  9885. stackingContext,
  9886. realStackingContext,
  9887. listOwnerItems
  9888. )
  9889. }
  9890. if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {
  9891. processListItems(child, listOwnerItems)
  9892. }
  9893. })
  9894. }
  9895. var processListItems = function processListItems(owner, elements) {
  9896. var numbering =
  9897. owner instanceof OLElementContainer ? owner.start : 1
  9898. var reversed =
  9899. owner instanceof OLElementContainer ? owner.reversed : false
  9900. for (var i = 0; i < elements.length; i++) {
  9901. var item = elements[i]
  9902. if (
  9903. item.container instanceof LIElementContainer &&
  9904. typeof item.container.value === 'number' &&
  9905. item.container.value !== 0
  9906. ) {
  9907. numbering = item.container.value
  9908. }
  9909. item.listValue = createCounterText(
  9910. numbering,
  9911. item.container.styles.listStyleType,
  9912. true
  9913. )
  9914. numbering += reversed ? -1 : 1
  9915. }
  9916. }
  9917. var parseStackingContexts = function parseStackingContexts(
  9918. container
  9919. ) {
  9920. var paintContainer = new ElementPaint(container, null)
  9921. var root = new StackingContext(paintContainer)
  9922. var listItems = []
  9923. parseStackTree(paintContainer, root, root, listItems)
  9924. processListItems(paintContainer.container, listItems)
  9925. return root
  9926. }
  9927. var parsePathForBorder = function parsePathForBorder(
  9928. curves,
  9929. borderSide
  9930. ) {
  9931. switch (borderSide) {
  9932. case 0:
  9933. return createPathFromCurves(
  9934. curves.topLeftBorderBox,
  9935. curves.topLeftPaddingBox,
  9936. curves.topRightBorderBox,
  9937. curves.topRightPaddingBox
  9938. )
  9939. case 1:
  9940. return createPathFromCurves(
  9941. curves.topRightBorderBox,
  9942. curves.topRightPaddingBox,
  9943. curves.bottomRightBorderBox,
  9944. curves.bottomRightPaddingBox
  9945. )
  9946. case 2:
  9947. return createPathFromCurves(
  9948. curves.bottomRightBorderBox,
  9949. curves.bottomRightPaddingBox,
  9950. curves.bottomLeftBorderBox,
  9951. curves.bottomLeftPaddingBox
  9952. )
  9953. case 3:
  9954. default:
  9955. return createPathFromCurves(
  9956. curves.bottomLeftBorderBox,
  9957. curves.bottomLeftPaddingBox,
  9958. curves.topLeftBorderBox,
  9959. curves.topLeftPaddingBox
  9960. )
  9961. }
  9962. }
  9963. var parsePathForBorderDoubleOuter =
  9964. function parsePathForBorderDoubleOuter(curves, borderSide) {
  9965. switch (borderSide) {
  9966. case 0:
  9967. return createPathFromCurves(
  9968. curves.topLeftBorderBox,
  9969. curves.topLeftBorderDoubleOuterBox,
  9970. curves.topRightBorderBox,
  9971. curves.topRightBorderDoubleOuterBox
  9972. )
  9973. case 1:
  9974. return createPathFromCurves(
  9975. curves.topRightBorderBox,
  9976. curves.topRightBorderDoubleOuterBox,
  9977. curves.bottomRightBorderBox,
  9978. curves.bottomRightBorderDoubleOuterBox
  9979. )
  9980. case 2:
  9981. return createPathFromCurves(
  9982. curves.bottomRightBorderBox,
  9983. curves.bottomRightBorderDoubleOuterBox,
  9984. curves.bottomLeftBorderBox,
  9985. curves.bottomLeftBorderDoubleOuterBox
  9986. )
  9987. case 3:
  9988. default:
  9989. return createPathFromCurves(
  9990. curves.bottomLeftBorderBox,
  9991. curves.bottomLeftBorderDoubleOuterBox,
  9992. curves.topLeftBorderBox,
  9993. curves.topLeftBorderDoubleOuterBox
  9994. )
  9995. }
  9996. }
  9997. var parsePathForBorderDoubleInner =
  9998. function parsePathForBorderDoubleInner(curves, borderSide) {
  9999. switch (borderSide) {
  10000. case 0:
  10001. return createPathFromCurves(
  10002. curves.topLeftBorderDoubleInnerBox,
  10003. curves.topLeftPaddingBox,
  10004. curves.topRightBorderDoubleInnerBox,
  10005. curves.topRightPaddingBox
  10006. )
  10007. case 1:
  10008. return createPathFromCurves(
  10009. curves.topRightBorderDoubleInnerBox,
  10010. curves.topRightPaddingBox,
  10011. curves.bottomRightBorderDoubleInnerBox,
  10012. curves.bottomRightPaddingBox
  10013. )
  10014. case 2:
  10015. return createPathFromCurves(
  10016. curves.bottomRightBorderDoubleInnerBox,
  10017. curves.bottomRightPaddingBox,
  10018. curves.bottomLeftBorderDoubleInnerBox,
  10019. curves.bottomLeftPaddingBox
  10020. )
  10021. case 3:
  10022. default:
  10023. return createPathFromCurves(
  10024. curves.bottomLeftBorderDoubleInnerBox,
  10025. curves.bottomLeftPaddingBox,
  10026. curves.topLeftBorderDoubleInnerBox,
  10027. curves.topLeftPaddingBox
  10028. )
  10029. }
  10030. }
  10031. var parsePathForBorderStroke = function parsePathForBorderStroke(
  10032. curves,
  10033. borderSide
  10034. ) {
  10035. switch (borderSide) {
  10036. case 0:
  10037. return createStrokePathFromCurves(
  10038. curves.topLeftBorderStroke,
  10039. curves.topRightBorderStroke
  10040. )
  10041. case 1:
  10042. return createStrokePathFromCurves(
  10043. curves.topRightBorderStroke,
  10044. curves.bottomRightBorderStroke
  10045. )
  10046. case 2:
  10047. return createStrokePathFromCurves(
  10048. curves.bottomRightBorderStroke,
  10049. curves.bottomLeftBorderStroke
  10050. )
  10051. case 3:
  10052. default:
  10053. return createStrokePathFromCurves(
  10054. curves.bottomLeftBorderStroke,
  10055. curves.topLeftBorderStroke
  10056. )
  10057. }
  10058. }
  10059. var createStrokePathFromCurves = function createStrokePathFromCurves(
  10060. outer1,
  10061. outer2
  10062. ) {
  10063. var path = []
  10064. if (isBezierCurve(outer1)) {
  10065. path.push(outer1.subdivide(0.5, false))
  10066. } else {
  10067. path.push(outer1)
  10068. }
  10069. if (isBezierCurve(outer2)) {
  10070. path.push(outer2.subdivide(0.5, true))
  10071. } else {
  10072. path.push(outer2)
  10073. }
  10074. return path
  10075. }
  10076. var createPathFromCurves = function createPathFromCurves(
  10077. outer1,
  10078. inner1,
  10079. outer2,
  10080. inner2
  10081. ) {
  10082. var path = []
  10083. if (isBezierCurve(outer1)) {
  10084. path.push(outer1.subdivide(0.5, false))
  10085. } else {
  10086. path.push(outer1)
  10087. }
  10088. if (isBezierCurve(outer2)) {
  10089. path.push(outer2.subdivide(0.5, true))
  10090. } else {
  10091. path.push(outer2)
  10092. }
  10093. if (isBezierCurve(inner2)) {
  10094. path.push(inner2.subdivide(0.5, true).reverse())
  10095. } else {
  10096. path.push(inner2)
  10097. }
  10098. if (isBezierCurve(inner1)) {
  10099. path.push(inner1.subdivide(0.5, false).reverse())
  10100. } else {
  10101. path.push(inner1)
  10102. }
  10103. return path
  10104. }
  10105. var paddingBox = function paddingBox(element) {
  10106. var bounds = element.bounds
  10107. var styles = element.styles
  10108. return bounds.add(
  10109. styles.borderLeftWidth,
  10110. styles.borderTopWidth,
  10111. -(styles.borderRightWidth + styles.borderLeftWidth),
  10112. -(styles.borderTopWidth + styles.borderBottomWidth)
  10113. )
  10114. }
  10115. var contentBox = function contentBox(element) {
  10116. var styles = element.styles
  10117. var bounds = element.bounds
  10118. var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width)
  10119. var paddingRight = getAbsoluteValue(
  10120. styles.paddingRight,
  10121. bounds.width
  10122. )
  10123. var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width)
  10124. var paddingBottom = getAbsoluteValue(
  10125. styles.paddingBottom,
  10126. bounds.width
  10127. )
  10128. return bounds.add(
  10129. paddingLeft + styles.borderLeftWidth,
  10130. paddingTop + styles.borderTopWidth,
  10131. -(
  10132. styles.borderRightWidth +
  10133. styles.borderLeftWidth +
  10134. paddingLeft +
  10135. paddingRight
  10136. ),
  10137. -(
  10138. styles.borderTopWidth +
  10139. styles.borderBottomWidth +
  10140. paddingTop +
  10141. paddingBottom
  10142. )
  10143. )
  10144. }
  10145. var calculateBackgroundPositioningArea =
  10146. function calculateBackgroundPositioningArea(
  10147. backgroundOrigin,
  10148. element
  10149. ) {
  10150. if (backgroundOrigin === 0 /* BORDER_BOX */) {
  10151. return element.bounds
  10152. }
  10153. if (backgroundOrigin === 2 /* CONTENT_BOX */) {
  10154. return contentBox(element)
  10155. }
  10156. return paddingBox(element)
  10157. }
  10158. var calculateBackgroundPaintingArea =
  10159. function calculateBackgroundPaintingArea(backgroundClip, element) {
  10160. if (backgroundClip === 0 /* BORDER_BOX */) {
  10161. return element.bounds
  10162. }
  10163. if (backgroundClip === 2 /* CONTENT_BOX */) {
  10164. return contentBox(element)
  10165. }
  10166. return paddingBox(element)
  10167. }
  10168. var calculateBackgroundRendering =
  10169. function calculateBackgroundRendering(
  10170. container,
  10171. index,
  10172. intrinsicSize
  10173. ) {
  10174. var backgroundPositioningArea =
  10175. calculateBackgroundPositioningArea(
  10176. getBackgroundValueForIndex(
  10177. container.styles.backgroundOrigin,
  10178. index
  10179. ),
  10180. container
  10181. )
  10182. var backgroundPaintingArea = calculateBackgroundPaintingArea(
  10183. getBackgroundValueForIndex(
  10184. container.styles.backgroundClip,
  10185. index
  10186. ),
  10187. container
  10188. )
  10189. var backgroundImageSize = calculateBackgroundSize(
  10190. getBackgroundValueForIndex(
  10191. container.styles.backgroundSize,
  10192. index
  10193. ),
  10194. intrinsicSize,
  10195. backgroundPositioningArea
  10196. )
  10197. var sizeWidth = backgroundImageSize[0],
  10198. sizeHeight = backgroundImageSize[1]
  10199. var position = getAbsoluteValueForTuple(
  10200. getBackgroundValueForIndex(
  10201. container.styles.backgroundPosition,
  10202. index
  10203. ),
  10204. backgroundPositioningArea.width - sizeWidth,
  10205. backgroundPositioningArea.height - sizeHeight
  10206. )
  10207. var path = calculateBackgroundRepeatPath(
  10208. getBackgroundValueForIndex(
  10209. container.styles.backgroundRepeat,
  10210. index
  10211. ),
  10212. position,
  10213. backgroundImageSize,
  10214. backgroundPositioningArea,
  10215. backgroundPaintingArea
  10216. )
  10217. var offsetX = Math.round(
  10218. backgroundPositioningArea.left + position[0]
  10219. )
  10220. var offsetY = Math.round(
  10221. backgroundPositioningArea.top + position[1]
  10222. )
  10223. return [path, offsetX, offsetY, sizeWidth, sizeHeight]
  10224. }
  10225. var isAuto = function isAuto(token) {
  10226. return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO
  10227. }
  10228. var hasIntrinsicValue = function hasIntrinsicValue(value) {
  10229. return typeof value === 'number'
  10230. }
  10231. var calculateBackgroundSize = function calculateBackgroundSize(
  10232. size,
  10233. _a,
  10234. bounds
  10235. ) {
  10236. var intrinsicWidth = _a[0],
  10237. intrinsicHeight = _a[1],
  10238. intrinsicProportion = _a[2]
  10239. var first = size[0],
  10240. second = size[1]
  10241. if (!first) {
  10242. return [0, 0]
  10243. }
  10244. if (
  10245. isLengthPercentage(first) &&
  10246. second &&
  10247. isLengthPercentage(second)
  10248. ) {
  10249. return [
  10250. getAbsoluteValue(first, bounds.width),
  10251. getAbsoluteValue(second, bounds.height)
  10252. ]
  10253. }
  10254. var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion)
  10255. if (
  10256. isIdentToken(first) &&
  10257. (first.value === BACKGROUND_SIZE.CONTAIN ||
  10258. first.value === BACKGROUND_SIZE.COVER)
  10259. ) {
  10260. if (hasIntrinsicValue(intrinsicProportion)) {
  10261. var targetRatio = bounds.width / bounds.height
  10262. return targetRatio < intrinsicProportion !==
  10263. (first.value === BACKGROUND_SIZE.COVER)
  10264. ? [bounds.width, bounds.width / intrinsicProportion]
  10265. : [bounds.height * intrinsicProportion, bounds.height]
  10266. }
  10267. return [bounds.width, bounds.height]
  10268. }
  10269. var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth)
  10270. var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight)
  10271. var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight // If the background-size is auto or auto auto:
  10272. if (isAuto(first) && (!second || isAuto(second))) {
  10273. // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.
  10274. if (hasIntrinsicWidth && hasIntrinsicHeight) {
  10275. return [intrinsicWidth, intrinsicHeight]
  10276. } // If the image has no intrinsic dimensions and has no intrinsic proportions,
  10277. // it's rendered at the size of the background positioning area.
  10278. if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
  10279. return [bounds.width, bounds.height]
  10280. } // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.
  10281. // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.
  10282. // The other dimension is computed using the specified dimension and the intrinsic proportions.
  10283. if (hasIntrinsicDimensions && hasIntrinsicProportion) {
  10284. var width_1 = hasIntrinsicWidth
  10285. ? intrinsicWidth
  10286. : intrinsicHeight * intrinsicProportion
  10287. var height_1 = hasIntrinsicHeight
  10288. ? intrinsicHeight
  10289. : intrinsicWidth / intrinsicProportion
  10290. return [width_1, height_1]
  10291. } // If the image has only one intrinsic dimension but has no intrinsic proportions,
  10292. // it's rendered using the specified dimension and the other dimension of the background positioning area.
  10293. var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width
  10294. var height_2 = hasIntrinsicHeight
  10295. ? intrinsicHeight
  10296. : bounds.height
  10297. return [width_2, height_2]
  10298. } // If the image has intrinsic proportions, it's stretched to the specified dimension.
  10299. // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.
  10300. if (hasIntrinsicProportion) {
  10301. var width_3 = 0
  10302. var height_3 = 0
  10303. if (isLengthPercentage(first)) {
  10304. width_3 = getAbsoluteValue(first, bounds.width)
  10305. } else if (isLengthPercentage(second)) {
  10306. height_3 = getAbsoluteValue(second, bounds.height)
  10307. }
  10308. if (isAuto(first)) {
  10309. width_3 = height_3 * intrinsicProportion
  10310. } else if (!second || isAuto(second)) {
  10311. height_3 = width_3 / intrinsicProportion
  10312. }
  10313. return [width_3, height_3]
  10314. } // If the image has no intrinsic proportions, it's stretched to the specified dimension.
  10315. // The unspecified dimension is computed using the image's corresponding intrinsic dimension,
  10316. // if there is one. If there is no such intrinsic dimension,
  10317. // it becomes the corresponding dimension of the background positioning area.
  10318. var width = null
  10319. var height = null
  10320. if (isLengthPercentage(first)) {
  10321. width = getAbsoluteValue(first, bounds.width)
  10322. } else if (second && isLengthPercentage(second)) {
  10323. height = getAbsoluteValue(second, bounds.height)
  10324. }
  10325. if (width !== null && (!second || isAuto(second))) {
  10326. height =
  10327. hasIntrinsicWidth && hasIntrinsicHeight
  10328. ? (width / intrinsicWidth) * intrinsicHeight
  10329. : bounds.height
  10330. }
  10331. if (height !== null && isAuto(first)) {
  10332. width =
  10333. hasIntrinsicWidth && hasIntrinsicHeight
  10334. ? (height / intrinsicHeight) * intrinsicWidth
  10335. : bounds.width
  10336. }
  10337. if (width !== null && height !== null) {
  10338. return [width, height]
  10339. }
  10340. throw new Error('Unable to calculate background-size for element')
  10341. }
  10342. var getBackgroundValueForIndex = function getBackgroundValueForIndex(
  10343. values,
  10344. index
  10345. ) {
  10346. var value = values[index]
  10347. if (typeof value === 'undefined') {
  10348. return values[0]
  10349. }
  10350. return value
  10351. }
  10352. var calculateBackgroundRepeatPath =
  10353. function calculateBackgroundRepeatPath(
  10354. repeat,
  10355. _a,
  10356. _b,
  10357. backgroundPositioningArea,
  10358. backgroundPaintingArea
  10359. ) {
  10360. var x = _a[0],
  10361. y = _a[1]
  10362. var width = _b[0],
  10363. height = _b[1]
  10364. switch (repeat) {
  10365. case 2 /* REPEAT_X */:
  10366. return [
  10367. new Vector(
  10368. Math.round(backgroundPositioningArea.left),
  10369. Math.round(backgroundPositioningArea.top + y)
  10370. ),
  10371. new Vector(
  10372. Math.round(
  10373. backgroundPositioningArea.left +
  10374. backgroundPositioningArea.width
  10375. ),
  10376. Math.round(backgroundPositioningArea.top + y)
  10377. ),
  10378. new Vector(
  10379. Math.round(
  10380. backgroundPositioningArea.left +
  10381. backgroundPositioningArea.width
  10382. ),
  10383. Math.round(height + backgroundPositioningArea.top + y)
  10384. ),
  10385. new Vector(
  10386. Math.round(backgroundPositioningArea.left),
  10387. Math.round(height + backgroundPositioningArea.top + y)
  10388. )
  10389. ]
  10390. case 3 /* REPEAT_Y */:
  10391. return [
  10392. new Vector(
  10393. Math.round(backgroundPositioningArea.left + x),
  10394. Math.round(backgroundPositioningArea.top)
  10395. ),
  10396. new Vector(
  10397. Math.round(backgroundPositioningArea.left + x + width),
  10398. Math.round(backgroundPositioningArea.top)
  10399. ),
  10400. new Vector(
  10401. Math.round(backgroundPositioningArea.left + x + width),
  10402. Math.round(
  10403. backgroundPositioningArea.height +
  10404. backgroundPositioningArea.top
  10405. )
  10406. ),
  10407. new Vector(
  10408. Math.round(backgroundPositioningArea.left + x),
  10409. Math.round(
  10410. backgroundPositioningArea.height +
  10411. backgroundPositioningArea.top
  10412. )
  10413. )
  10414. ]
  10415. case 1 /* NO_REPEAT */:
  10416. return [
  10417. new Vector(
  10418. Math.round(backgroundPositioningArea.left + x),
  10419. Math.round(backgroundPositioningArea.top + y)
  10420. ),
  10421. new Vector(
  10422. Math.round(backgroundPositioningArea.left + x + width),
  10423. Math.round(backgroundPositioningArea.top + y)
  10424. ),
  10425. new Vector(
  10426. Math.round(backgroundPositioningArea.left + x + width),
  10427. Math.round(backgroundPositioningArea.top + y + height)
  10428. ),
  10429. new Vector(
  10430. Math.round(backgroundPositioningArea.left + x),
  10431. Math.round(backgroundPositioningArea.top + y + height)
  10432. )
  10433. ]
  10434. default:
  10435. return [
  10436. new Vector(
  10437. Math.round(backgroundPaintingArea.left),
  10438. Math.round(backgroundPaintingArea.top)
  10439. ),
  10440. new Vector(
  10441. Math.round(
  10442. backgroundPaintingArea.left +
  10443. backgroundPaintingArea.width
  10444. ),
  10445. Math.round(backgroundPaintingArea.top)
  10446. ),
  10447. new Vector(
  10448. Math.round(
  10449. backgroundPaintingArea.left +
  10450. backgroundPaintingArea.width
  10451. ),
  10452. Math.round(
  10453. backgroundPaintingArea.height +
  10454. backgroundPaintingArea.top
  10455. )
  10456. ),
  10457. new Vector(
  10458. Math.round(backgroundPaintingArea.left),
  10459. Math.round(
  10460. backgroundPaintingArea.height +
  10461. backgroundPaintingArea.top
  10462. )
  10463. )
  10464. ]
  10465. }
  10466. }
  10467. var SMALL_IMAGE =
  10468. 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  10469. var SAMPLE_TEXT = 'Hidden Text'
  10470. var FontMetrics = /** @class */ (function () {
  10471. function FontMetrics(document) {
  10472. this._data = {}
  10473. this._document = document
  10474. }
  10475. FontMetrics.prototype.parseMetrics = function (
  10476. fontFamily,
  10477. fontSize
  10478. ) {
  10479. var container = this._document.createElement('div')
  10480. var img = this._document.createElement('img')
  10481. var span = this._document.createElement('span')
  10482. var body = this._document.body
  10483. container.style.visibility = 'hidden'
  10484. container.style.fontFamily = fontFamily
  10485. container.style.fontSize = fontSize
  10486. container.style.margin = '0'
  10487. container.style.padding = '0'
  10488. container.style.whiteSpace = 'nowrap'
  10489. body.appendChild(container)
  10490. img.src = SMALL_IMAGE
  10491. img.width = 1
  10492. img.height = 1
  10493. img.style.margin = '0'
  10494. img.style.padding = '0'
  10495. img.style.verticalAlign = 'baseline'
  10496. span.style.fontFamily = fontFamily
  10497. span.style.fontSize = fontSize
  10498. span.style.margin = '0'
  10499. span.style.padding = '0'
  10500. span.appendChild(this._document.createTextNode(SAMPLE_TEXT))
  10501. container.appendChild(span)
  10502. container.appendChild(img)
  10503. var baseline = img.offsetTop - span.offsetTop + 2
  10504. container.removeChild(span)
  10505. container.appendChild(this._document.createTextNode(SAMPLE_TEXT))
  10506. container.style.lineHeight = 'normal'
  10507. img.style.verticalAlign = 'super'
  10508. var middle = img.offsetTop - container.offsetTop + 2
  10509. body.removeChild(container)
  10510. return { baseline: baseline, middle: middle }
  10511. }
  10512. FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {
  10513. var key = fontFamily + ' ' + fontSize
  10514. if (typeof this._data[key] === 'undefined') {
  10515. this._data[key] = this.parseMetrics(fontFamily, fontSize)
  10516. }
  10517. return this._data[key]
  10518. }
  10519. return FontMetrics
  10520. })()
  10521. var Renderer = /** @class */ (function () {
  10522. function Renderer(context, options) {
  10523. this.context = context
  10524. this.options = options
  10525. }
  10526. return Renderer
  10527. })()
  10528. var MASK_OFFSET = 10000
  10529. var CanvasRenderer = /** @class */ (function (_super) {
  10530. __extends(CanvasRenderer, _super)
  10531. function CanvasRenderer(context, options) {
  10532. var _this = _super.call(this, context, options) || this
  10533. _this._activeEffects = []
  10534. _this.canvas = options.canvas
  10535. ? options.canvas
  10536. : document.createElement('canvas')
  10537. _this.ctx = _this.canvas.getContext('2d')
  10538. if (!options.canvas) {
  10539. _this.canvas.width = Math.floor(options.width * options.scale)
  10540. _this.canvas.height = Math.floor(options.height * options.scale)
  10541. _this.canvas.style.width = options.width + 'px'
  10542. _this.canvas.style.height = options.height + 'px'
  10543. }
  10544. _this.fontMetrics = new FontMetrics(document)
  10545. _this.ctx.scale(_this.options.scale, _this.options.scale)
  10546. _this.ctx.translate(-options.x, -options.y)
  10547. _this.ctx.textBaseline = 'bottom'
  10548. _this._activeEffects = []
  10549. _this.context.logger.debug(
  10550. 'Canvas renderer initialized (' +
  10551. options.width +
  10552. 'x' +
  10553. options.height +
  10554. ') with scale ' +
  10555. options.scale
  10556. )
  10557. return _this
  10558. }
  10559. CanvasRenderer.prototype.applyEffects = function (effects) {
  10560. var _this = this
  10561. while (this._activeEffects.length) {
  10562. this.popEffect()
  10563. }
  10564. effects.forEach(function (effect) {
  10565. return _this.applyEffect(effect)
  10566. })
  10567. }
  10568. CanvasRenderer.prototype.applyEffect = function (effect) {
  10569. this.ctx.save()
  10570. if (isOpacityEffect(effect)) {
  10571. this.ctx.globalAlpha = effect.opacity
  10572. }
  10573. if (isTransformEffect(effect)) {
  10574. this.ctx.translate(effect.offsetX, effect.offsetY)
  10575. this.ctx.transform(
  10576. effect.matrix[0],
  10577. effect.matrix[1],
  10578. effect.matrix[2],
  10579. effect.matrix[3],
  10580. effect.matrix[4],
  10581. effect.matrix[5]
  10582. )
  10583. this.ctx.translate(-effect.offsetX, -effect.offsetY)
  10584. }
  10585. if (isClipEffect(effect)) {
  10586. this.path(effect.path)
  10587. this.ctx.clip()
  10588. }
  10589. this._activeEffects.push(effect)
  10590. }
  10591. CanvasRenderer.prototype.popEffect = function () {
  10592. this._activeEffects.pop()
  10593. this.ctx.restore()
  10594. }
  10595. CanvasRenderer.prototype.renderStack = function (stack) {
  10596. return __awaiter(this, void 0, void 0, function () {
  10597. var styles
  10598. return __generator(this, function (_a) {
  10599. switch (_a.label) {
  10600. case 0:
  10601. styles = stack.element.container.styles
  10602. if (!styles.isVisible()) return [3 /*break*/, 2]
  10603. return [4 /*yield*/, this.renderStackContent(stack)]
  10604. case 1:
  10605. _a.sent()
  10606. _a.label = 2
  10607. case 2:
  10608. return [2 /*return*/]
  10609. }
  10610. })
  10611. })
  10612. }
  10613. CanvasRenderer.prototype.renderNode = function (paint) {
  10614. return __awaiter(this, void 0, void 0, function () {
  10615. return __generator(this, function (_a) {
  10616. switch (_a.label) {
  10617. case 0:
  10618. if (
  10619. contains(paint.container.flags, 16 /* DEBUG_RENDER */)
  10620. ) {
  10621. debugger
  10622. }
  10623. if (!paint.container.styles.isVisible())
  10624. return [3 /*break*/, 3]
  10625. return [
  10626. 4 /*yield*/,
  10627. this.renderNodeBackgroundAndBorders(paint)
  10628. ]
  10629. case 1:
  10630. _a.sent()
  10631. return [4 /*yield*/, this.renderNodeContent(paint)]
  10632. case 2:
  10633. _a.sent()
  10634. _a.label = 3
  10635. case 3:
  10636. return [2 /*return*/]
  10637. }
  10638. })
  10639. })
  10640. }
  10641. CanvasRenderer.prototype.renderTextWithLetterSpacing = function (
  10642. text,
  10643. letterSpacing,
  10644. baseline
  10645. ) {
  10646. var _this = this
  10647. if (letterSpacing === 0) {
  10648. this.ctx.fillText(
  10649. text.text,
  10650. text.bounds.left,
  10651. text.bounds.top + baseline
  10652. )
  10653. } else {
  10654. var letters = segmentGraphemes(text.text)
  10655. letters.reduce(function (left, letter) {
  10656. _this.ctx.fillText(letter, left, text.bounds.top + baseline)
  10657. return left + _this.ctx.measureText(letter).width
  10658. }, text.bounds.left)
  10659. }
  10660. }
  10661. CanvasRenderer.prototype.createFontStyle = function (styles) {
  10662. var fontVariant = styles.fontVariant
  10663. .filter(function (variant) {
  10664. return variant === 'normal' || variant === 'small-caps'
  10665. })
  10666. .join('')
  10667. var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ')
  10668. var fontSize = isDimensionToken(styles.fontSize)
  10669. ? '' + styles.fontSize.number + styles.fontSize.unit
  10670. : styles.fontSize.number + 'px'
  10671. return [
  10672. [
  10673. styles.fontStyle,
  10674. fontVariant,
  10675. styles.fontWeight,
  10676. fontSize,
  10677. fontFamily
  10678. ].join(' '),
  10679. fontFamily,
  10680. fontSize
  10681. ]
  10682. }
  10683. CanvasRenderer.prototype.renderTextNode = function (text, styles) {
  10684. return __awaiter(this, void 0, void 0, function () {
  10685. var _a,
  10686. font,
  10687. fontFamily,
  10688. fontSize,
  10689. _b,
  10690. baseline,
  10691. middle,
  10692. paintOrder
  10693. var _this = this
  10694. return __generator(this, function (_c) {
  10695. ;(_a = this.createFontStyle(styles)),
  10696. (font = _a[0]),
  10697. (fontFamily = _a[1]),
  10698. (fontSize = _a[2])
  10699. this.ctx.font = font
  10700. this.ctx.direction =
  10701. styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr'
  10702. this.ctx.textAlign = 'left'
  10703. this.ctx.textBaseline = 'alphabetic'
  10704. ;(_b = this.fontMetrics.getMetrics(fontFamily, fontSize)),
  10705. (baseline = _b.baseline),
  10706. (middle = _b.middle)
  10707. paintOrder = styles.paintOrder
  10708. text.textBounds.forEach(function (text) {
  10709. paintOrder.forEach(function (paintOrderLayer) {
  10710. switch (paintOrderLayer) {
  10711. case 0 /* FILL */:
  10712. _this.ctx.fillStyle = asString(styles.color)
  10713. _this.renderTextWithLetterSpacing(
  10714. text,
  10715. styles.letterSpacing,
  10716. baseline
  10717. )
  10718. var textShadows = styles.textShadow
  10719. if (textShadows.length && text.text.trim().length) {
  10720. textShadows
  10721. .slice(0)
  10722. .reverse()
  10723. .forEach(function (textShadow) {
  10724. _this.ctx.shadowColor = asString(
  10725. textShadow.color
  10726. )
  10727. _this.ctx.shadowOffsetX =
  10728. textShadow.offsetX.number *
  10729. _this.options.scale
  10730. _this.ctx.shadowOffsetY =
  10731. textShadow.offsetY.number *
  10732. _this.options.scale
  10733. _this.ctx.shadowBlur = textShadow.blur.number
  10734. _this.renderTextWithLetterSpacing(
  10735. text,
  10736. styles.letterSpacing,
  10737. baseline
  10738. )
  10739. })
  10740. _this.ctx.shadowColor = ''
  10741. _this.ctx.shadowOffsetX = 0
  10742. _this.ctx.shadowOffsetY = 0
  10743. _this.ctx.shadowBlur = 0
  10744. }
  10745. if (styles.textDecorationLine.length) {
  10746. _this.ctx.fillStyle = asString(
  10747. styles.textDecorationColor || styles.color
  10748. )
  10749. styles.textDecorationLine.forEach(function (
  10750. textDecorationLine
  10751. ) {
  10752. switch (textDecorationLine) {
  10753. case 1 /* UNDERLINE */: // Draws a line at the baseline of the font
  10754. // TODO As some browsers display the line as more than 1px if the font-size is big,
  10755. // need to take that into account both in position and size
  10756. _this.ctx.fillRect(
  10757. text.bounds.left,
  10758. Math.round(text.bounds.top + baseline),
  10759. text.bounds.width,
  10760. 1
  10761. )
  10762. break
  10763. case 2 /* OVERLINE */:
  10764. _this.ctx.fillRect(
  10765. text.bounds.left,
  10766. Math.round(text.bounds.top),
  10767. text.bounds.width,
  10768. 1
  10769. )
  10770. break
  10771. case 3 /* LINE_THROUGH */: // TODO try and find exact position for line-through
  10772. _this.ctx.fillRect(
  10773. text.bounds.left,
  10774. Math.ceil(text.bounds.top + middle),
  10775. text.bounds.width,
  10776. 1
  10777. )
  10778. break
  10779. }
  10780. })
  10781. }
  10782. break
  10783. case 1 /* STROKE */:
  10784. if (
  10785. styles.webkitTextStrokeWidth &&
  10786. text.text.trim().length
  10787. ) {
  10788. _this.ctx.strokeStyle = asString(
  10789. styles.webkitTextStrokeColor
  10790. )
  10791. _this.ctx.lineWidth = styles.webkitTextStrokeWidth // eslint-disable-next-line @typescript-eslint/no-explicit-any
  10792. _this.ctx.lineJoin = !!window.chrome
  10793. ? 'miter'
  10794. : 'round'
  10795. _this.ctx.strokeText(
  10796. text.text,
  10797. text.bounds.left,
  10798. text.bounds.top + baseline
  10799. )
  10800. }
  10801. _this.ctx.strokeStyle = ''
  10802. _this.ctx.lineWidth = 0
  10803. _this.ctx.lineJoin = 'miter'
  10804. break
  10805. }
  10806. })
  10807. })
  10808. return [2 /*return*/]
  10809. })
  10810. })
  10811. }
  10812. CanvasRenderer.prototype.renderReplacedElement = function (
  10813. container,
  10814. curves,
  10815. image
  10816. ) {
  10817. if (
  10818. image &&
  10819. container.intrinsicWidth > 0 &&
  10820. container.intrinsicHeight > 0
  10821. ) {
  10822. var box = contentBox(container)
  10823. var path = calculatePaddingBoxPath(curves)
  10824. this.path(path)
  10825. this.ctx.save()
  10826. this.ctx.clip()
  10827. this.ctx.drawImage(
  10828. image,
  10829. 0,
  10830. 0,
  10831. container.intrinsicWidth,
  10832. container.intrinsicHeight,
  10833. box.left,
  10834. box.top,
  10835. box.width,
  10836. box.height
  10837. )
  10838. this.ctx.restore()
  10839. }
  10840. }
  10841. CanvasRenderer.prototype.renderNodeContent = function (paint) {
  10842. return __awaiter(this, void 0, void 0, function () {
  10843. var container,
  10844. curves,
  10845. styles,
  10846. _i,
  10847. _a,
  10848. child,
  10849. image,
  10850. image,
  10851. iframeRenderer,
  10852. canvas,
  10853. size,
  10854. _b,
  10855. fontFamily,
  10856. fontSize,
  10857. baseline,
  10858. bounds,
  10859. x,
  10860. textBounds,
  10861. img,
  10862. image,
  10863. url,
  10864. fontFamily,
  10865. bounds
  10866. return __generator(this, function (_c) {
  10867. switch (_c.label) {
  10868. case 0:
  10869. this.applyEffects(paint.getEffects(4 /* CONTENT */))
  10870. container = paint.container
  10871. curves = paint.curves
  10872. styles = container.styles
  10873. ;(_i = 0), (_a = container.textNodes)
  10874. _c.label = 1
  10875. case 1:
  10876. if (!(_i < _a.length)) return [3 /*break*/, 4]
  10877. child = _a[_i]
  10878. return [4 /*yield*/, this.renderTextNode(child, styles)]
  10879. case 2:
  10880. _c.sent()
  10881. _c.label = 3
  10882. case 3:
  10883. _i++
  10884. return [3 /*break*/, 1]
  10885. case 4:
  10886. if (!(container instanceof ImageElementContainer))
  10887. return [3 /*break*/, 8]
  10888. _c.label = 5
  10889. case 5:
  10890. _c.trys.push([5, 7, , 8])
  10891. return [
  10892. 4 /*yield*/,
  10893. this.context.cache.match(container.src)
  10894. ]
  10895. case 6:
  10896. image = _c.sent()
  10897. this.renderReplacedElement(container, curves, image)
  10898. return [3 /*break*/, 8]
  10899. case 7:
  10900. _c.sent()
  10901. this.context.logger.error(
  10902. 'Error loading image ' + container.src
  10903. )
  10904. return [3 /*break*/, 8]
  10905. case 8:
  10906. if (container instanceof CanvasElementContainer) {
  10907. this.renderReplacedElement(
  10908. container,
  10909. curves,
  10910. container.canvas
  10911. )
  10912. }
  10913. if (!(container instanceof SVGElementContainer))
  10914. return [3 /*break*/, 12]
  10915. _c.label = 9
  10916. case 9:
  10917. _c.trys.push([9, 11, , 12])
  10918. return [
  10919. 4 /*yield*/,
  10920. this.context.cache.match(container.svg)
  10921. ]
  10922. case 10:
  10923. image = _c.sent()
  10924. this.renderReplacedElement(container, curves, image)
  10925. return [3 /*break*/, 12]
  10926. case 11:
  10927. _c.sent()
  10928. this.context.logger.error(
  10929. 'Error loading svg ' + container.svg.substring(0, 255)
  10930. )
  10931. return [3 /*break*/, 12]
  10932. case 12:
  10933. if (
  10934. !(
  10935. container instanceof IFrameElementContainer &&
  10936. container.tree
  10937. )
  10938. )
  10939. return [3 /*break*/, 14]
  10940. iframeRenderer = new CanvasRenderer(this.context, {
  10941. scale: this.options.scale,
  10942. backgroundColor: container.backgroundColor,
  10943. x: 0,
  10944. y: 0,
  10945. width: container.width,
  10946. height: container.height
  10947. })
  10948. return [
  10949. 4 /*yield*/,
  10950. iframeRenderer.render(container.tree)
  10951. ]
  10952. case 13:
  10953. canvas = _c.sent()
  10954. if (container.width && container.height) {
  10955. this.ctx.drawImage(
  10956. canvas,
  10957. 0,
  10958. 0,
  10959. container.width,
  10960. container.height,
  10961. container.bounds.left,
  10962. container.bounds.top,
  10963. container.bounds.width,
  10964. container.bounds.height
  10965. )
  10966. }
  10967. _c.label = 14
  10968. case 14:
  10969. if (container instanceof InputElementContainer) {
  10970. size = Math.min(
  10971. container.bounds.width,
  10972. container.bounds.height
  10973. )
  10974. if (container.type === CHECKBOX) {
  10975. if (container.checked) {
  10976. this.ctx.save()
  10977. this.path([
  10978. new Vector(
  10979. container.bounds.left + size * 0.39363,
  10980. container.bounds.top + size * 0.79
  10981. ),
  10982. new Vector(
  10983. container.bounds.left + size * 0.16,
  10984. container.bounds.top + size * 0.5549
  10985. ),
  10986. new Vector(
  10987. container.bounds.left + size * 0.27347,
  10988. container.bounds.top + size * 0.44071
  10989. ),
  10990. new Vector(
  10991. container.bounds.left + size * 0.39694,
  10992. container.bounds.top + size * 0.5649
  10993. ),
  10994. new Vector(
  10995. container.bounds.left + size * 0.72983,
  10996. container.bounds.top + size * 0.23
  10997. ),
  10998. new Vector(
  10999. container.bounds.left + size * 0.84,
  11000. container.bounds.top + size * 0.34085
  11001. ),
  11002. new Vector(
  11003. container.bounds.left + size * 0.39363,
  11004. container.bounds.top + size * 0.79
  11005. )
  11006. ])
  11007. this.ctx.fillStyle = asString(INPUT_COLOR)
  11008. this.ctx.fill()
  11009. this.ctx.restore()
  11010. }
  11011. } else if (container.type === RADIO) {
  11012. if (container.checked) {
  11013. this.ctx.save()
  11014. this.ctx.beginPath()
  11015. this.ctx.arc(
  11016. container.bounds.left + size / 2,
  11017. container.bounds.top + size / 2,
  11018. size / 4,
  11019. 0,
  11020. Math.PI * 2,
  11021. true
  11022. )
  11023. this.ctx.fillStyle = asString(INPUT_COLOR)
  11024. this.ctx.fill()
  11025. this.ctx.restore()
  11026. }
  11027. }
  11028. }
  11029. if (
  11030. isTextInputElement(container) &&
  11031. container.value.length
  11032. ) {
  11033. ;(_b = this.createFontStyle(styles)),
  11034. (fontFamily = _b[0]),
  11035. (fontSize = _b[1])
  11036. baseline = this.fontMetrics.getMetrics(
  11037. fontFamily,
  11038. fontSize
  11039. ).baseline
  11040. this.ctx.font = fontFamily
  11041. this.ctx.fillStyle = asString(styles.color)
  11042. this.ctx.textBaseline = 'alphabetic'
  11043. this.ctx.textAlign = canvasTextAlign(
  11044. container.styles.textAlign
  11045. )
  11046. bounds = contentBox(container)
  11047. x = 0
  11048. switch (container.styles.textAlign) {
  11049. case 1 /* CENTER */:
  11050. x += bounds.width / 2
  11051. break
  11052. case 2 /* RIGHT */:
  11053. x += bounds.width
  11054. break
  11055. }
  11056. textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1)
  11057. this.ctx.save()
  11058. this.path([
  11059. new Vector(bounds.left, bounds.top),
  11060. new Vector(bounds.left + bounds.width, bounds.top),
  11061. new Vector(
  11062. bounds.left + bounds.width,
  11063. bounds.top + bounds.height
  11064. ),
  11065. new Vector(bounds.left, bounds.top + bounds.height)
  11066. ])
  11067. this.ctx.clip()
  11068. this.renderTextWithLetterSpacing(
  11069. new TextBounds(container.value, textBounds),
  11070. styles.letterSpacing,
  11071. baseline
  11072. )
  11073. this.ctx.restore()
  11074. this.ctx.textBaseline = 'alphabetic'
  11075. this.ctx.textAlign = 'left'
  11076. }
  11077. if (
  11078. !contains(
  11079. container.styles.display,
  11080. 2048 /* LIST_ITEM */
  11081. )
  11082. )
  11083. return [3 /*break*/, 20]
  11084. if (!(container.styles.listStyleImage !== null))
  11085. return [3 /*break*/, 19]
  11086. img = container.styles.listStyleImage
  11087. if (!((img.type === 0) /* URL */))
  11088. return [3 /*break*/, 18]
  11089. image = void 0
  11090. url = img.url
  11091. _c.label = 15
  11092. case 15:
  11093. _c.trys.push([15, 17, , 18])
  11094. return [4 /*yield*/, this.context.cache.match(url)]
  11095. case 16:
  11096. image = _c.sent()
  11097. this.ctx.drawImage(
  11098. image,
  11099. container.bounds.left - (image.width + 10),
  11100. container.bounds.top
  11101. )
  11102. return [3 /*break*/, 18]
  11103. case 17:
  11104. _c.sent()
  11105. this.context.logger.error(
  11106. 'Error loading list-style-image ' + url
  11107. )
  11108. return [3 /*break*/, 18]
  11109. case 18:
  11110. return [3 /*break*/, 20]
  11111. case 19:
  11112. if (
  11113. paint.listValue &&
  11114. container.styles.listStyleType !== -1 /* NONE */
  11115. ) {
  11116. fontFamily = this.createFontStyle(styles)[0]
  11117. this.ctx.font = fontFamily
  11118. this.ctx.fillStyle = asString(styles.color)
  11119. this.ctx.textBaseline = 'middle'
  11120. this.ctx.textAlign = 'right'
  11121. bounds = new Bounds(
  11122. container.bounds.left,
  11123. container.bounds.top +
  11124. getAbsoluteValue(
  11125. container.styles.paddingTop,
  11126. container.bounds.width
  11127. ),
  11128. container.bounds.width,
  11129. computeLineHeight(
  11130. styles.lineHeight,
  11131. styles.fontSize.number
  11132. ) /
  11133. 2 +
  11134. 1
  11135. )
  11136. this.renderTextWithLetterSpacing(
  11137. new TextBounds(paint.listValue, bounds),
  11138. styles.letterSpacing,
  11139. computeLineHeight(
  11140. styles.lineHeight,
  11141. styles.fontSize.number
  11142. ) /
  11143. 2 +
  11144. 2
  11145. )
  11146. this.ctx.textBaseline = 'bottom'
  11147. this.ctx.textAlign = 'left'
  11148. }
  11149. _c.label = 20
  11150. case 20:
  11151. return [2 /*return*/]
  11152. }
  11153. })
  11154. })
  11155. }
  11156. CanvasRenderer.prototype.renderStackContent = function (stack) {
  11157. return __awaiter(this, void 0, void 0, function () {
  11158. var _i,
  11159. _a,
  11160. child,
  11161. _b,
  11162. _c,
  11163. child,
  11164. _d,
  11165. _e,
  11166. child,
  11167. _f,
  11168. _g,
  11169. child,
  11170. _h,
  11171. _j,
  11172. child,
  11173. _k,
  11174. _l,
  11175. child,
  11176. _m,
  11177. _o,
  11178. child
  11179. return __generator(this, function (_p) {
  11180. switch (_p.label) {
  11181. case 0:
  11182. if (
  11183. contains(
  11184. stack.element.container.flags,
  11185. 16 /* DEBUG_RENDER */
  11186. )
  11187. ) {
  11188. debugger
  11189. } // https://www.w3.org/TR/css-position-3/#painting-order
  11190. // 1. the background and borders of the element forming the stacking context.
  11191. return [
  11192. 4 /*yield*/,
  11193. this.renderNodeBackgroundAndBorders(stack.element)
  11194. ]
  11195. case 1: // https://www.w3.org/TR/css-position-3/#painting-order
  11196. // 1. the background and borders of the element forming the stacking context.
  11197. _p.sent()
  11198. ;(_i = 0), (_a = stack.negativeZIndex)
  11199. _p.label = 2
  11200. case 2:
  11201. if (!(_i < _a.length)) return [3 /*break*/, 5]
  11202. child = _a[_i]
  11203. return [4 /*yield*/, this.renderStack(child)]
  11204. case 3:
  11205. _p.sent()
  11206. _p.label = 4
  11207. case 4:
  11208. _i++
  11209. return [3 /*break*/, 2]
  11210. case 5: // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
  11211. return [
  11212. 4 /*yield*/,
  11213. this.renderNodeContent(stack.element)
  11214. ]
  11215. case 6: // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
  11216. _p.sent()
  11217. ;(_b = 0), (_c = stack.nonInlineLevel)
  11218. _p.label = 7
  11219. case 7:
  11220. if (!(_b < _c.length)) return [3 /*break*/, 10]
  11221. child = _c[_b]
  11222. return [4 /*yield*/, this.renderNode(child)]
  11223. case 8:
  11224. _p.sent()
  11225. _p.label = 9
  11226. case 9:
  11227. _b++
  11228. return [3 /*break*/, 7]
  11229. case 10:
  11230. ;(_d = 0), (_e = stack.nonPositionedFloats)
  11231. _p.label = 11
  11232. case 11:
  11233. if (!(_d < _e.length)) return [3 /*break*/, 14]
  11234. child = _e[_d]
  11235. return [4 /*yield*/, this.renderStack(child)]
  11236. case 12:
  11237. _p.sent()
  11238. _p.label = 13
  11239. case 13:
  11240. _d++
  11241. return [3 /*break*/, 11]
  11242. case 14:
  11243. ;(_f = 0), (_g = stack.nonPositionedInlineLevel)
  11244. _p.label = 15
  11245. case 15:
  11246. if (!(_f < _g.length)) return [3 /*break*/, 18]
  11247. child = _g[_f]
  11248. return [4 /*yield*/, this.renderStack(child)]
  11249. case 16:
  11250. _p.sent()
  11251. _p.label = 17
  11252. case 17:
  11253. _f++
  11254. return [3 /*break*/, 15]
  11255. case 18:
  11256. ;(_h = 0), (_j = stack.inlineLevel)
  11257. _p.label = 19
  11258. case 19:
  11259. if (!(_h < _j.length)) return [3 /*break*/, 22]
  11260. child = _j[_h]
  11261. return [4 /*yield*/, this.renderNode(child)]
  11262. case 20:
  11263. _p.sent()
  11264. _p.label = 21
  11265. case 21:
  11266. _h++
  11267. return [3 /*break*/, 19]
  11268. case 22:
  11269. ;(_k = 0),
  11270. (_l = stack.zeroOrAutoZIndexOrTransformedOrOpacity)
  11271. _p.label = 23
  11272. case 23:
  11273. if (!(_k < _l.length)) return [3 /*break*/, 26]
  11274. child = _l[_k]
  11275. return [4 /*yield*/, this.renderStack(child)]
  11276. case 24:
  11277. _p.sent()
  11278. _p.label = 25
  11279. case 25:
  11280. _k++
  11281. return [3 /*break*/, 23]
  11282. case 26:
  11283. ;(_m = 0), (_o = stack.positiveZIndex)
  11284. _p.label = 27
  11285. case 27:
  11286. if (!(_m < _o.length)) return [3 /*break*/, 30]
  11287. child = _o[_m]
  11288. return [4 /*yield*/, this.renderStack(child)]
  11289. case 28:
  11290. _p.sent()
  11291. _p.label = 29
  11292. case 29:
  11293. _m++
  11294. return [3 /*break*/, 27]
  11295. case 30:
  11296. return [2 /*return*/]
  11297. }
  11298. })
  11299. })
  11300. }
  11301. CanvasRenderer.prototype.mask = function (paths) {
  11302. this.ctx.beginPath()
  11303. this.ctx.moveTo(0, 0)
  11304. this.ctx.lineTo(this.canvas.width, 0)
  11305. this.ctx.lineTo(this.canvas.width, this.canvas.height)
  11306. this.ctx.lineTo(0, this.canvas.height)
  11307. this.ctx.lineTo(0, 0)
  11308. this.formatPath(paths.slice(0).reverse())
  11309. this.ctx.closePath()
  11310. }
  11311. CanvasRenderer.prototype.path = function (paths) {
  11312. this.ctx.beginPath()
  11313. this.formatPath(paths)
  11314. this.ctx.closePath()
  11315. }
  11316. CanvasRenderer.prototype.formatPath = function (paths) {
  11317. var _this = this
  11318. paths.forEach(function (point, index) {
  11319. var start = isBezierCurve(point) ? point.start : point
  11320. if (index === 0) {
  11321. _this.ctx.moveTo(start.x, start.y)
  11322. } else {
  11323. _this.ctx.lineTo(start.x, start.y)
  11324. }
  11325. if (isBezierCurve(point)) {
  11326. _this.ctx.bezierCurveTo(
  11327. point.startControl.x,
  11328. point.startControl.y,
  11329. point.endControl.x,
  11330. point.endControl.y,
  11331. point.end.x,
  11332. point.end.y
  11333. )
  11334. }
  11335. })
  11336. }
  11337. CanvasRenderer.prototype.renderRepeat = function (
  11338. path,
  11339. pattern,
  11340. offsetX,
  11341. offsetY
  11342. ) {
  11343. this.path(path)
  11344. this.ctx.fillStyle = pattern
  11345. this.ctx.translate(offsetX, offsetY)
  11346. this.ctx.fill()
  11347. this.ctx.translate(-offsetX, -offsetY)
  11348. }
  11349. CanvasRenderer.prototype.resizeImage = function (
  11350. image,
  11351. width,
  11352. height
  11353. ) {
  11354. var _a
  11355. if (image.width === width && image.height === height) {
  11356. return image
  11357. }
  11358. var ownerDocument =
  11359. (_a = this.canvas.ownerDocument) !== null && _a !== void 0
  11360. ? _a
  11361. : document
  11362. var canvas = ownerDocument.createElement('canvas')
  11363. canvas.width = Math.max(1, width)
  11364. canvas.height = Math.max(1, height)
  11365. var ctx = canvas.getContext('2d')
  11366. ctx.drawImage(
  11367. image,
  11368. 0,
  11369. 0,
  11370. image.width,
  11371. image.height,
  11372. 0,
  11373. 0,
  11374. width,
  11375. height
  11376. )
  11377. return canvas
  11378. }
  11379. CanvasRenderer.prototype.renderBackgroundImage = function (
  11380. container
  11381. ) {
  11382. return __awaiter(this, void 0, void 0, function () {
  11383. var index, _loop_1, this_1, _i, _a, backgroundImage
  11384. return __generator(this, function (_b) {
  11385. switch (_b.label) {
  11386. case 0:
  11387. index = container.styles.backgroundImage.length - 1
  11388. _loop_1 = function _loop_1(backgroundImage) {
  11389. var image,
  11390. url,
  11391. _c,
  11392. path,
  11393. x,
  11394. y,
  11395. width,
  11396. height,
  11397. pattern,
  11398. _d,
  11399. path,
  11400. x,
  11401. y,
  11402. width,
  11403. height,
  11404. _e,
  11405. lineLength,
  11406. x0,
  11407. x1,
  11408. y0,
  11409. y1,
  11410. canvas,
  11411. ctx,
  11412. gradient_1,
  11413. pattern,
  11414. _f,
  11415. path,
  11416. left,
  11417. top_1,
  11418. width,
  11419. height,
  11420. position,
  11421. x,
  11422. y,
  11423. _g,
  11424. rx,
  11425. ry,
  11426. radialGradient_1,
  11427. midX,
  11428. midY,
  11429. f,
  11430. invF
  11431. return __generator(this, function (_h) {
  11432. switch (_h.label) {
  11433. case 0:
  11434. if (!((backgroundImage.type === 0) /* URL */))
  11435. return [3 /*break*/, 5]
  11436. image = void 0
  11437. url = backgroundImage.url
  11438. _h.label = 1
  11439. case 1:
  11440. _h.trys.push([1, 3, , 4])
  11441. return [
  11442. 4 /*yield*/,
  11443. this_1.context.cache.match(url)
  11444. ]
  11445. case 2:
  11446. image = _h.sent()
  11447. return [3 /*break*/, 4]
  11448. case 3:
  11449. _h.sent()
  11450. this_1.context.logger.error(
  11451. 'Error loading background-image ' + url
  11452. )
  11453. return [3 /*break*/, 4]
  11454. case 4:
  11455. if (image) {
  11456. ;(_c = calculateBackgroundRendering(
  11457. container,
  11458. index,
  11459. [
  11460. image.width,
  11461. image.height,
  11462. image.width / image.height
  11463. ]
  11464. )),
  11465. (path = _c[0]),
  11466. (x = _c[1]),
  11467. (y = _c[2]),
  11468. (width = _c[3]),
  11469. (height = _c[4])
  11470. pattern = this_1.ctx.createPattern(
  11471. this_1.resizeImage(image, width, height),
  11472. 'repeat'
  11473. )
  11474. this_1.renderRepeat(path, pattern, x, y)
  11475. }
  11476. return [3 /*break*/, 6]
  11477. case 5:
  11478. if (isLinearGradient(backgroundImage)) {
  11479. ;(_d = calculateBackgroundRendering(
  11480. container,
  11481. index,
  11482. [null, null, null]
  11483. )),
  11484. (path = _d[0]),
  11485. (x = _d[1]),
  11486. (y = _d[2]),
  11487. (width = _d[3]),
  11488. (height = _d[4])
  11489. ;(_e = calculateGradientDirection(
  11490. backgroundImage.angle,
  11491. width,
  11492. height
  11493. )),
  11494. (lineLength = _e[0]),
  11495. (x0 = _e[1]),
  11496. (x1 = _e[2]),
  11497. (y0 = _e[3]),
  11498. (y1 = _e[4])
  11499. canvas = document.createElement('canvas')
  11500. canvas.width = width
  11501. canvas.height = height
  11502. ctx = canvas.getContext('2d')
  11503. gradient_1 = ctx.createLinearGradient(
  11504. x0,
  11505. y0,
  11506. x1,
  11507. y1
  11508. )
  11509. processColorStops(
  11510. backgroundImage.stops,
  11511. lineLength
  11512. ).forEach(function (colorStop) {
  11513. return gradient_1.addColorStop(
  11514. colorStop.stop,
  11515. asString(colorStop.color)
  11516. )
  11517. })
  11518. ctx.fillStyle = gradient_1
  11519. ctx.fillRect(0, 0, width, height)
  11520. if (width > 0 && height > 0) {
  11521. pattern = this_1.ctx.createPattern(
  11522. canvas,
  11523. 'repeat'
  11524. )
  11525. this_1.renderRepeat(path, pattern, x, y)
  11526. }
  11527. } else if (isRadialGradient(backgroundImage)) {
  11528. ;(_f = calculateBackgroundRendering(
  11529. container,
  11530. index,
  11531. [null, null, null]
  11532. )),
  11533. (path = _f[0]),
  11534. (left = _f[1]),
  11535. (top_1 = _f[2]),
  11536. (width = _f[3]),
  11537. (height = _f[4])
  11538. position =
  11539. backgroundImage.position.length === 0
  11540. ? [FIFTY_PERCENT]
  11541. : backgroundImage.position
  11542. x = getAbsoluteValue(position[0], width)
  11543. y = getAbsoluteValue(
  11544. position[position.length - 1],
  11545. height
  11546. )
  11547. ;(_g = calculateRadius(
  11548. backgroundImage,
  11549. x,
  11550. y,
  11551. width,
  11552. height
  11553. )),
  11554. (rx = _g[0]),
  11555. (ry = _g[1])
  11556. if (rx > 0 && ry > 0) {
  11557. radialGradient_1 =
  11558. this_1.ctx.createRadialGradient(
  11559. left + x,
  11560. top_1 + y,
  11561. 0,
  11562. left + x,
  11563. top_1 + y,
  11564. rx
  11565. )
  11566. processColorStops(
  11567. backgroundImage.stops,
  11568. rx * 2
  11569. ).forEach(function (colorStop) {
  11570. return radialGradient_1.addColorStop(
  11571. colorStop.stop,
  11572. asString(colorStop.color)
  11573. )
  11574. })
  11575. this_1.path(path)
  11576. this_1.ctx.fillStyle = radialGradient_1
  11577. if (rx !== ry) {
  11578. midX =
  11579. container.bounds.left +
  11580. 0.5 * container.bounds.width
  11581. midY =
  11582. container.bounds.top +
  11583. 0.5 * container.bounds.height
  11584. f = ry / rx
  11585. invF = 1 / f
  11586. this_1.ctx.save()
  11587. this_1.ctx.translate(midX, midY)
  11588. this_1.ctx.transform(1, 0, 0, f, 0, 0)
  11589. this_1.ctx.translate(-midX, -midY)
  11590. this_1.ctx.fillRect(
  11591. left,
  11592. invF * (top_1 - midY) + midY,
  11593. width,
  11594. height * invF
  11595. )
  11596. this_1.ctx.restore()
  11597. } else {
  11598. this_1.ctx.fill()
  11599. }
  11600. }
  11601. }
  11602. _h.label = 6
  11603. case 6:
  11604. index--
  11605. return [2 /*return*/]
  11606. }
  11607. })
  11608. }
  11609. this_1 = this
  11610. ;(_i = 0),
  11611. (_a = container.styles.backgroundImage
  11612. .slice(0)
  11613. .reverse())
  11614. _b.label = 1
  11615. case 1:
  11616. if (!(_i < _a.length)) return [3 /*break*/, 4]
  11617. backgroundImage = _a[_i]
  11618. return [5 /*yield**/, _loop_1(backgroundImage)]
  11619. case 2:
  11620. _b.sent()
  11621. _b.label = 3
  11622. case 3:
  11623. _i++
  11624. return [3 /*break*/, 1]
  11625. case 4:
  11626. return [2 /*return*/]
  11627. }
  11628. })
  11629. })
  11630. }
  11631. CanvasRenderer.prototype.renderSolidBorder = function (
  11632. color,
  11633. side,
  11634. curvePoints
  11635. ) {
  11636. return __awaiter(this, void 0, void 0, function () {
  11637. return __generator(this, function (_a) {
  11638. this.path(parsePathForBorder(curvePoints, side))
  11639. this.ctx.fillStyle = asString(color)
  11640. this.ctx.fill()
  11641. return [2 /*return*/]
  11642. })
  11643. })
  11644. }
  11645. CanvasRenderer.prototype.renderDoubleBorder = function (
  11646. color,
  11647. width,
  11648. side,
  11649. curvePoints
  11650. ) {
  11651. return __awaiter(this, void 0, void 0, function () {
  11652. var outerPaths, innerPaths
  11653. return __generator(this, function (_a) {
  11654. switch (_a.label) {
  11655. case 0:
  11656. if (!(width < 3)) return [3 /*break*/, 2]
  11657. return [
  11658. 4 /*yield*/,
  11659. this.renderSolidBorder(color, side, curvePoints)
  11660. ]
  11661. case 1:
  11662. _a.sent()
  11663. return [2 /*return*/]
  11664. case 2:
  11665. outerPaths = parsePathForBorderDoubleOuter(
  11666. curvePoints,
  11667. side
  11668. )
  11669. this.path(outerPaths)
  11670. this.ctx.fillStyle = asString(color)
  11671. this.ctx.fill()
  11672. innerPaths = parsePathForBorderDoubleInner(
  11673. curvePoints,
  11674. side
  11675. )
  11676. this.path(innerPaths)
  11677. this.ctx.fill()
  11678. return [2 /*return*/]
  11679. }
  11680. })
  11681. })
  11682. }
  11683. CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (
  11684. paint
  11685. ) {
  11686. return __awaiter(this, void 0, void 0, function () {
  11687. var styles,
  11688. hasBackground,
  11689. borders,
  11690. backgroundPaintingArea,
  11691. side,
  11692. _i,
  11693. borders_1,
  11694. border
  11695. var _this = this
  11696. return __generator(this, function (_a) {
  11697. switch (_a.label) {
  11698. case 0:
  11699. this.applyEffects(
  11700. paint.getEffects(2 /* BACKGROUND_BORDERS */)
  11701. )
  11702. styles = paint.container.styles
  11703. hasBackground =
  11704. !isTransparent(styles.backgroundColor) ||
  11705. styles.backgroundImage.length
  11706. borders = [
  11707. {
  11708. style: styles.borderTopStyle,
  11709. color: styles.borderTopColor,
  11710. width: styles.borderTopWidth
  11711. },
  11712. {
  11713. style: styles.borderRightStyle,
  11714. color: styles.borderRightColor,
  11715. width: styles.borderRightWidth
  11716. },
  11717. {
  11718. style: styles.borderBottomStyle,
  11719. color: styles.borderBottomColor,
  11720. width: styles.borderBottomWidth
  11721. },
  11722. {
  11723. style: styles.borderLeftStyle,
  11724. color: styles.borderLeftColor,
  11725. width: styles.borderLeftWidth
  11726. }
  11727. ]
  11728. backgroundPaintingArea =
  11729. calculateBackgroundCurvedPaintingArea(
  11730. getBackgroundValueForIndex(styles.backgroundClip, 0),
  11731. paint.curves
  11732. )
  11733. if (!(hasBackground || styles.boxShadow.length))
  11734. return [3 /*break*/, 2]
  11735. this.ctx.save()
  11736. this.path(backgroundPaintingArea)
  11737. this.ctx.clip()
  11738. if (!isTransparent(styles.backgroundColor)) {
  11739. this.ctx.fillStyle = asString(styles.backgroundColor)
  11740. this.ctx.fill()
  11741. }
  11742. return [
  11743. 4 /*yield*/,
  11744. this.renderBackgroundImage(paint.container)
  11745. ]
  11746. case 1:
  11747. _a.sent()
  11748. this.ctx.restore()
  11749. styles.boxShadow
  11750. .slice(0)
  11751. .reverse()
  11752. .forEach(function (shadow) {
  11753. _this.ctx.save()
  11754. var borderBoxArea = calculateBorderBoxPath(
  11755. paint.curves
  11756. )
  11757. var maskOffset = shadow.inset ? 0 : MASK_OFFSET
  11758. var shadowPaintingArea = transformPath(
  11759. borderBoxArea,
  11760. -maskOffset +
  11761. (shadow.inset ? 1 : -1) * shadow.spread.number,
  11762. (shadow.inset ? 1 : -1) * shadow.spread.number,
  11763. shadow.spread.number * (shadow.inset ? -2 : 2),
  11764. shadow.spread.number * (shadow.inset ? -2 : 2)
  11765. )
  11766. if (shadow.inset) {
  11767. _this.path(borderBoxArea)
  11768. _this.ctx.clip()
  11769. _this.mask(shadowPaintingArea)
  11770. } else {
  11771. _this.mask(borderBoxArea)
  11772. _this.ctx.clip()
  11773. _this.path(shadowPaintingArea)
  11774. }
  11775. _this.ctx.shadowOffsetX =
  11776. shadow.offsetX.number + maskOffset
  11777. _this.ctx.shadowOffsetY = shadow.offsetY.number
  11778. _this.ctx.shadowColor = asString(shadow.color)
  11779. _this.ctx.shadowBlur = shadow.blur.number
  11780. _this.ctx.fillStyle = shadow.inset
  11781. ? asString(shadow.color)
  11782. : 'rgba(0,0,0,1)'
  11783. _this.ctx.fill()
  11784. _this.ctx.restore()
  11785. })
  11786. _a.label = 2
  11787. case 2:
  11788. side = 0
  11789. ;(_i = 0), (borders_1 = borders)
  11790. _a.label = 3
  11791. case 3:
  11792. if (!(_i < borders_1.length)) return [3 /*break*/, 13]
  11793. border = borders_1[_i]
  11794. if (
  11795. !(
  11796. border.style !== 0 /* NONE */ &&
  11797. !isTransparent(border.color) &&
  11798. border.width > 0
  11799. )
  11800. )
  11801. return [3 /*break*/, 11]
  11802. if (!((border.style === 2) /* DASHED */))
  11803. return [3 /*break*/, 5]
  11804. return [
  11805. 4 /*yield*/,
  11806. this.renderDashedDottedBorder(
  11807. border.color,
  11808. border.width,
  11809. side,
  11810. paint.curves,
  11811. 2 /* DASHED */
  11812. )
  11813. ]
  11814. case 4:
  11815. _a.sent()
  11816. return [3 /*break*/, 11]
  11817. case 5:
  11818. if (!((border.style === 3) /* DOTTED */))
  11819. return [3 /*break*/, 7]
  11820. return [
  11821. 4 /*yield*/,
  11822. this.renderDashedDottedBorder(
  11823. border.color,
  11824. border.width,
  11825. side,
  11826. paint.curves,
  11827. 3 /* DOTTED */
  11828. )
  11829. ]
  11830. case 6:
  11831. _a.sent()
  11832. return [3 /*break*/, 11]
  11833. case 7:
  11834. if (!((border.style === 4) /* DOUBLE */))
  11835. return [3 /*break*/, 9]
  11836. return [
  11837. 4 /*yield*/,
  11838. this.renderDoubleBorder(
  11839. border.color,
  11840. border.width,
  11841. side,
  11842. paint.curves
  11843. )
  11844. ]
  11845. case 8:
  11846. _a.sent()
  11847. return [3 /*break*/, 11]
  11848. case 9:
  11849. return [
  11850. 4 /*yield*/,
  11851. this.renderSolidBorder(border.color, side, paint.curves)
  11852. ]
  11853. case 10:
  11854. _a.sent()
  11855. _a.label = 11
  11856. case 11:
  11857. side++
  11858. _a.label = 12
  11859. case 12:
  11860. _i++
  11861. return [3 /*break*/, 3]
  11862. case 13:
  11863. return [2 /*return*/]
  11864. }
  11865. })
  11866. })
  11867. }
  11868. CanvasRenderer.prototype.renderDashedDottedBorder = function (
  11869. color,
  11870. width,
  11871. side,
  11872. curvePoints,
  11873. style
  11874. ) {
  11875. return __awaiter(this, void 0, void 0, function () {
  11876. var strokePaths,
  11877. boxPaths,
  11878. startX,
  11879. startY,
  11880. endX,
  11881. endY,
  11882. length,
  11883. dashLength,
  11884. spaceLength,
  11885. useLineDash,
  11886. multiplier,
  11887. numberOfDashes,
  11888. minSpace,
  11889. maxSpace,
  11890. path1,
  11891. path2,
  11892. path1,
  11893. path2
  11894. return __generator(this, function (_a) {
  11895. this.ctx.save()
  11896. strokePaths = parsePathForBorderStroke(curvePoints, side)
  11897. boxPaths = parsePathForBorder(curvePoints, side)
  11898. if (style === 2 /* DASHED */) {
  11899. this.path(boxPaths)
  11900. this.ctx.clip()
  11901. }
  11902. if (isBezierCurve(boxPaths[0])) {
  11903. startX = boxPaths[0].start.x
  11904. startY = boxPaths[0].start.y
  11905. } else {
  11906. startX = boxPaths[0].x
  11907. startY = boxPaths[0].y
  11908. }
  11909. if (isBezierCurve(boxPaths[1])) {
  11910. endX = boxPaths[1].end.x
  11911. endY = boxPaths[1].end.y
  11912. } else {
  11913. endX = boxPaths[1].x
  11914. endY = boxPaths[1].y
  11915. }
  11916. if (side === 0 || side === 2) {
  11917. length = Math.abs(startX - endX)
  11918. } else {
  11919. length = Math.abs(startY - endY)
  11920. }
  11921. this.ctx.beginPath()
  11922. if (style === 3 /* DOTTED */) {
  11923. this.formatPath(strokePaths)
  11924. } else {
  11925. this.formatPath(boxPaths.slice(0, 2))
  11926. }
  11927. dashLength = width < 3 ? width * 3 : width * 2
  11928. spaceLength = width < 3 ? width * 2 : width
  11929. if (style === 3 /* DOTTED */) {
  11930. dashLength = width
  11931. spaceLength = width
  11932. }
  11933. useLineDash = true
  11934. if (length <= dashLength * 2) {
  11935. useLineDash = false
  11936. } else if (length <= dashLength * 2 + spaceLength) {
  11937. multiplier = length / (2 * dashLength + spaceLength)
  11938. dashLength *= multiplier
  11939. spaceLength *= multiplier
  11940. } else {
  11941. numberOfDashes = Math.floor(
  11942. (length + spaceLength) / (dashLength + spaceLength)
  11943. )
  11944. minSpace =
  11945. (length - numberOfDashes * dashLength) /
  11946. (numberOfDashes - 1)
  11947. maxSpace =
  11948. (length - (numberOfDashes + 1) * dashLength) /
  11949. numberOfDashes
  11950. spaceLength =
  11951. maxSpace <= 0 ||
  11952. Math.abs(spaceLength - minSpace) <
  11953. Math.abs(spaceLength - maxSpace)
  11954. ? minSpace
  11955. : maxSpace
  11956. }
  11957. if (useLineDash) {
  11958. if (style === 3 /* DOTTED */) {
  11959. this.ctx.setLineDash([0, dashLength + spaceLength])
  11960. } else {
  11961. this.ctx.setLineDash([dashLength, spaceLength])
  11962. }
  11963. }
  11964. if (style === 3 /* DOTTED */) {
  11965. this.ctx.lineCap = 'round'
  11966. this.ctx.lineWidth = width
  11967. } else {
  11968. this.ctx.lineWidth = width * 2 + 1.1
  11969. }
  11970. this.ctx.strokeStyle = asString(color)
  11971. this.ctx.stroke()
  11972. this.ctx.setLineDash([]) // dashed round edge gap
  11973. if (style === 2 /* DASHED */) {
  11974. if (isBezierCurve(boxPaths[0])) {
  11975. path1 = boxPaths[3]
  11976. path2 = boxPaths[0]
  11977. this.ctx.beginPath()
  11978. this.formatPath([
  11979. new Vector(path1.end.x, path1.end.y),
  11980. new Vector(path2.start.x, path2.start.y)
  11981. ])
  11982. this.ctx.stroke()
  11983. }
  11984. if (isBezierCurve(boxPaths[1])) {
  11985. path1 = boxPaths[1]
  11986. path2 = boxPaths[2]
  11987. this.ctx.beginPath()
  11988. this.formatPath([
  11989. new Vector(path1.end.x, path1.end.y),
  11990. new Vector(path2.start.x, path2.start.y)
  11991. ])
  11992. this.ctx.stroke()
  11993. }
  11994. }
  11995. this.ctx.restore()
  11996. return [2 /*return*/]
  11997. })
  11998. })
  11999. }
  12000. CanvasRenderer.prototype.render = function (element) {
  12001. return __awaiter(this, void 0, void 0, function () {
  12002. var stack
  12003. return __generator(this, function (_a) {
  12004. switch (_a.label) {
  12005. case 0:
  12006. if (this.options.backgroundColor) {
  12007. this.ctx.fillStyle = asString(
  12008. this.options.backgroundColor
  12009. )
  12010. this.ctx.fillRect(
  12011. this.options.x,
  12012. this.options.y,
  12013. this.options.width,
  12014. this.options.height
  12015. )
  12016. }
  12017. stack = parseStackingContexts(element)
  12018. return [4 /*yield*/, this.renderStack(stack)]
  12019. case 1:
  12020. _a.sent()
  12021. this.applyEffects([])
  12022. return [2 /*return*/, this.canvas]
  12023. }
  12024. })
  12025. })
  12026. }
  12027. return CanvasRenderer
  12028. })(Renderer)
  12029. var isTextInputElement = function isTextInputElement(container) {
  12030. if (container instanceof TextareaElementContainer) {
  12031. return true
  12032. } else if (container instanceof SelectElementContainer) {
  12033. return true
  12034. } else if (
  12035. container instanceof InputElementContainer &&
  12036. container.type !== RADIO &&
  12037. container.type !== CHECKBOX
  12038. ) {
  12039. return true
  12040. }
  12041. return false
  12042. }
  12043. var calculateBackgroundCurvedPaintingArea =
  12044. function calculateBackgroundCurvedPaintingArea(clip, curves) {
  12045. switch (clip) {
  12046. case 0 /* BORDER_BOX */:
  12047. return calculateBorderBoxPath(curves)
  12048. case 2 /* CONTENT_BOX */:
  12049. return calculateContentBoxPath(curves)
  12050. case 1 /* PADDING_BOX */:
  12051. default:
  12052. return calculatePaddingBoxPath(curves)
  12053. }
  12054. }
  12055. var canvasTextAlign = function canvasTextAlign(textAlign) {
  12056. switch (textAlign) {
  12057. case 1 /* CENTER */:
  12058. return 'center'
  12059. case 2 /* RIGHT */:
  12060. return 'right'
  12061. case 0 /* LEFT */:
  12062. default:
  12063. return 'left'
  12064. }
  12065. } // see https://github.com/niklasvh/html2canvas/pull/2645
  12066. var iOSBrokenFonts = ['-apple-system', 'system-ui']
  12067. var fixIOSSystemFonts = function fixIOSSystemFonts(fontFamilies) {
  12068. return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)
  12069. ? fontFamilies.filter(function (fontFamily) {
  12070. return iOSBrokenFonts.indexOf(fontFamily) === -1
  12071. })
  12072. : fontFamilies
  12073. }
  12074. var ForeignObjectRenderer = /** @class */ (function (_super) {
  12075. __extends(ForeignObjectRenderer, _super)
  12076. function ForeignObjectRenderer(context, options) {
  12077. var _this = _super.call(this, context, options) || this
  12078. _this.canvas = options.canvas
  12079. ? options.canvas
  12080. : document.createElement('canvas')
  12081. _this.ctx = _this.canvas.getContext('2d')
  12082. _this.options = options
  12083. _this.canvas.width = Math.floor(options.width * options.scale)
  12084. _this.canvas.height = Math.floor(options.height * options.scale)
  12085. _this.canvas.style.width = options.width + 'px'
  12086. _this.canvas.style.height = options.height + 'px'
  12087. _this.ctx.scale(_this.options.scale, _this.options.scale)
  12088. _this.ctx.translate(-options.x, -options.y)
  12089. _this.context.logger.debug(
  12090. 'EXPERIMENTAL ForeignObject renderer initialized (' +
  12091. options.width +
  12092. 'x' +
  12093. options.height +
  12094. ' at ' +
  12095. options.x +
  12096. ',' +
  12097. options.y +
  12098. ') with scale ' +
  12099. options.scale
  12100. )
  12101. return _this
  12102. }
  12103. ForeignObjectRenderer.prototype.render = function (element) {
  12104. return __awaiter(this, void 0, void 0, function () {
  12105. var svg, img
  12106. return __generator(this, function (_a) {
  12107. switch (_a.label) {
  12108. case 0:
  12109. svg = createForeignObjectSVG(
  12110. this.options.width * this.options.scale,
  12111. this.options.height * this.options.scale,
  12112. this.options.scale,
  12113. this.options.scale,
  12114. element
  12115. )
  12116. return [4 /*yield*/, loadSerializedSVG(svg)]
  12117. case 1:
  12118. img = _a.sent()
  12119. if (this.options.backgroundColor) {
  12120. this.ctx.fillStyle = asString(
  12121. this.options.backgroundColor
  12122. )
  12123. this.ctx.fillRect(
  12124. 0,
  12125. 0,
  12126. this.options.width * this.options.scale,
  12127. this.options.height * this.options.scale
  12128. )
  12129. }
  12130. this.ctx.drawImage(
  12131. img,
  12132. -this.options.x * this.options.scale,
  12133. -this.options.y * this.options.scale
  12134. )
  12135. return [2 /*return*/, this.canvas]
  12136. }
  12137. })
  12138. })
  12139. }
  12140. return ForeignObjectRenderer
  12141. })(Renderer)
  12142. var loadSerializedSVG = function loadSerializedSVG(svg) {
  12143. return new Promise(function (resolve, reject) {
  12144. var img = new Image()
  12145. img.onload = function () {
  12146. resolve(img)
  12147. }
  12148. img.onerror = reject
  12149. img.src =
  12150. 'data:image/svg+xml;charset=utf-8,' +
  12151. encodeURIComponent(new XMLSerializer().serializeToString(svg))
  12152. })
  12153. }
  12154. var Logger = /** @class */ (function () {
  12155. function Logger(_a) {
  12156. var id = _a.id,
  12157. enabled = _a.enabled
  12158. this.id = id
  12159. this.enabled = enabled
  12160. this.start = Date.now()
  12161. } // eslint-disable-next-line @typescript-eslint/no-explicit-any
  12162. Logger.prototype.debug = function () {
  12163. var args = []
  12164. for (var _i = 0; _i < arguments.length; _i++) {
  12165. args[_i] = arguments[_i]
  12166. }
  12167. if (this.enabled) {
  12168. // eslint-disable-next-line no-console
  12169. if (
  12170. typeof window !== 'undefined' &&
  12171. window.console &&
  12172. typeof console.debug === 'function'
  12173. ) {
  12174. // eslint-disable-next-line no-console
  12175. console.debug.apply(
  12176. console,
  12177. __spreadArray([this.id, this.getTime() + 'ms'], args)
  12178. )
  12179. } else {
  12180. this.info.apply(this, args)
  12181. }
  12182. }
  12183. }
  12184. Logger.prototype.getTime = function () {
  12185. return Date.now() - this.start
  12186. } // eslint-disable-next-line @typescript-eslint/no-explicit-any
  12187. Logger.prototype.info = function () {
  12188. var args = []
  12189. for (var _i = 0; _i < arguments.length; _i++) {
  12190. args[_i] = arguments[_i]
  12191. }
  12192. if (this.enabled) {
  12193. // eslint-disable-next-line no-console
  12194. if (
  12195. typeof window !== 'undefined' &&
  12196. window.console &&
  12197. typeof console.info === 'function'
  12198. ) {
  12199. // eslint-disable-next-line no-console
  12200. console.info.apply(
  12201. console,
  12202. __spreadArray([this.id, this.getTime() + 'ms'], args)
  12203. )
  12204. }
  12205. }
  12206. } // eslint-disable-next-line @typescript-eslint/no-explicit-any
  12207. Logger.prototype.warn = function () {
  12208. var args = []
  12209. for (var _i = 0; _i < arguments.length; _i++) {
  12210. args[_i] = arguments[_i]
  12211. }
  12212. if (this.enabled) {
  12213. // eslint-disable-next-line no-console
  12214. if (
  12215. typeof window !== 'undefined' &&
  12216. window.console &&
  12217. typeof console.warn === 'function'
  12218. ) {
  12219. // eslint-disable-next-line no-console
  12220. console.warn.apply(
  12221. console,
  12222. __spreadArray([this.id, this.getTime() + 'ms'], args)
  12223. )
  12224. } else {
  12225. this.info.apply(this, args)
  12226. }
  12227. }
  12228. } // eslint-disable-next-line @typescript-eslint/no-explicit-any
  12229. Logger.prototype.error = function () {
  12230. var args = []
  12231. for (var _i = 0; _i < arguments.length; _i++) {
  12232. args[_i] = arguments[_i]
  12233. }
  12234. if (this.enabled) {
  12235. // eslint-disable-next-line no-console
  12236. if (
  12237. typeof window !== 'undefined' &&
  12238. window.console &&
  12239. typeof console.error === 'function'
  12240. ) {
  12241. // eslint-disable-next-line no-console
  12242. console.error.apply(
  12243. console,
  12244. __spreadArray([this.id, this.getTime() + 'ms'], args)
  12245. )
  12246. } else {
  12247. this.info.apply(this, args)
  12248. }
  12249. }
  12250. }
  12251. Logger.instances = {}
  12252. return Logger
  12253. })()
  12254. var Context = /** @class */ (function () {
  12255. function Context(options, windowBounds) {
  12256. var _a
  12257. this.windowBounds = windowBounds
  12258. this.instanceName = '#' + Context.instanceCount++
  12259. this.logger = new Logger({
  12260. id: this.instanceName,
  12261. enabled: options.logging
  12262. })
  12263. this.cache =
  12264. (_a = options.cache) !== null && _a !== void 0
  12265. ? _a
  12266. : new Cache(this, options)
  12267. }
  12268. Context.instanceCount = 1
  12269. return Context
  12270. })()
  12271. var html2canvas = function html2canvas(element, options) {
  12272. if (options === void 0) {
  12273. options = {}
  12274. }
  12275. return renderElement(element, options)
  12276. }
  12277. if (typeof window !== 'undefined') {
  12278. CacheStorage.setContext(window)
  12279. }
  12280. var renderElement = function renderElement(element, opts) {
  12281. return __awaiter(void 0, void 0, void 0, function () {
  12282. var ownerDocument,
  12283. defaultView,
  12284. resourceOptions,
  12285. contextOptions,
  12286. windowOptions,
  12287. windowBounds,
  12288. context,
  12289. foreignObjectRendering,
  12290. cloneOptions,
  12291. documentCloner,
  12292. clonedElement,
  12293. container,
  12294. _a,
  12295. width,
  12296. height,
  12297. left,
  12298. top,
  12299. backgroundColor,
  12300. renderOptions,
  12301. canvas,
  12302. renderer,
  12303. root,
  12304. renderer
  12305. var _b,
  12306. _c,
  12307. _d,
  12308. _e,
  12309. _f,
  12310. _g,
  12311. _h,
  12312. _j,
  12313. _k,
  12314. _l,
  12315. _m,
  12316. _o,
  12317. _p,
  12318. _q,
  12319. _r,
  12320. _s,
  12321. _t
  12322. return __generator(this, function (_u) {
  12323. switch (_u.label) {
  12324. case 0:
  12325. if (!element || _typeof(element) !== 'object') {
  12326. return [
  12327. 2 /*return*/,
  12328. Promise.reject(
  12329. 'Invalid element provided as first argument'
  12330. )
  12331. ]
  12332. }
  12333. ownerDocument = element.ownerDocument
  12334. if (!ownerDocument) {
  12335. throw new Error('Element is not attached to a Document')
  12336. }
  12337. defaultView = ownerDocument.defaultView
  12338. if (!defaultView) {
  12339. throw new Error('Document is not attached to a Window')
  12340. }
  12341. resourceOptions = {
  12342. allowTaint:
  12343. (_b = opts.allowTaint) !== null && _b !== void 0
  12344. ? _b
  12345. : false,
  12346. imageTimeout:
  12347. (_c = opts.imageTimeout) !== null && _c !== void 0
  12348. ? _c
  12349. : 15000,
  12350. proxy: opts.proxy,
  12351. useCORS:
  12352. (_d = opts.useCORS) !== null && _d !== void 0
  12353. ? _d
  12354. : false
  12355. }
  12356. contextOptions = _assign(
  12357. {
  12358. logging:
  12359. (_e = opts.logging) !== null && _e !== void 0
  12360. ? _e
  12361. : true,
  12362. cache: opts.cache
  12363. },
  12364. resourceOptions
  12365. )
  12366. windowOptions = {
  12367. windowWidth:
  12368. (_f = opts.windowWidth) !== null && _f !== void 0
  12369. ? _f
  12370. : defaultView.innerWidth,
  12371. windowHeight:
  12372. (_g = opts.windowHeight) !== null && _g !== void 0
  12373. ? _g
  12374. : defaultView.innerHeight,
  12375. scrollX:
  12376. (_h = opts.scrollX) !== null && _h !== void 0
  12377. ? _h
  12378. : defaultView.pageXOffset,
  12379. scrollY:
  12380. (_j = opts.scrollY) !== null && _j !== void 0
  12381. ? _j
  12382. : defaultView.pageYOffset
  12383. }
  12384. windowBounds = new Bounds(
  12385. windowOptions.scrollX,
  12386. windowOptions.scrollY,
  12387. windowOptions.windowWidth,
  12388. windowOptions.windowHeight
  12389. )
  12390. context = new Context(contextOptions, windowBounds)
  12391. foreignObjectRendering =
  12392. (_k = opts.foreignObjectRendering) !== null &&
  12393. _k !== void 0
  12394. ? _k
  12395. : false
  12396. cloneOptions = {
  12397. allowTaint:
  12398. (_l = opts.allowTaint) !== null && _l !== void 0
  12399. ? _l
  12400. : false,
  12401. onclone: opts.onclone,
  12402. ignoreElements: opts.ignoreElements,
  12403. inlineImages: foreignObjectRendering,
  12404. copyStyles: foreignObjectRendering
  12405. }
  12406. context.logger.debug(
  12407. 'Starting document clone with size ' +
  12408. windowBounds.width +
  12409. 'x' +
  12410. windowBounds.height +
  12411. ' scrolled to ' +
  12412. -windowBounds.left +
  12413. ',' +
  12414. -windowBounds.top
  12415. )
  12416. documentCloner = new DocumentCloner(
  12417. context,
  12418. element,
  12419. cloneOptions
  12420. )
  12421. clonedElement = documentCloner.clonedReferenceElement
  12422. if (!clonedElement) {
  12423. return [
  12424. 2 /*return*/,
  12425. Promise.reject(
  12426. 'Unable to find element in cloned iframe'
  12427. )
  12428. ]
  12429. }
  12430. return [
  12431. 4 /*yield*/,
  12432. documentCloner.toIFrame(ownerDocument, windowBounds)
  12433. ]
  12434. case 1:
  12435. container = _u.sent()
  12436. ;(_a =
  12437. isBodyElement(clonedElement) ||
  12438. isHTMLElement(clonedElement)
  12439. ? parseDocumentSize(clonedElement.ownerDocument)
  12440. : parseBounds(context, clonedElement)),
  12441. (width = _a.width),
  12442. (height = _a.height),
  12443. (left = _a.left),
  12444. (top = _a.top)
  12445. backgroundColor = parseBackgroundColor(
  12446. context,
  12447. clonedElement,
  12448. opts.backgroundColor
  12449. )
  12450. renderOptions = {
  12451. canvas: opts.canvas,
  12452. backgroundColor: backgroundColor,
  12453. scale:
  12454. (_o =
  12455. (_m = opts.scale) !== null && _m !== void 0
  12456. ? _m
  12457. : defaultView.devicePixelRatio) !== null &&
  12458. _o !== void 0
  12459. ? _o
  12460. : 1,
  12461. x:
  12462. ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) +
  12463. left,
  12464. y:
  12465. ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) +
  12466. top,
  12467. width:
  12468. (_r = opts.width) !== null && _r !== void 0
  12469. ? _r
  12470. : Math.ceil(width),
  12471. height:
  12472. (_s = opts.height) !== null && _s !== void 0
  12473. ? _s
  12474. : Math.ceil(height)
  12475. }
  12476. if (!foreignObjectRendering) return [3 /*break*/, 3]
  12477. context.logger.debug(
  12478. 'Document cloned, using foreign object rendering'
  12479. )
  12480. renderer = new ForeignObjectRenderer(context, renderOptions)
  12481. return [4 /*yield*/, renderer.render(clonedElement)]
  12482. case 2:
  12483. canvas = _u.sent()
  12484. return [3 /*break*/, 5]
  12485. case 3:
  12486. context.logger.debug(
  12487. 'Document cloned, element located at ' +
  12488. left +
  12489. ',' +
  12490. top +
  12491. ' with size ' +
  12492. width +
  12493. 'x' +
  12494. height +
  12495. ' using computed rendering'
  12496. )
  12497. context.logger.debug('Starting DOM parsing')
  12498. root = parseTree(context, clonedElement)
  12499. if (backgroundColor === root.styles.backgroundColor) {
  12500. root.styles.backgroundColor = COLORS.TRANSPARENT
  12501. }
  12502. context.logger.debug(
  12503. 'Starting renderer for element at ' +
  12504. renderOptions.x +
  12505. ',' +
  12506. renderOptions.y +
  12507. ' with size ' +
  12508. renderOptions.width +
  12509. 'x' +
  12510. renderOptions.height
  12511. )
  12512. renderer = new CanvasRenderer(context, renderOptions)
  12513. return [4 /*yield*/, renderer.render(root)]
  12514. case 4:
  12515. canvas = _u.sent()
  12516. _u.label = 5
  12517. case 5:
  12518. if (
  12519. (_t = opts.removeContainer) !== null && _t !== void 0
  12520. ? _t
  12521. : true
  12522. ) {
  12523. if (!DocumentCloner.destroy(container)) {
  12524. context.logger.error(
  12525. 'Cannot detach cloned iframe as it is not in the DOM anymore'
  12526. )
  12527. }
  12528. }
  12529. context.logger.debug('Finished rendering')
  12530. return [2 /*return*/, canvas]
  12531. }
  12532. })
  12533. })
  12534. }
  12535. var parseBackgroundColor = function parseBackgroundColor(
  12536. context,
  12537. element,
  12538. backgroundColorOverride
  12539. ) {
  12540. var ownerDocument = element.ownerDocument // http://www.w3.org/TR/css3-background/#special-backgrounds
  12541. var documentBackgroundColor = ownerDocument.documentElement
  12542. ? parseColor(
  12543. context,
  12544. getComputedStyle(ownerDocument.documentElement)
  12545. .backgroundColor
  12546. )
  12547. : COLORS.TRANSPARENT
  12548. var bodyBackgroundColor = ownerDocument.body
  12549. ? parseColor(
  12550. context,
  12551. getComputedStyle(ownerDocument.body).backgroundColor
  12552. )
  12553. : COLORS.TRANSPARENT
  12554. var defaultBackgroundColor =
  12555. typeof backgroundColorOverride === 'string'
  12556. ? parseColor(context, backgroundColorOverride)
  12557. : backgroundColorOverride === null
  12558. ? COLORS.TRANSPARENT
  12559. : 0xffffffff
  12560. return element === ownerDocument.documentElement
  12561. ? isTransparent(documentBackgroundColor)
  12562. ? isTransparent(bodyBackgroundColor)
  12563. ? defaultBackgroundColor
  12564. : bodyBackgroundColor
  12565. : documentBackgroundColor
  12566. : defaultBackgroundColor
  12567. }
  12568. var html2canvas$1 = html2canvas
  12569. var Share = defineComponent({
  12570. name: 'share',
  12571. props: { teacherId: { type: Number } },
  12572. data: function data() {
  12573. return { qrCode: '', image: null }
  12574. },
  12575. mounted: function mounted() {
  12576. var _this2 = this
  12577. console.log(state)
  12578. this.qrCode =
  12579. location.origin +
  12580. '/student/#/inviteTeacher?id=' +
  12581. this.teacherId
  12582. this.$nextTick(
  12583. /*#__PURE__*/ _asyncToGenerator(
  12584. /*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
  12585. var container
  12586. return regeneratorRuntime.wrap(function _callee$(
  12587. _context2
  12588. ) {
  12589. while (1) {
  12590. switch ((_context2.prev = _context2.next)) {
  12591. case 0:
  12592. container = document.getElementById(
  12593. 'share-preview-container'
  12594. )
  12595. html2canvas$1(container, {
  12596. allowTaint: true,
  12597. useCORS: true
  12598. }).then(function (canvas) {
  12599. var url = canvas.toDataURL('image/png')
  12600. _this2.image = url
  12601. }) // let image = await toPng(container)
  12602. // image = await toPng(container)
  12603. // this.image = image
  12604. case 2:
  12605. case 'end':
  12606. return _context2.stop()
  12607. }
  12608. }
  12609. },
  12610. _callee)
  12611. })
  12612. )
  12613. )
  12614. },
  12615. methods: {
  12616. shareShow: function shareShow() {
  12617. var _this3 = this
  12618. return _asyncToGenerator(
  12619. /*#__PURE__*/ regeneratorRuntime.mark(function _callee2() {
  12620. var image
  12621. return regeneratorRuntime.wrap(function _callee2$(
  12622. _context3
  12623. ) {
  12624. while (1) {
  12625. switch ((_context3.prev = _context3.next)) {
  12626. case 0:
  12627. image = _this3.image
  12628. if (image) {
  12629. postMessage(
  12630. {
  12631. api: 'shareAchievements',
  12632. content: {
  12633. title: '我在管乐迷使用AI智能云教练练习乐器',
  12634. desc: '管乐迷AI智能云教练帮助我自主练习乐器,真的太好用啦!每天都要坚持练习哦~',
  12635. image: image,
  12636. video: '',
  12637. type: 'image'
  12638. }
  12639. },
  12640. function (res) {
  12641. if (res && res.content) {
  12642. Toast(
  12643. res.content.message ||
  12644. (res.content.status
  12645. ? '分享成功'
  12646. : '分享失败')
  12647. )
  12648. }
  12649. }
  12650. )
  12651. }
  12652. case 2:
  12653. case 'end':
  12654. return _context3.stop()
  12655. }
  12656. }
  12657. },
  12658. _callee2)
  12659. })
  12660. )()
  12661. }
  12662. },
  12663. render: function render() {
  12664. var _this4 = this
  12665. return createVNode(Fragment, null, [
  12666. createVNode(
  12667. 'div',
  12668. {
  12669. class: styles$2.continue,
  12670. onClick: function onClick() {
  12671. _this4.shareShow()
  12672. }
  12673. },
  12674. [createTextVNode('\u5206\u4EAB')]
  12675. ),
  12676. createVNode(
  12677. 'div',
  12678. {
  12679. class: styles$2.shareSection,
  12680. id: 'share-preview-container'
  12681. },
  12682. [
  12683. createVNode('div', { class: styles$2.section }, [
  12684. createVNode(
  12685. Cell,
  12686. { center: true, border: false, style: { padding: 0 } },
  12687. {
  12688. icon: function icon() {
  12689. return createVNode(
  12690. 'img',
  12691. {
  12692. src: state.user.data.heardUrl
  12693. ? state.user.data.heardUrl +
  12694. '?time=' +
  12695. new Date().valueOf()
  12696. : iconTeacher,
  12697. class: styles$2.img,
  12698. crossorigin: 'anonymous'
  12699. },
  12700. null
  12701. )
  12702. },
  12703. title: function title() {
  12704. return createVNode('div', null, [
  12705. createVNode('p', { class: styles$2.name }, [
  12706. state.user.data.username
  12707. ]),
  12708. createVNode('p', { class: styles$2.titleTips }, [
  12709. createTextVNode(
  12710. '\u9177\u4E50\u79C0\u5165\u9A7B\u8001\u5E08'
  12711. )
  12712. ])
  12713. ])
  12714. }
  12715. }
  12716. ),
  12717. createVNode(
  12718. 'p',
  12719. { class: [styles$2.txt, styles$2.teacherName] },
  12720. [
  12721. createVNode('span', null, [state.user.data.username]),
  12722. createTextVNode(
  12723. '\u9080\u8BF7\u60A8\u52A0\u5165\u9177\u4E50\u79C0'
  12724. )
  12725. ]
  12726. ),
  12727. createVNode('p', { class: styles$2.txt }, [
  12728. createTextVNode(
  12729. '\u6765\u4E0E\u6211\u4E00\u8D77\u8E0F\u5165\u97F3\u4E50\u6BBF\u5802\u5427\uFF01'
  12730. )
  12731. ])
  12732. ]),
  12733. createVNode(
  12734. 'div',
  12735. { class: [styles$2.section, styles$2.download] },
  12736. [
  12737. createVNode('div', { class: styles$2.logo }, [
  12738. createVNode('img', { src: logo$1 }, null),
  12739. createVNode('p', null, [
  12740. createTextVNode(
  12741. '\u626B\u7801\u4E0B\u8F7D\u9177\u4E50\u79C0\u5F00\u542F\u6559\u5B66\u4E4B\u65C5'
  12742. )
  12743. ])
  12744. ]),
  12745. createVNode('div', { class: styles$2.qrcode }, [
  12746. createVNode(
  12747. QrcodeVue,
  12748. {
  12749. value: this.qrCode,
  12750. style: { width: '100%', height: '100%' }
  12751. },
  12752. null
  12753. )
  12754. ])
  12755. ]
  12756. )
  12757. ]
  12758. )
  12759. ])
  12760. }
  12761. })
  12762. var label = '_label_v8pn1_1'
  12763. var studentList$1 = '_studentList_v8pn1_13'
  12764. var btnGroup$1 = '_btnGroup_v8pn1_20'
  12765. var styles$1 = {
  12766. label: label,
  12767. studentList: studentList$1,
  12768. btnGroup: btnGroup$1
  12769. }
  12770. function _isSlot$1(s) {
  12771. return (
  12772. typeof s === 'function' ||
  12773. (Object.prototype.toString.call(s) === '[object Object]' &&
  12774. !isVNode(s))
  12775. )
  12776. }
  12777. var StudentInfo = defineComponent({
  12778. name: 'myStudent',
  12779. props: {
  12780. courseId: Number,
  12781. onSubmit: { type: Function, default: function _default(item) {} }
  12782. },
  12783. data: function data() {
  12784. return {
  12785. searchStatus: false,
  12786. openStatus: false,
  12787. subjectList: [],
  12788. list: [],
  12789. dataShow: true, // 判断是否有数据
  12790. loading: false,
  12791. finished: false,
  12792. params: {
  12793. userName: '',
  12794. subjectName: '全部声部',
  12795. subjectId: null,
  12796. page: 1,
  12797. rows: 20
  12798. },
  12799. interfaceIds: [],
  12800. userIdList: []
  12801. }
  12802. },
  12803. mounted: function mounted() {
  12804. var _this5 = this
  12805. return _asyncToGenerator(
  12806. /*#__PURE__*/ regeneratorRuntime.mark(function _callee3() {
  12807. var res
  12808. return regeneratorRuntime.wrap(
  12809. function _callee3$(_context4) {
  12810. while (1) {
  12811. switch ((_context4.prev = _context4.next)) {
  12812. case 0:
  12813. _context4.prev = 0
  12814. _context4.next = 3
  12815. return request.get(
  12816. '/api-teacher/subject/subjectSelect'
  12817. )
  12818. case 3:
  12819. res = _context4.sent
  12820. _this5.subjectList = res.data || []
  12821. _context4.next = 9
  12822. break
  12823. case 7:
  12824. _context4.prev = 7
  12825. _context4.t0 = _context4['catch'](0)
  12826. case 9:
  12827. _context4.next = 11
  12828. return _this5.getExistList()
  12829. case 11:
  12830. _context4.next = 13
  12831. return _this5.getList()
  12832. case 13:
  12833. case 'end':
  12834. return _context4.stop()
  12835. }
  12836. }
  12837. },
  12838. _callee3,
  12839. null,
  12840. [[0, 7]]
  12841. )
  12842. })
  12843. )()
  12844. },
  12845. methods: {
  12846. onSort: function onSort() {
  12847. this.params.page = 1
  12848. this.list = []
  12849. this.dataShow = true // 判断是否有数据
  12850. this.loading = false
  12851. this.finished = false
  12852. this.searchStatus = false
  12853. this.getList()
  12854. },
  12855. onSearch: function onSearch(val) {
  12856. this.params.userName = val
  12857. this.onSort()
  12858. },
  12859. getExistList: function getExistList() {
  12860. var _this6 = this
  12861. return _asyncToGenerator(
  12862. /*#__PURE__*/ regeneratorRuntime.mark(function _callee4() {
  12863. var res, rows, userIdList
  12864. return regeneratorRuntime.wrap(
  12865. function _callee4$(_context5) {
  12866. while (1) {
  12867. switch ((_context5.prev = _context5.next)) {
  12868. case 0:
  12869. _context5.prev = 0
  12870. _context5.next = 3
  12871. return request.post(
  12872. '/api-teacher/courseSchedule/selectStudent',
  12873. {
  12874. data: {
  12875. courseId: _this6.courseId,
  12876. page: 1,
  12877. rows: 20
  12878. }
  12879. }
  12880. )
  12881. case 3:
  12882. res = _context5.sent
  12883. rows = res.data.rows || []
  12884. userIdList = rows.map(function (item) {
  12885. return item.userId
  12886. })
  12887. _this6.interfaceIds =
  12888. _toConsumableArray(userIdList)
  12889. _this6.userIdList = _toConsumableArray(userIdList)
  12890. _context5.next = 12
  12891. break
  12892. case 10:
  12893. _context5.prev = 10
  12894. _context5.t0 = _context5['catch'](0)
  12895. case 12:
  12896. case 'end':
  12897. return _context5.stop()
  12898. }
  12899. }
  12900. },
  12901. _callee4,
  12902. null,
  12903. [[0, 10]]
  12904. )
  12905. })
  12906. )()
  12907. },
  12908. getList: function getList() {
  12909. var _this7 = this
  12910. return _asyncToGenerator(
  12911. /*#__PURE__*/ regeneratorRuntime.mark(function _callee5() {
  12912. var res, result, rows
  12913. return regeneratorRuntime.wrap(
  12914. function _callee5$(_context6) {
  12915. while (1) {
  12916. switch ((_context6.prev = _context6.next)) {
  12917. case 0:
  12918. _context6.prev = 0
  12919. _context6.next = 3
  12920. return request.post(
  12921. '/api-teacher/courseSchedule/selectStudent',
  12922. { data: _this7.params }
  12923. )
  12924. case 3:
  12925. res = _context6.sent
  12926. _this7.loading = false
  12927. result = res.data || {} // 处理重复请求数据
  12928. if (
  12929. !(_this7.list.length > 0 && result.pageNo === 1)
  12930. ) {
  12931. _context6.next = 8
  12932. break
  12933. }
  12934. return _context6.abrupt('return')
  12935. case 8:
  12936. rows = result.rows || []
  12937. rows.forEach(function (n) {
  12938. if (_this7.userIdList.includes(n.userId)) {
  12939. n.checked = true
  12940. } else {
  12941. n.checked = false
  12942. }
  12943. })
  12944. _this7.list = _this7.list.concat(rows || [])
  12945. _this7.finished =
  12946. result.pageNo >= result.totalPage
  12947. _this7.params.page = result.pageNo + 1
  12948. _this7.dataShow = _this7.list.length > 0
  12949. _context6.next = 20
  12950. break
  12951. case 16:
  12952. _context6.prev = 16
  12953. _context6.t0 = _context6['catch'](0)
  12954. _this7.dataShow = false
  12955. _this7.finished = true
  12956. case 20:
  12957. case 'end':
  12958. return _context6.stop()
  12959. }
  12960. }
  12961. },
  12962. _callee5,
  12963. null,
  12964. [[0, 16]]
  12965. )
  12966. })
  12967. )()
  12968. },
  12969. equar: function equar(a, b) {
  12970. // 判断数组的长度
  12971. if (a.length !== b.length) {
  12972. return false
  12973. } else {
  12974. // 循环遍历数组的值进行比较
  12975. for (var _i2 = 0; _i2 < a.length; _i2++) {
  12976. if (a[_i2] !== b[_i2]) {
  12977. return false
  12978. }
  12979. }
  12980. return true
  12981. }
  12982. },
  12983. nextSubmit: function nextSubmit() {
  12984. var _this8 = this
  12985. if (this.userIdList.length <= 0) {
  12986. return Toast('请至少选择一个学员')
  12987. }
  12988. if (this.equar(this.interfaceIds, this.userIdList)) {
  12989. return Toast('您未调整学员')
  12990. }
  12991. var addStudentIds = this.userIdList.filter(function (item) {
  12992. return !_this8.interfaceIds.includes(item) && item
  12993. })
  12994. var removeStudentIds = this.interfaceIds.filter(function (
  12995. item
  12996. ) {
  12997. return !_this8.userIdList.includes(item) && item
  12998. })
  12999. console.log(addStudentIds, removeStudentIds)
  13000. var addStudents = []
  13001. var removeStudents = []
  13002. this.list.forEach(function (item) {
  13003. if (addStudentIds.includes(item.userId)) {
  13004. addStudents.push(item)
  13005. }
  13006. if (removeStudentIds.includes(item.userId)) {
  13007. removeStudents.push(item)
  13008. }
  13009. })
  13010. console.log(addStudents, removeStudents)
  13011. this.onSubmit({
  13012. addStudents: addStudents,
  13013. removeStudents: removeStudents,
  13014. userIdList: this.userIdList
  13015. })
  13016. },
  13017. onCheckbox: function onCheckbox(item) {
  13018. if (!item.checked && this.userIdList.length >= 7) {
  13019. return Toast('学生已达上限')
  13020. }
  13021. item.checked = !item.checked
  13022. var isExist = this.userIdList.includes(item.userId)
  13023. if (item.checked) {
  13024. !isExist && this.userIdList.push(item.userId)
  13025. } else {
  13026. isExist &&
  13027. this.userIdList.splice(
  13028. this.userIdList.indexOf(item.userId),
  13029. 1
  13030. )
  13031. }
  13032. }
  13033. },
  13034. render: function render() {
  13035. var _this9 = this
  13036. var _slot
  13037. return createVNode(Fragment, null, [
  13038. createVNode(
  13039. ColSearch,
  13040. { placeholder: '请输入学员名称', onSearch: this.onSearch },
  13041. {
  13042. left: function left() {
  13043. return createVNode(
  13044. 'div',
  13045. {
  13046. class: styles$1.label,
  13047. onClick: function onClick() {
  13048. _this9.searchStatus = !_this9.searchStatus
  13049. _this9.openStatus = !_this9.openStatus
  13050. }
  13051. },
  13052. [
  13053. _this9.params.subjectName,
  13054. createVNode(
  13055. Icon,
  13056. {
  13057. classPrefix: 'iconfont',
  13058. name: 'down',
  13059. size: 12,
  13060. color: '#333'
  13061. },
  13062. null
  13063. )
  13064. ]
  13065. )
  13066. }
  13067. }
  13068. ),
  13069. createVNode('div', { class: styles$1.studentList }, [
  13070. this.dataShow
  13071. ? createVNode(
  13072. List,
  13073. {
  13074. loading: this.loading,
  13075. 'onUpdate:loading': function onUpdateLoading($event) {
  13076. return (_this9.loading = $event)
  13077. },
  13078. finished: this.finished,
  13079. finishedText: ' ',
  13080. class: ['mb12'],
  13081. immediateCheck: false,
  13082. onLoad: this.getList
  13083. },
  13084. _isSlot$1(
  13085. (_slot = this.list.map(function (item) {
  13086. return createVNode(
  13087. Student,
  13088. {
  13089. item: {
  13090. userName: item.userName,
  13091. subjectName: item.subjectName,
  13092. avatar: item.avatar
  13093. },
  13094. onClick: function onClick() {
  13095. _this9.onCheckbox(item)
  13096. }
  13097. },
  13098. {
  13099. default: function _default() {
  13100. return [
  13101. createVNode(
  13102. Checkbox,
  13103. {
  13104. modelValue: item.checked,
  13105. 'onUpdate:modelValue':
  13106. function onUpdateModelValue($event) {
  13107. return (item.checked = $event)
  13108. },
  13109. name: item.userId,
  13110. onClick: function onClick() {
  13111. _this9.onCheckbox(item)
  13112. }
  13113. },
  13114. null
  13115. )
  13116. ]
  13117. }
  13118. }
  13119. )
  13120. }))
  13121. )
  13122. ? _slot
  13123. : {
  13124. default: function _default() {
  13125. return [_slot]
  13126. }
  13127. }
  13128. )
  13129. : createVNode(
  13130. ColResult,
  13131. {
  13132. btnStatus: false,
  13133. classImgSize: 'SMALL',
  13134. tips: '暂无学员'
  13135. },
  13136. null
  13137. )
  13138. ]),
  13139. createVNode(
  13140. Popup,
  13141. {
  13142. show: this.searchStatus,
  13143. position: 'bottom',
  13144. round: true,
  13145. closeable: true,
  13146. 'safe-area-inset-bottom': true,
  13147. onClose: function onClose() {
  13148. return (_this9.searchStatus = false)
  13149. },
  13150. onClosed: function onClosed() {
  13151. return (_this9.openStatus = false)
  13152. }
  13153. },
  13154. {
  13155. default: function _default() {
  13156. return [
  13157. _this9.openStatus &&
  13158. createVNode(
  13159. OrganSearch,
  13160. {
  13161. subjectList: _this9.subjectList,
  13162. onSort: _this9.onSort,
  13163. isReset: true,
  13164. modelValue: _this9.params.subjectId,
  13165. 'onUpdate:modelValue':
  13166. function onUpdateModelValue($event) {
  13167. return (_this9.params.subjectId = $event)
  13168. },
  13169. subjectName: _this9.params.subjectName,
  13170. 'onUpdate:subjectName':
  13171. function onUpdateSubjectName($event) {
  13172. return (_this9.params.subjectName = $event)
  13173. }
  13174. },
  13175. null
  13176. )
  13177. ]
  13178. }
  13179. }
  13180. ),
  13181. createVNode('div', { class: styles$1.btnGroup }, [
  13182. createVNode(
  13183. Button,
  13184. {
  13185. type: 'primary',
  13186. round: true,
  13187. block: true,
  13188. onClick: this.nextSubmit
  13189. },
  13190. {
  13191. default: function _default() {
  13192. return [createTextVNode('\u4E0B\u4E00\u6B65')]
  13193. }
  13194. }
  13195. )
  13196. ])
  13197. ])
  13198. }
  13199. })
  13200. var confirmTitle = '_confirmTitle_yqlm2_1'
  13201. var timer = '_timer_yqlm2_8'
  13202. var addTitle = '_addTitle_yqlm2_11'
  13203. var calc = '_calc_yqlm2_12'
  13204. var studentList = '_studentList_yqlm2_26'
  13205. var btnGroup = '_btnGroup_yqlm2_30'
  13206. var styles = {
  13207. confirmTitle: confirmTitle,
  13208. timer: timer,
  13209. addTitle: addTitle,
  13210. calc: calc,
  13211. studentList: studentList,
  13212. btnGroup: btnGroup
  13213. }
  13214. var StudentConfirm = defineComponent({
  13215. name: 'studentConfirm',
  13216. props: {
  13217. courseInfo: { type: Object, default: {} },
  13218. studentObject: { type: Object, default: {} },
  13219. onSubmit: { type: Function, default: function _default(item) {} }
  13220. },
  13221. computed: {
  13222. timer: function timer() {
  13223. var item = this.courseInfo
  13224. return (
  13225. dayjs(item.startTime).format('YYYY/MM/DD HH:mm') +
  13226. ' ~ ' +
  13227. dayjs(item.endTime).format('HH:mm')
  13228. )
  13229. },
  13230. addStudents: function addStudents() {
  13231. var addStudents = this.studentObject.addStudents
  13232. return addStudents || []
  13233. },
  13234. removeStudents: function removeStudents() {
  13235. var removeStudents = this.studentObject.removeStudents
  13236. return removeStudents || []
  13237. },
  13238. calcTimer: function calcTimer() {
  13239. var _this$studentObject = this.studentObject,
  13240. addStudents = _this$studentObject.addStudents,
  13241. removeStudents = _this$studentObject.removeStudents
  13242. var _this$courseInfo = this.courseInfo,
  13243. singleCourseTime = _this$courseInfo.singleCourseTime,
  13244. studentCount = _this$courseInfo.studentCount
  13245. var suffix = addStudents.length - removeStudents.length
  13246. console.log(suffix, singleCourseTime, this.courseInfo)
  13247. var type = suffix >= 0 ? 'add' : 'remove' // n * (n -1) * 分钟数 * 课次数
  13248. // 总分钟数
  13249. var allMinutes =
  13250. (studentCount + 1) * studentCount * singleCourseTime //
  13251. var reTime = Math.abs(
  13252. (Math.abs(suffix + studentCount) + 1) *
  13253. Math.abs(suffix + studentCount) *
  13254. singleCourseTime
  13255. )
  13256. return { type: type, mins: Math.abs(allMinutes - reTime) }
  13257. }
  13258. },
  13259. render: function render() {
  13260. var _this10 = this
  13261. return createVNode('div', { class: styles.studentConfirm }, [
  13262. createVNode(
  13263. 'div',
  13264. { class: [styles.confirmTitle, 'van-hairline--bottom'] },
  13265. [
  13266. createVNode('p', null, [
  13267. createTextVNode('\u60A8\u5C06\u4E3A'),
  13268. this.courseInfo.groupName
  13269. ]),
  13270. createVNode('p', { class: styles.timer }, [this.timer])
  13271. ]
  13272. ),
  13273. createVNode('div', { class: styles.studentList }, [
  13274. this.addStudents.length > 0 &&
  13275. createVNode(Fragment, null, [
  13276. createVNode('p', { class: styles.addTitle }, [
  13277. createTextVNode('\u6DFB\u52A0\u5B66\u5458 '),
  13278. createVNode('span', null, [this.addStudents.length]),
  13279. createTextVNode(' \u540D')
  13280. ]),
  13281. this.addStudents.map(function (item) {
  13282. return createVNode(
  13283. Student,
  13284. { border: false, item: item },
  13285. null
  13286. )
  13287. })
  13288. ]),
  13289. this.removeStudents.length > 0 &&
  13290. createVNode(Fragment, null, [
  13291. createVNode('p', { class: styles.addTitle }, [
  13292. createTextVNode('\u79FB\u9664\u5B66\u5458 '),
  13293. createVNode('span', null, [this.removeStudents.length]),
  13294. createTextVNode(' \u540D')
  13295. ]),
  13296. this.removeStudents.map(function (item) {
  13297. return createVNode(
  13298. Student,
  13299. { border: false, item: item },
  13300. null
  13301. )
  13302. })
  13303. ])
  13304. ]),
  13305. createVNode('p', { class: styles.calc }, [
  13306. createTextVNode('\u8C03\u6574\u540E\u5C06'),
  13307. this.calcTimer.type === 'remove' ? '释放' : '冻结',
  13308. ' ',
  13309. createVNode('span', null, [this.calcTimer.mins]),
  13310. createTextVNode(' \u5206\u949F')
  13311. ]),
  13312. createVNode('div', { class: styles.btnGroup }, [
  13313. createVNode(
  13314. Button,
  13315. {
  13316. type: 'primary',
  13317. round: true,
  13318. block: true,
  13319. onClick: function onClick() {
  13320. var userIdList = _this10.studentObject.userIdList
  13321. _this10.onSubmit(userIdList)
  13322. }
  13323. },
  13324. {
  13325. default: function _default() {
  13326. return [createTextVNode('\u786E\u8BA4\u8C03\u6574')]
  13327. }
  13328. }
  13329. )
  13330. ])
  13331. ])
  13332. }
  13333. })
  13334. function _isSlot(s) {
  13335. return (
  13336. typeof s === 'function' ||
  13337. (Object.prototype.toString.call(s) === '[object Object]' &&
  13338. !isVNode(s))
  13339. )
  13340. }
  13341. var getAssetsHomeFile = exports(
  13342. 'getAssetsHomeFile',
  13343. function (fileName) {
  13344. var path = './images/'.concat(fileName)
  13345. var modules = {
  13346. './images/icon_arrow.png': __glob_11_0,
  13347. './images/icon_class_plan.png': __glob_11_1,
  13348. './images/icon_education.png': __glob_11_2,
  13349. './images/icon_education_active.png': __glob_11_3,
  13350. './images/icon_freeze_timer.png': __glob_11_4,
  13351. './images/icon_invite_student.png': __glob_11_5,
  13352. './images/icon_last_timer.png': __glob_11_6,
  13353. './images/icon_message.png': __glob_11_7,
  13354. './images/icon_music_account.png': __glob_11_8,
  13355. './images/icon_name_active.png': __glob_11_9,
  13356. './images/icon_num.png': __glob_11_10,
  13357. './images/icon_timers.png': __glob_11_11,
  13358. './images/icon_tips.png': __glob_11_12,
  13359. './images/logo.png': __glob_11_13,
  13360. './images/paino_bg.png': __glob_11_14,
  13361. './images/room_bg.png': __glob_11_15,
  13362. './images/select_timers.png': __glob_11_16,
  13363. './images/select_timers_bg.png': __glob_11_17,
  13364. './images/share_bg.png': __glob_11_18,
  13365. './images/title_timers.png': __glob_11_19
  13366. }
  13367. return modules[path].default
  13368. }
  13369. )
  13370. var index = exports(
  13371. 'default',
  13372. defineComponent({
  13373. name: 'PianoRoom',
  13374. data: function data() {
  13375. return {
  13376. shareStatus: false,
  13377. teacherId: 0,
  13378. typeStatus: false,
  13379. courseTxt: '所有课程',
  13380. actions: [
  13381. { name: '所有课程' },
  13382. { name: '未开始', status: 'NOT_START' },
  13383. { name: '进行中', status: 'ING' },
  13384. { name: '已完成', status: 'COMPLETE' },
  13385. { name: '已取消', status: 'CANCEL' }
  13386. ],
  13387. remain: { frozenTime: 0, remainTime: 0, studentCount: 0 },
  13388. list: [],
  13389. dataShow: true, // 判断是否有数据
  13390. loading: false,
  13391. finished: false,
  13392. monthTxt: dayjs().format('YYYY年MM月'),
  13393. month: new Date(),
  13394. params: {
  13395. status: '',
  13396. month: dayjs().format('YYYY-MM'),
  13397. page: 1,
  13398. rows: 20
  13399. },
  13400. timeShow: false,
  13401. timeUpdateStatus: false,
  13402. timeUpdateInfo: {},
  13403. timeUpdateTimer: new Date(),
  13404. studentStatus: false,
  13405. studentConfirm: false,
  13406. studentChangeObject: {},
  13407. background: 'transparent',
  13408. setLoading: false,
  13409. startClassTime: '',
  13410. endClassTime: '',
  13411. minDate: new Date()
  13412. }
  13413. },
  13414. mounted: function mounted() {
  13415. var _this11 = this
  13416. return _asyncToGenerator(
  13417. /*#__PURE__*/ regeneratorRuntime.mark(function _callee6() {
  13418. return regeneratorRuntime.wrap(function _callee6$(
  13419. _context7
  13420. ) {
  13421. while (1) {
  13422. switch ((_context7.prev = _context7.next)) {
  13423. case 0:
  13424. _context7.next = 2
  13425. return _this11._init()
  13426. case 2:
  13427. _context7.next = 4
  13428. return _this11.getBaseData()
  13429. case 4:
  13430. _context7.next = 6
  13431. return _this11.getList()
  13432. case 6:
  13433. useEventListener(
  13434. document,
  13435. 'scroll',
  13436. function (evt) {
  13437. var _useWindowScroll = useWindowScroll(),
  13438. y = _useWindowScroll.y
  13439. if (y.value > 45) {
  13440. _this11.background = '#fff'
  13441. } else {
  13442. _this11.background = 'transparent'
  13443. }
  13444. }
  13445. )
  13446. case 7:
  13447. case 'end':
  13448. return _context7.stop()
  13449. }
  13450. }
  13451. },
  13452. _callee6)
  13453. })
  13454. )()
  13455. },
  13456. methods: {
  13457. _init: function _init() {
  13458. var _this12 = this
  13459. return _asyncToGenerator(
  13460. /*#__PURE__*/ regeneratorRuntime.mark(function _callee7() {
  13461. var res,
  13462. _ref2,
  13463. frozenTime,
  13464. remainTime,
  13465. _studentCount,
  13466. teacherId
  13467. return regeneratorRuntime.wrap(
  13468. function _callee7$(_context8) {
  13469. while (1) {
  13470. switch ((_context8.prev = _context8.next)) {
  13471. case 0:
  13472. _context8.prev = 0
  13473. _context8.next = 3
  13474. return request.get(
  13475. '/api-teacher/courseSchedule/selectRemainTime'
  13476. )
  13477. case 3:
  13478. res = _context8.sent // console.log(res)
  13479. ;(_ref2 = res.data || {}),
  13480. (frozenTime = _ref2.frozenTime),
  13481. (remainTime = _ref2.remainTime),
  13482. (_studentCount = _ref2.studentCount),
  13483. (teacherId = _ref2.teacherId)
  13484. _this12.remain = {
  13485. frozenTime: frozenTime || 0,
  13486. remainTime: remainTime || 0,
  13487. studentCount: _studentCount || 0
  13488. }
  13489. _this12.teacherId = teacherId
  13490. _context8.next = 11
  13491. break
  13492. case 9:
  13493. _context8.prev = 9
  13494. _context8.t0 = _context8['catch'](0)
  13495. case 11:
  13496. case 'end':
  13497. return _context8.stop()
  13498. }
  13499. }
  13500. },
  13501. _callee7,
  13502. null,
  13503. [[0, 9]]
  13504. )
  13505. })
  13506. )()
  13507. },
  13508. getBaseData: function getBaseData() {
  13509. var _this13 = this
  13510. return _asyncToGenerator(
  13511. /*#__PURE__*/ regeneratorRuntime.mark(function _callee8() {
  13512. var result, tempResult, _i3, len
  13513. return regeneratorRuntime.wrap(
  13514. function _callee8$(_context9) {
  13515. while (1) {
  13516. switch ((_context9.prev = _context9.next)) {
  13517. case 0:
  13518. _context9.prev = 0
  13519. _context9.next = 3
  13520. return request.get(
  13521. '/api-teacher/sysConfig/queryByParamNameList',
  13522. {
  13523. params: {
  13524. paramNames:
  13525. 'course_start_setting,course_end_setting'
  13526. }
  13527. }
  13528. )
  13529. case 3:
  13530. result = _context9.sent
  13531. console.log(result)
  13532. tempResult = result.data
  13533. for (
  13534. _i3 = 0, len = tempResult.length;
  13535. _i3 < len;
  13536. _i3++
  13537. ) {
  13538. if (
  13539. tempResult[_i3].paramName ===
  13540. 'course_start_setting'
  13541. ) {
  13542. _this13.startClassTime = tempResult[_i3]
  13543. .paramValue
  13544. ? tempResult[_i3].paramValue.split(':')
  13545. : []
  13546. }
  13547. if (
  13548. tempResult[_i3].paramName ===
  13549. 'course_end_setting'
  13550. ) {
  13551. _this13.endClassTime = tempResult[_i3]
  13552. .paramValue
  13553. ? tempResult[_i3].paramValue.split(':')
  13554. : []
  13555. }
  13556. }
  13557. console.log(
  13558. _this13.startClassTime,
  13559. _this13.endClassTime
  13560. )
  13561. _context9.next = 12
  13562. break
  13563. case 10:
  13564. _context9.prev = 10
  13565. _context9.t0 = _context9['catch'](0)
  13566. case 12:
  13567. case 'end':
  13568. return _context9.stop()
  13569. }
  13570. }
  13571. },
  13572. _callee8,
  13573. null,
  13574. [[0, 10]]
  13575. )
  13576. })
  13577. )()
  13578. },
  13579. onSearch: function onSearch() {
  13580. this.dataShow = true
  13581. this.loading = false
  13582. this.finished = false
  13583. this.list = []
  13584. this.params.page = 1
  13585. this.getList()
  13586. },
  13587. onSelect: function onSelect(item) {
  13588. this.courseTxt = item.name
  13589. this.params.status = item.status || ''
  13590. this._init()
  13591. this.onSearch()
  13592. },
  13593. getList: function getList() {
  13594. var _this14 = this
  13595. return _asyncToGenerator(
  13596. /*#__PURE__*/ regeneratorRuntime.mark(function _callee9() {
  13597. var res, result
  13598. return regeneratorRuntime.wrap(
  13599. function _callee9$(_context10) {
  13600. while (1) {
  13601. switch ((_context10.prev = _context10.next)) {
  13602. case 0:
  13603. _context10.prev = 0
  13604. if (!_this14.setLoading) {
  13605. _context10.next = 3
  13606. break
  13607. }
  13608. return _context10.abrupt('return')
  13609. case 3:
  13610. _this14.setLoading = true
  13611. _context10.next = 6
  13612. return request.post(
  13613. '/api-teacher/courseSchedule/selectCourseList',
  13614. { data: _this14.params }
  13615. )
  13616. case 6:
  13617. res = _context10.sent
  13618. _this14.setLoading = false
  13619. _this14.loading = false
  13620. result = res.data || {} // 处理重复请求数据
  13621. if (
  13622. !(
  13623. _this14.list.length > 0 &&
  13624. result.pageNo === 1
  13625. )
  13626. ) {
  13627. _context10.next = 12
  13628. break
  13629. }
  13630. return _context10.abrupt('return')
  13631. case 12:
  13632. _this14.list = _this14.list.concat(
  13633. result.rows || []
  13634. )
  13635. _this14.finished =
  13636. result.pageNo >= result.totalPage
  13637. _this14.params.page = result.pageNo + 1
  13638. _this14.dataShow = _this14.list.length > 0
  13639. _context10.next = 22
  13640. break
  13641. case 18:
  13642. _context10.prev = 18
  13643. _context10.t0 = _context10['catch'](0)
  13644. _this14.dataShow = false
  13645. _this14.finished = true
  13646. case 22:
  13647. case 'end':
  13648. return _context10.stop()
  13649. }
  13650. }
  13651. },
  13652. _callee9,
  13653. null,
  13654. [[0, 18]]
  13655. )
  13656. })
  13657. )()
  13658. },
  13659. onCourseDelete: function onCourseDelete(item) {
  13660. var _this15 = this
  13661. return _asyncToGenerator(
  13662. /*#__PURE__*/ regeneratorRuntime.mark(function _callee11() {
  13663. return regeneratorRuntime.wrap(function _callee11$(
  13664. _context12
  13665. ) {
  13666. while (1) {
  13667. switch ((_context12.prev = _context12.next)) {
  13668. case 0:
  13669. try {
  13670. Dialog.confirm({
  13671. title: '提示',
  13672. message: '确定删除该课程吗?',
  13673. confirmButtonColor: 'var(--van-primary)'
  13674. }).then(
  13675. /*#__PURE__*/ _asyncToGenerator(
  13676. /*#__PURE__*/ regeneratorRuntime.mark(
  13677. function _callee10() {
  13678. return regeneratorRuntime.wrap(
  13679. function _callee10$(_context11) {
  13680. while (1) {
  13681. switch (
  13682. (_context11.prev =
  13683. _context11.next)
  13684. ) {
  13685. case 0:
  13686. _context11.next = 2
  13687. return request.post(
  13688. '/api-teacher/courseSchedule/deleteCourse',
  13689. {
  13690. data: {
  13691. courseId: item.courseId
  13692. }
  13693. }
  13694. )
  13695. case 2:
  13696. console.log('删除成功')
  13697. Toast('课程删除成功')
  13698. _this15._init()
  13699. _this15.onSearch()
  13700. case 6:
  13701. case 'end':
  13702. return _context11.stop()
  13703. }
  13704. }
  13705. },
  13706. _callee10
  13707. )
  13708. }
  13709. )
  13710. )
  13711. )
  13712. } catch (_unused7) {}
  13713. case 1:
  13714. case 'end':
  13715. return _context12.stop()
  13716. }
  13717. }
  13718. },
  13719. _callee11)
  13720. })
  13721. )()
  13722. },
  13723. onTimeUpdateChange: function onTimeUpdateChange(item) {
  13724. var _this16 = this
  13725. try {
  13726. Dialog.confirm({
  13727. title: '提示',
  13728. message: '确定调整该课程吗?',
  13729. confirmButtonColor: 'var(--van-primary)'
  13730. }).then(
  13731. /*#__PURE__*/ _asyncToGenerator(
  13732. /*#__PURE__*/ regeneratorRuntime.mark(
  13733. function _callee12() {
  13734. var _this16$timeUpdateInf,
  13735. courseId,
  13736. singleCourseTime,
  13737. startTime,
  13738. endTime
  13739. return regeneratorRuntime.wrap(function _callee12$(
  13740. _context13
  13741. ) {
  13742. while (1) {
  13743. switch ((_context13.prev = _context13.next)) {
  13744. case 0:
  13745. ;(_this16$timeUpdateInf =
  13746. _this16.timeUpdateInfo),
  13747. (courseId =
  13748. _this16$timeUpdateInf.courseId),
  13749. (singleCourseTime =
  13750. _this16$timeUpdateInf.singleCourseTime)
  13751. startTime = dayjs(item).format(
  13752. 'YYYY-MM-DD HH:mm:ss'
  13753. )
  13754. endTime = dayjs(item)
  13755. .add(singleCourseTime, 'minute')
  13756. .format('YYYY-MM-DD HH:mm:ss')
  13757. _context13.next = 5
  13758. return request.post(
  13759. '/api-teacher/courseSchedule/updateCourseTime',
  13760. {
  13761. data: {
  13762. courseId: courseId,
  13763. startTime: startTime,
  13764. endTime: endTime
  13765. }
  13766. }
  13767. )
  13768. case 5:
  13769. _this16.timeUpdateStatus = false
  13770. Toast('课程调整成功')
  13771. _this16.onSearch()
  13772. case 8:
  13773. case 'end':
  13774. return _context13.stop()
  13775. }
  13776. }
  13777. },
  13778. _callee12)
  13779. }
  13780. )
  13781. )
  13782. )
  13783. } catch (_unused8) {}
  13784. },
  13785. onStudentChange: function onStudentChange(item) {
  13786. var _this17 = this
  13787. return _asyncToGenerator(
  13788. /*#__PURE__*/ regeneratorRuntime.mark(function _callee14() {
  13789. var courseId
  13790. return regeneratorRuntime.wrap(
  13791. function _callee14$(_context15) {
  13792. while (1) {
  13793. switch ((_context15.prev = _context15.next)) {
  13794. case 0:
  13795. _context15.prev = 0
  13796. courseId = _this17.timeUpdateInfo.courseId
  13797. _context15.next = 4
  13798. return request.post(
  13799. '/api-teacher/courseSchedule/updateCourseStudent',
  13800. {
  13801. data: {
  13802. studentIds: item,
  13803. courseId: courseId
  13804. }
  13805. }
  13806. )
  13807. case 4:
  13808. _this17.studentConfirm = false
  13809. Toast('学生调整成功')
  13810. setTimeout(
  13811. /*#__PURE__*/ _asyncToGenerator(
  13812. /*#__PURE__*/ regeneratorRuntime.mark(
  13813. function _callee13() {
  13814. return regeneratorRuntime.wrap(
  13815. function _callee13$(_context14) {
  13816. while (1) {
  13817. switch (
  13818. (_context14.prev =
  13819. _context14.next)
  13820. ) {
  13821. case 0:
  13822. _context14.next = 2
  13823. return _this17._init()
  13824. case 2:
  13825. _this17.onSearch()
  13826. case 3:
  13827. case 'end':
  13828. return _context14.stop()
  13829. }
  13830. }
  13831. },
  13832. _callee13
  13833. )
  13834. }
  13835. )
  13836. ),
  13837. 1000
  13838. )
  13839. _context15.next = 11
  13840. break
  13841. case 9:
  13842. _context15.prev = 9
  13843. _context15.t0 = _context15['catch'](0)
  13844. case 11:
  13845. case 'end':
  13846. return _context15.stop()
  13847. }
  13848. }
  13849. },
  13850. _callee14,
  13851. null,
  13852. [[0, 9]]
  13853. )
  13854. })
  13855. )()
  13856. },
  13857. onTeacherAuth: function onTeacherAuth(callBack) {
  13858. // 是否达人认证
  13859. // 老师入驻状态 0、未申请 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过,可用值:UNPAALY,DOING,PASS,UNPASS
  13860. var data = state.user.data
  13861. if (data.entryStatus === 'PASS') {
  13862. callBack && callBack()
  13863. } else if (data.entryStatus === 'DOING') {
  13864. Toast('认证审核中,请稍后再试')
  13865. } else {
  13866. this.$router.push('/teacherCert')
  13867. }
  13868. },
  13869. filterDate: function filterDate(type, options) {
  13870. var _this18 = this
  13871. var value = 0
  13872. if (this.$refs.datetime) {
  13873. var _picker$getValues$
  13874. var picker = this.$refs.datetime.getPicker()
  13875. value =
  13876. ((_picker$getValues$ = picker.getValues()[3]) === null ||
  13877. _picker$getValues$ === void 0
  13878. ? void 0
  13879. : _picker$getValues$.split('时')[0]) || 0
  13880. }
  13881. if (type == 'hour') {
  13882. return options.filter(function (option) {
  13883. return (
  13884. Number(_this18.startClassTime[0]) <= Number(option) &&
  13885. Number(_this18.endClassTime[0]) >= Number(option)
  13886. )
  13887. })
  13888. }
  13889. if (type === 'minute') {
  13890. return options.filter(function (option) {
  13891. return (
  13892. (Number(_this18.startClassTime[1]) <= Number(option) &&
  13893. Number(_this18.endClassTime[1]) >= Number(option)) ||
  13894. value != Number(_this18.endClassTime[0])
  13895. )
  13896. })
  13897. }
  13898. return options
  13899. }
  13900. },
  13901. render: function render() {
  13902. var _this19 = this
  13903. var _slot
  13904. return createVNode(Fragment, null, [
  13905. createVNode('div', { class: styles$3.roomHeader }, [
  13906. createVNode(
  13907. ColHeader,
  13908. {
  13909. background: this.background,
  13910. rightText: '课程记录',
  13911. onClickRight: function onClickRight() {
  13912. _this19.$router.push('/courseRecord')
  13913. },
  13914. border: false
  13915. },
  13916. null
  13917. ),
  13918. createVNode(
  13919. Row,
  13920. { class: styles$3.countTimer },
  13921. {
  13922. default: function _default() {
  13923. return [
  13924. createVNode(
  13925. Col,
  13926. { span: 9 },
  13927. {
  13928. default: function _default() {
  13929. return [
  13930. createVNode(
  13931. 'p',
  13932. { class: styles$3.timer },
  13933. [
  13934. _this19.remain.remainTime,
  13935. createVNode('span', null, [
  13936. createTextVNode('\u5206\u949F')
  13937. ])
  13938. ]
  13939. ),
  13940. createVNode(
  13941. 'p',
  13942. { class: styles$3.title },
  13943. [
  13944. createVNode(
  13945. 'img',
  13946. {
  13947. src: getAssetsHomeFile(
  13948. 'icon_last_timer.png'
  13949. )
  13950. },
  13951. null
  13952. ),
  13953. createVNode('span', null, [
  13954. createTextVNode(
  13955. '\u7434\u623F\u5269\u4F59\u65F6\u957F'
  13956. )
  13957. ])
  13958. ]
  13959. )
  13960. ]
  13961. }
  13962. }
  13963. ),
  13964. createVNode(
  13965. Col,
  13966. { span: 9 },
  13967. {
  13968. default: function _default() {
  13969. return [
  13970. createVNode(
  13971. 'p',
  13972. { class: styles$3.timer },
  13973. [
  13974. _this19.remain.frozenTime,
  13975. createVNode('span', null, [
  13976. createTextVNode('\u5206\u949F')
  13977. ])
  13978. ]
  13979. ),
  13980. createVNode(
  13981. 'p',
  13982. { class: styles$3.title },
  13983. [
  13984. createVNode(
  13985. 'img',
  13986. {
  13987. src: getAssetsHomeFile(
  13988. 'icon_freeze_timer.png'
  13989. )
  13990. },
  13991. null
  13992. ),
  13993. createVNode('span', null, [
  13994. createTextVNode(
  13995. '\u51BB\u7ED3\u65F6\u957F'
  13996. )
  13997. ])
  13998. ]
  13999. )
  14000. ]
  14001. }
  14002. }
  14003. ),
  14004. createVNode(
  14005. Col,
  14006. { span: 6 },
  14007. {
  14008. default: function _default() {
  14009. return [
  14010. createVNode(
  14011. Button,
  14012. {
  14013. type: 'primary',
  14014. round: true,
  14015. size: 'small',
  14016. class: styles$3.chargeTimer,
  14017. onClick: function onClick() {
  14018. _this19.onTeacherAuth(function () {
  14019. _this19.$router.push({
  14020. path: '/accountRechargeTimer'
  14021. })
  14022. })
  14023. }
  14024. },
  14025. {
  14026. default: function _default() {
  14027. return [
  14028. createTextVNode(
  14029. '\u65F6\u957F\u5145\u503C'
  14030. ),
  14031. createVNode(
  14032. 'img',
  14033. {
  14034. src: getAssetsHomeFile(
  14035. 'icon_arrow.png'
  14036. )
  14037. },
  14038. null
  14039. )
  14040. ]
  14041. }
  14042. }
  14043. )
  14044. ]
  14045. }
  14046. }
  14047. )
  14048. ]
  14049. }
  14050. }
  14051. ),
  14052. createVNode(
  14053. CellGroup,
  14054. { class: styles$3.studentList, border: false },
  14055. {
  14056. default: function _default() {
  14057. return [
  14058. createVNode(
  14059. Cell,
  14060. {
  14061. title: '\u6211\u7684\u5B66\u5458 '.concat(
  14062. _this19.remain.studentCount,
  14063. ' \u4EBA'
  14064. ),
  14065. titleClass: styles$3.studentCount,
  14066. isLink: true,
  14067. to: '/myStudent',
  14068. border: false
  14069. },
  14070. null
  14071. ),
  14072. createVNode(
  14073. Cell,
  14074. { valueClass: styles$3.btnGroupInvite },
  14075. {
  14076. default: function _default() {
  14077. return [
  14078. createVNode(
  14079. Button,
  14080. {
  14081. color: '#E0F7F3',
  14082. round: true,
  14083. block: true,
  14084. onClick: function onClick() {
  14085. _this19.onTeacherAuth(function () {
  14086. _this19.shareStatus = true
  14087. })
  14088. }
  14089. },
  14090. {
  14091. default: function _default() {
  14092. return [
  14093. createVNode(
  14094. 'img',
  14095. {
  14096. src: getAssetsHomeFile(
  14097. 'icon_invite_student.png'
  14098. )
  14099. },
  14100. null
  14101. ),
  14102. createTextVNode(
  14103. '\u9080\u8BF7\u5B66\u5458'
  14104. )
  14105. ]
  14106. }
  14107. }
  14108. ),
  14109. createVNode(
  14110. Button,
  14111. {
  14112. color: '#E0F7F3',
  14113. round: true,
  14114. block: true,
  14115. onClick: function onClick() {
  14116. _this19.onTeacherAuth(function () {
  14117. _this19.$router.push(
  14118. '/classArrangement'
  14119. )
  14120. })
  14121. }
  14122. },
  14123. {
  14124. default: function _default() {
  14125. return [
  14126. createVNode(
  14127. 'img',
  14128. {
  14129. src: getAssetsHomeFile(
  14130. 'icon_class_plan.png'
  14131. )
  14132. },
  14133. null
  14134. ),
  14135. createTextVNode('\u6392\u8BFE')
  14136. ]
  14137. }
  14138. }
  14139. )
  14140. ]
  14141. }
  14142. }
  14143. )
  14144. ]
  14145. }
  14146. }
  14147. )
  14148. ]),
  14149. createVNode('div', { class: styles$3.searchList }, [
  14150. createVNode(
  14151. 'div',
  14152. {
  14153. class: styles$3.dataItem,
  14154. onClick: function onClick() {
  14155. _this19.timeShow = true
  14156. }
  14157. },
  14158. [
  14159. this.monthTxt,
  14160. createVNode(
  14161. Icon,
  14162. {
  14163. classPrefix: 'iconfont',
  14164. name: 'down',
  14165. size: 8,
  14166. style: { marginLeft: '4px' },
  14167. color: '#CCCCCC'
  14168. },
  14169. null
  14170. )
  14171. ]
  14172. ),
  14173. createVNode(
  14174. 'div',
  14175. {
  14176. class: styles$3.dataItem,
  14177. onClick: function onClick() {
  14178. _this19.typeStatus = true
  14179. }
  14180. },
  14181. [
  14182. this.courseTxt,
  14183. createVNode(
  14184. Icon,
  14185. {
  14186. classPrefix: 'iconfont',
  14187. name: 'down',
  14188. size: 8,
  14189. style: { marginLeft: '4px' },
  14190. color: '#CCCCCC'
  14191. },
  14192. null
  14193. )
  14194. ]
  14195. )
  14196. ]),
  14197. this.dataShow
  14198. ? createVNode(
  14199. List,
  14200. {
  14201. loading: this.loading,
  14202. 'onUpdate:loading': function onUpdateLoading($event) {
  14203. return (_this19.loading = $event)
  14204. },
  14205. finished: this.finished,
  14206. finishedText: ' ',
  14207. class: [styles$3.liveList, 'mb12'],
  14208. immediateCheck: false,
  14209. onLoad: this.getList
  14210. },
  14211. _isSlot(
  14212. (_slot = this.list.map(function (item) {
  14213. return createVNode(
  14214. Course,
  14215. {
  14216. item: item,
  14217. operation:
  14218. item.status === 'NOT_START' ? true : false,
  14219. onCourseDelete: _this19.onCourseDelete,
  14220. onStudentAdjust: function onStudentAdjust(
  14221. item
  14222. ) {
  14223. console.log(item)
  14224. _this19.timeUpdateInfo = item
  14225. _this19.studentStatus = true
  14226. },
  14227. onTimeAdjust: function onTimeAdjust(item) {
  14228. _this19.timeUpdateInfo = item
  14229. _this19.timeUpdateTimer = dayjs(
  14230. item.startTime
  14231. ).toDate()
  14232. _this19.timeUpdateStatus = true
  14233. }
  14234. },
  14235. null
  14236. )
  14237. }))
  14238. )
  14239. ? _slot
  14240. : {
  14241. default: function _default() {
  14242. return [_slot]
  14243. }
  14244. }
  14245. )
  14246. : createVNode(
  14247. ColResult,
  14248. {
  14249. btnStatus: false,
  14250. classImgSize: 'SMALL',
  14251. tips: '暂无课程'
  14252. },
  14253. null
  14254. ),
  14255. createVNode(
  14256. Popup,
  14257. {
  14258. position: 'bottom',
  14259. show: this.timeShow,
  14260. 'onUpdate:show': function onUpdateShow($event) {
  14261. return (_this19.timeShow = $event)
  14262. },
  14263. round: true
  14264. },
  14265. {
  14266. default: function _default() {
  14267. return [
  14268. createVNode('div', { class: styles$3.picker }, [
  14269. createVNode(
  14270. DatetimePicker,
  14271. {
  14272. modelValue: _this19.month,
  14273. 'onUpdate:modelValue':
  14274. function onUpdateModelValue($event) {
  14275. return (_this19.month = $event)
  14276. },
  14277. type: 'year-month',
  14278. formatter: formatterDate,
  14279. onConfirm: function onConfirm(item) {
  14280. _this19.monthTxt =
  14281. dayjs(item).format('YYYY年MM月')
  14282. _this19.params.month =
  14283. dayjs(item).format('YYYY-MM')
  14284. _this19.timeShow = false
  14285. _this19.onSearch()
  14286. },
  14287. onCancel: function onCancel() {
  14288. return (_this19.timeShow = false)
  14289. }
  14290. },
  14291. null
  14292. )
  14293. ])
  14294. ]
  14295. }
  14296. }
  14297. ),
  14298. createVNode(
  14299. Popup,
  14300. {
  14301. position: 'bottom',
  14302. show: this.timeUpdateStatus,
  14303. 'onUpdate:show': function onUpdateShow($event) {
  14304. return (_this19.timeUpdateStatus = $event)
  14305. },
  14306. round: true
  14307. },
  14308. {
  14309. default: function _default() {
  14310. return [
  14311. createVNode('div', { class: styles$3.picker }, [
  14312. createVNode(
  14313. DatetimePicker,
  14314. {
  14315. modelValue: _this19.timeUpdateTimer,
  14316. 'onUpdate:modelValue':
  14317. function onUpdateModelValue($event) {
  14318. return (_this19.timeUpdateTimer = $event)
  14319. },
  14320. type: 'datetime',
  14321. minDate: _this19.minDate,
  14322. formatter: formatterDate,
  14323. filter: _this19.filterDate,
  14324. ref: 'datetime',
  14325. onConfirm: function onConfirm(item) {
  14326. _this19.onTimeUpdateChange(item)
  14327. },
  14328. onCancel: function onCancel() {
  14329. return (_this19.timeUpdateStatus = false)
  14330. }
  14331. },
  14332. null
  14333. )
  14334. ])
  14335. ]
  14336. }
  14337. }
  14338. ),
  14339. createVNode(
  14340. ActionSheet,
  14341. {
  14342. show: this.typeStatus,
  14343. 'onUpdate:show': function onUpdateShow($event) {
  14344. return (_this19.typeStatus = $event)
  14345. },
  14346. actions: this.actions,
  14347. closeOnClickAction: true,
  14348. cancelText: '取消',
  14349. onSelect: this.onSelect,
  14350. onCancel: function onCancel() {
  14351. _this19.typeStatus = false
  14352. }
  14353. },
  14354. null
  14355. ),
  14356. createVNode(
  14357. Popup,
  14358. {
  14359. show: this.shareStatus,
  14360. 'onUpdate:show': function onUpdateShow($event) {
  14361. return (_this19.shareStatus = $event)
  14362. },
  14363. round: true
  14364. },
  14365. {
  14366. default: function _default() {
  14367. return [
  14368. createVNode(
  14369. Share,
  14370. { teacherId: _this19.teacherId },
  14371. null
  14372. )
  14373. ]
  14374. }
  14375. }
  14376. ),
  14377. createVNode(
  14378. Popup,
  14379. {
  14380. show: this.studentStatus,
  14381. 'onUpdate:show': function onUpdateShow($event) {
  14382. return (_this19.studentStatus = $event)
  14383. },
  14384. position: 'bottom',
  14385. round: true
  14386. },
  14387. {
  14388. default: function _default() {
  14389. return [
  14390. _this19.studentStatus &&
  14391. createVNode(
  14392. StudentInfo,
  14393. {
  14394. courseId: _this19.timeUpdateInfo.courseId,
  14395. onSubmit: function onSubmit(item) {
  14396. _this19.studentChangeObject = item
  14397. _this19.studentStatus = false
  14398. _this19.studentConfirm = true
  14399. }
  14400. },
  14401. null
  14402. )
  14403. ]
  14404. }
  14405. }
  14406. ),
  14407. createVNode(
  14408. Popup,
  14409. {
  14410. show: this.studentConfirm,
  14411. 'onUpdate:show': function onUpdateShow($event) {
  14412. return (_this19.studentConfirm = $event)
  14413. },
  14414. position: 'bottom',
  14415. round: true,
  14416. closeable: true
  14417. },
  14418. {
  14419. default: function _default() {
  14420. return [
  14421. createVNode(
  14422. StudentConfirm,
  14423. {
  14424. courseInfo: _this19.timeUpdateInfo,
  14425. studentObject: _this19.studentChangeObject,
  14426. onSubmit: (function () {
  14427. var _onSubmit = _asyncToGenerator(
  14428. /*#__PURE__*/ regeneratorRuntime.mark(
  14429. function _callee15(item) {
  14430. return regeneratorRuntime.wrap(
  14431. function _callee15$(_context16) {
  14432. while (1) {
  14433. switch (
  14434. (_context16.prev =
  14435. _context16.next)
  14436. ) {
  14437. case 0:
  14438. _context16.next = 2
  14439. return _this19.onStudentChange(
  14440. item
  14441. )
  14442. case 2:
  14443. case 'end':
  14444. return _context16.stop()
  14445. }
  14446. }
  14447. },
  14448. _callee15
  14449. )
  14450. }
  14451. )
  14452. )
  14453. function onSubmit(_x) {
  14454. return _onSubmit.apply(this, arguments)
  14455. }
  14456. return onSubmit
  14457. })()
  14458. },
  14459. null
  14460. )
  14461. ]
  14462. }
  14463. }
  14464. )
  14465. ])
  14466. }
  14467. })
  14468. )
  14469. }
  14470. }
  14471. }
  14472. )
  14473. })()