app-view.js 1.3 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374
  1. /******/ (function(modules) { // webpackBootstrap
  2. /******/ // The module cache
  3. /******/ var installedModules = {};
  4. /******/
  5. /******/ // The require function
  6. /******/ function __webpack_require__(moduleId) {
  7. /******/
  8. /******/ // Check if module is in cache
  9. /******/ if(installedModules[moduleId]) {
  10. /******/ return installedModules[moduleId].exports;
  11. /******/ }
  12. /******/ // Create a new module (and put it into the cache)
  13. /******/ var module = installedModules[moduleId] = {
  14. /******/ i: moduleId,
  15. /******/ l: false,
  16. /******/ exports: {}
  17. /******/ };
  18. /******/
  19. /******/ // Execute the module function
  20. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  21. /******/
  22. /******/ // Flag the module as loaded
  23. /******/ module.l = true;
  24. /******/
  25. /******/ // Return the exports of the module
  26. /******/ return module.exports;
  27. /******/ }
  28. /******/
  29. /******/
  30. /******/ // expose the modules object (__webpack_modules__)
  31. /******/ __webpack_require__.m = modules;
  32. /******/
  33. /******/ // expose the module cache
  34. /******/ __webpack_require__.c = installedModules;
  35. /******/
  36. /******/ // define getter function for harmony exports
  37. /******/ __webpack_require__.d = function(exports, name, getter) {
  38. /******/ if(!__webpack_require__.o(exports, name)) {
  39. /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
  40. /******/ }
  41. /******/ };
  42. /******/
  43. /******/ // define __esModule on exports
  44. /******/ __webpack_require__.r = function(exports) {
  45. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  46. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  47. /******/ }
  48. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  49. /******/ };
  50. /******/
  51. /******/ // create a fake namespace object
  52. /******/ // mode & 1: value is a module id, require it
  53. /******/ // mode & 2: merge all properties of value into the ns
  54. /******/ // mode & 4: return value when already ns object
  55. /******/ // mode & 8|1: behave like require
  56. /******/ __webpack_require__.t = function(value, mode) {
  57. /******/ if(mode & 1) value = __webpack_require__(value);
  58. /******/ if(mode & 8) return value;
  59. /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  60. /******/ var ns = Object.create(null);
  61. /******/ __webpack_require__.r(ns);
  62. /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  63. /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  64. /******/ return ns;
  65. /******/ };
  66. /******/
  67. /******/ // getDefaultExport function for compatibility with non-harmony modules
  68. /******/ __webpack_require__.n = function(module) {
  69. /******/ var getter = module && module.__esModule ?
  70. /******/ function getDefault() { return module['default']; } :
  71. /******/ function getModuleExports() { return module; };
  72. /******/ __webpack_require__.d(getter, 'a', getter);
  73. /******/ return getter;
  74. /******/ };
  75. /******/
  76. /******/ // Object.prototype.hasOwnProperty.call
  77. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  78. /******/
  79. /******/ // __webpack_public_path__
  80. /******/ __webpack_require__.p = "./";
  81. /******/
  82. /******/
  83. /******/ // Load entry module and return exports
  84. /******/ return __webpack_require__(__webpack_require__.s = 0);
  85. /******/ })
  86. /************************************************************************/
  87. /******/ ([
  88. /* 0 */
  89. /*!**************************************************!*\
  90. !*** D:/Work2/Orienteering/TrackOffical/main.js ***!
  91. \**************************************************/
  92. /*! no static exports found */
  93. /***/ (function(module, exports, __webpack_require__) {
  94. "use strict";
  95. __webpack_require__(/*! uni-pages?{"type":"view"} */ 1);
  96. // @ts-nocheck
  97. function initView() {
  98. function injectStyles(context) {
  99. var style0 = __webpack_require__(/*! ./App.vue?vue&type=style&index=0&lang=scss& */ 67);
  100. if (style0.__inject__) style0.__inject__(context);
  101. }
  102. typeof injectStyles === 'function' && injectStyles();
  103. UniViewJSBridge.publishHandler('webviewReady');
  104. }
  105. if (typeof plus !== 'undefined') {
  106. initView();
  107. } else {
  108. document.addEventListener('plusready', initView);
  109. }
  110. /***/ }),
  111. /* 1 */
  112. /*!*********************************************************************!*\
  113. !*** D:/Work2/Orienteering/TrackOffical/pages.json?{"type":"view"} ***!
  114. \*********************************************************************/
  115. /*! no static exports found */
  116. /***/ (function(module, exports, __webpack_require__) {
  117. if (typeof Promise !== 'undefined' && !Promise.prototype.finally) {
  118. Promise.prototype.finally = function (callback) {
  119. var promise = this.constructor;
  120. return this.then(function (value) {
  121. return promise.resolve(callback()).then(function () {
  122. return value;
  123. });
  124. }, function (reason) {
  125. return promise.resolve(callback()).then(function () {
  126. throw reason;
  127. });
  128. });
  129. };
  130. }
  131. if (typeof uni !== 'undefined' && uni && uni.requireGlobal) {
  132. var global = uni.requireGlobal();
  133. ArrayBuffer = global.ArrayBuffer;
  134. Int8Array = global.Int8Array;
  135. Uint8Array = global.Uint8Array;
  136. Uint8ClampedArray = global.Uint8ClampedArray;
  137. Int16Array = global.Int16Array;
  138. Uint16Array = global.Uint16Array;
  139. Int32Array = global.Int32Array;
  140. Uint32Array = global.Uint32Array;
  141. Float32Array = global.Float32Array;
  142. Float64Array = global.Float64Array;
  143. BigInt64Array = global.BigInt64Array;
  144. BigUint64Array = global.BigUint64Array;
  145. }
  146. window.__uniConfig = {
  147. "window": {
  148. "navigationBarTextStyle": "white",
  149. "navigationBarTitleText": "小飞龙定向助手",
  150. "navigationBarBackgroundColor": "#1888ff",
  151. "backgroundColor": "#F8F8F8",
  152. "background": "#efeff4"
  153. },
  154. "darkmode": false
  155. };
  156. if (uni.restoreGlobal) {
  157. uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
  158. }
  159. __definePage('pages/AO/mapShow', function () {
  160. return Vue.extend(__webpack_require__(/*! pages/AO/mapShow.vue?mpType=page */ 2).default);
  161. });
  162. __definePage('pages/nfc/nfc', function () {
  163. return Vue.extend(__webpack_require__(/*! pages/nfc/nfc.vue?mpType=page */ 34).default);
  164. });
  165. __definePage('pages/verify/verify', function () {
  166. return Vue.extend(__webpack_require__(/*! pages/verify/verify.vue?mpType=page */ 59).default);
  167. });
  168. /***/ }),
  169. /* 2 */
  170. /*!***************************************************************************!*\
  171. !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?mpType=page ***!
  172. \***************************************************************************/
  173. /*! no static exports found */
  174. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  175. "use strict";
  176. __webpack_require__.r(__webpack_exports__);
  177. /* harmony import */ var _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19&mpType=page */ 3);
  178. /* harmony import */ var _mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mapShow.vue?vue&type=renderjs&module=leaflet&lang=js&mpType=page */ 5);
  179. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  180. /* harmony import */ var _mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mapShow.vue?vue&type=style&index=0&id=7c4266a1&lang=scss&scoped=true&mpType=page */ 30);
  181. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  182. _mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__["default"].__module = 'leaflet'
  183. var script = {}
  184. /* normalize component */
  185. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  186. script,
  187. _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"],
  188. _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  189. false,
  190. null,
  191. "7c4266a1",
  192. null,
  193. false,
  194. _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"],
  195. _mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__["default"]
  196. )
  197. component.options.__file = "pages/AO/mapShow.vue"
  198. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  199. /***/ }),
  200. /* 3 */
  201. /*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  202. !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19&mpType=page ***!
  203. \*************************************************************************************************************************************************************************************************************************************************************************************/
  204. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  205. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  206. "use strict";
  207. __webpack_require__.r(__webpack_exports__);
  208. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19&mpType=page */ 4);
  209. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  210. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  211. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  212. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  213. /***/ }),
  214. /* 4 */
  215. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  216. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MzkyLCJhdHRycyI6eyJtb2R1bGUiOiJsZWFmbGV0IiwibGFuZyI6ImpzIn0sImVuZCI6NDMwOX19&mpType=page ***!
  217. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  218. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  219. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  220. "use strict";
  221. __webpack_require__.r(__webpack_exports__);
  222. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  223. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  224. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  225. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  226. var components
  227. try {
  228. components = {
  229. uniPopup:
  230. __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 76)
  231. .default,
  232. }
  233. } catch (e) {
  234. if (
  235. e.message.indexOf("Cannot find module") !== -1 &&
  236. e.message.indexOf(".vue") !== -1
  237. ) {
  238. console.error(e.message)
  239. console.error("1. 排查组件名称拼写是否正确")
  240. console.error(
  241. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  242. )
  243. console.error(
  244. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  245. )
  246. } else {
  247. throw e
  248. }
  249. }
  250. var render = function () {
  251. var _vm = this
  252. var _h = _vm.$createElement
  253. var _c = _vm._self._c || _h
  254. return _c(
  255. "uni-view",
  256. { attrs: { _i: 0 } },
  257. [
  258. _c("uni-view", {
  259. staticClass: _vm._$g(1, "sc"),
  260. attrs: { id: "map", _i: 1 },
  261. }),
  262. _c(
  263. "uni-view",
  264. { attrs: { _i: 2 } },
  265. [
  266. _c(
  267. "uni-popup",
  268. {
  269. ref: "popup",
  270. attrs: { _i: 3 },
  271. on: {
  272. change: function ($event) {
  273. return _vm.$handleViewEvent($event)
  274. },
  275. },
  276. },
  277. [
  278. _c(
  279. "uni-view",
  280. {
  281. staticClass: _vm._$g(4, "sc"),
  282. class: _vm._$g(4, "c"),
  283. attrs: { _i: 4 },
  284. },
  285. [
  286. _c(
  287. "v-uni-text",
  288. { staticClass: _vm._$g(5, "sc"), attrs: { _i: 5 } },
  289. [_vm._v("popup 内容")]
  290. ),
  291. ],
  292. 1
  293. ),
  294. ],
  295. 1
  296. ),
  297. ],
  298. 1
  299. ),
  300. ],
  301. 1
  302. )
  303. }
  304. var recyclableRender = false
  305. var staticRenderFns = []
  306. render._withStripped = true
  307. /***/ }),
  308. /* 5 */
  309. /*!********************************************************************************************************************!*\
  310. !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=renderjs&module=leaflet&lang=js&mpType=page ***!
  311. \********************************************************************************************************************/
  312. /*! no static exports found */
  313. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  314. "use strict";
  315. __webpack_require__.r(__webpack_exports__);
  316. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./mapShow.vue?vue&type=renderjs&module=leaflet&lang=js&mpType=page */ 6);
  317. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
  318. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  319. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_renderjs_module_leaflet_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
  320. /***/ }),
  321. /* 6 */
  322. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  323. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=renderjs&module=leaflet&lang=js&mpType=page ***!
  324. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  325. /*! no static exports found */
  326. /***/ (function(module, exports, __webpack_require__) {
  327. "use strict";
  328. /* WEBPACK VAR INJECTION */(function(__f__) {
  329. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 8);
  330. Object.defineProperty(exports, "__esModule", {
  331. value: true
  332. });
  333. exports.default = void 0;
  334. var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 9));
  335. var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 12));
  336. __webpack_require__(/*! leaflet/dist/leaflet.css */ 13);
  337. var _base_pb = __webpack_require__(/*! @/grpc/base_pb.js */ 22);
  338. var _leafletHelper = _interopRequireDefault(__webpack_require__(/*! @/utils/map/leafletHelper */ 26));
  339. // import mapHelper from '@/utils/mapHelper'
  340. var _default = {
  341. components: {},
  342. data: function data() {
  343. return {
  344. map: null,
  345. checkPoints: [{
  346. cp_id: 1,
  347. // 检查点ID
  348. serial_num: 1,
  349. // 序号
  350. c_type: 1,
  351. // 检查点类型 1:起始点 2:途经点 3:结束点 4:其他
  352. category: 1,
  353. // 检查点种类 1:实体点 2:虚拟点 3:VR点
  354. latitude: 36.67205,
  355. longitude: 117.126945
  356. }, {
  357. cp_id: 2,
  358. serial_num: 2,
  359. c_type: 1,
  360. category: 1,
  361. latitude: 36.670871,
  362. longitude: 117.12725
  363. }, {
  364. cp_id: 3,
  365. serial_num: 3,
  366. c_type: 1,
  367. category: 1,
  368. latitude: 36.671723,
  369. longitude: 117.128565
  370. }, {
  371. cp_id: 4,
  372. serial_num: 4,
  373. c_type: 1,
  374. category: 1,
  375. latitude: 36.672704,
  376. longitude: 117.128415
  377. }, {
  378. cp_id: 5,
  379. serial_num: 5,
  380. c_type: 1,
  381. category: 1,
  382. latitude: 36.672003,
  383. longitude: 117.129305
  384. }, {
  385. cp_id: 6,
  386. serial_num: 6,
  387. c_type: 1,
  388. category: 1,
  389. latitude: 36.672416,
  390. longitude: 117.127116
  391. }, {
  392. cp_id: 7,
  393. serial_num: 7,
  394. c_type: 1,
  395. category: 1,
  396. latitude: 36.671689,
  397. longitude: 117.127798
  398. }, {
  399. cp_id: 8,
  400. serial_num: 8,
  401. c_type: 1,
  402. category: 1,
  403. latitude: 36.67094,
  404. longitude: 117.128522
  405. }],
  406. players: [{
  407. id: 1,
  408. nickName: '小鱼儿',
  409. phone: '13105310001'
  410. }, {
  411. id: 2,
  412. nickName: '花无缺',
  413. phone: '13105310002'
  414. }, {
  415. id: 3,
  416. nickName: '李大嘴',
  417. phone: '13105310003'
  418. }],
  419. players_position: [{
  420. id: 1,
  421. lat: 36.671357,
  422. lng: 117.127925
  423. }, {
  424. id: 2,
  425. lat: 36.671657,
  426. lng: 117.125925
  427. }, {
  428. id: 3,
  429. lat: 36.672257,
  430. lng: 117.128925
  431. }
  432. // {
  433. // id: 4,
  434. // lat: 36.672267,
  435. // lng: 117.128935
  436. // }
  437. ],
  438. shopId: 0,
  439. mapUrl: null,
  440. mapInfo: {},
  441. shopList: [],
  442. controlInfoList: []
  443. };
  444. },
  445. computed: {},
  446. mounted: function mounted() {
  447. this.handleDrawMap();
  448. },
  449. onLoad: function onLoad() {
  450. // this.getShopList()
  451. // this.getShopMap(8)
  452. },
  453. beforeDestroy: function beforeDestroy() {
  454. // console.log("beforeDestroy")
  455. _leafletHelper.default.free();
  456. },
  457. methods: {
  458. getShopMap: function getShopMap(shopId) {
  459. var _this = this;
  460. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
  461. var request;
  462. return _regenerator.default.wrap(function _callee2$(_context2) {
  463. while (1) {
  464. switch (_context2.prev = _context2.next) {
  465. case 0:
  466. try {
  467. // 创建请求参数并赋值
  468. request = new _base_pb.IdRequest();
  469. request.setId(shopId);
  470. // 调用客户端相应的grpc方法,发送grpc请求,并接受后台发送回来的返回值
  471. _this.$client.assMapInfoDetail(request, {}, /*#__PURE__*/function () {
  472. var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(err, response) {
  473. var res;
  474. return _regenerator.default.wrap(function _callee$(_context) {
  475. while (1) {
  476. switch (_context.prev = _context.next) {
  477. case 0:
  478. if (err) {
  479. __f__("log", "[assMapInfoDetail] err: code = ".concat(err.code) + ", message = \"".concat(err.message, "\""), " at pages/AO/mapShow.vue:145");
  480. } else {
  481. res = response.toObject();
  482. __f__("log", '[assMapInfoDetail]', res, " at pages/AO/mapShow.vue:149");
  483. _this.mapInfo = res;
  484. // await mapHelper.handleMapInfo(this, this.mapInfo)
  485. _this.handleDrawMap();
  486. }
  487. case 1:
  488. case "end":
  489. return _context.stop();
  490. }
  491. }
  492. }, _callee);
  493. }));
  494. return function (_x, _x2) {
  495. return _ref.apply(this, arguments);
  496. };
  497. }());
  498. } catch (e) {
  499. __f__("log", '[getShopMap] err', e, " at pages/AO/mapShow.vue:157");
  500. }
  501. case 1:
  502. case "end":
  503. return _context2.stop();
  504. }
  505. }
  506. }, _callee2);
  507. }))();
  508. },
  509. handleDrawMap: function handleDrawMap() {
  510. _leafletHelper.default.init('map', [36.67175772119628, 117.12792580603369], 17);
  511. _leafletHelper.default.global.setCheckPoints(this.checkPoints);
  512. _leafletHelper.default.global.setPlayers(this.players);
  513. _leafletHelper.default.global.setPlayersPosition(this.players_position);
  514. _leafletHelper.default.addMapLayer(8);
  515. _leafletHelper.default.checkPoint.drawAllCheckPoints();
  516. _leafletHelper.default.checkPoint.drawPath();
  517. // leafletHelper.checkPoint.test()
  518. // leafletHelper.player.drawAllPlayers()
  519. // leafletHelper.player.drawOneTrail(1, 10000, true)
  520. // leafletHelper.player.drawOneTrail(2, 0, false)
  521. // leafletHelper.player.drawAllTrails(5000)
  522. }
  523. }
  524. };
  525. exports.default = _default;
  526. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 7)["default"]))
  527. /***/ }),
  528. /* 7 */
  529. /*!*********************************************************************!*\
  530. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***!
  531. \*********************************************************************/
  532. /*! exports provided: log, default */
  533. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  534. "use strict";
  535. __webpack_require__.r(__webpack_exports__);
  536. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
  537. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; });
  538. function typof (v) {
  539. var s = Object.prototype.toString.call(v)
  540. return s.substring(8, s.length - 1)
  541. }
  542. function isDebugMode () {
  543. /* eslint-disable no-undef */
  544. return typeof __channelId__ === 'string' && __channelId__
  545. }
  546. function jsonStringifyReplacer (k, p) {
  547. switch (typof(p)) {
  548. case 'Function':
  549. return 'function() { [native code] }'
  550. default :
  551. return p
  552. }
  553. }
  554. function log (type) {
  555. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  556. args[_key - 1] = arguments[_key]
  557. }
  558. console[type].apply(console, args)
  559. }
  560. function formatLog () {
  561. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  562. args[_key] = arguments[_key]
  563. }
  564. var type = args.shift()
  565. if (isDebugMode()) {
  566. args.push(args.pop().replace('at ', 'uni-app:///'))
  567. return console[type].apply(console, args)
  568. }
  569. var msgs = args.map(function (v) {
  570. var type = Object.prototype.toString.call(v).toLowerCase()
  571. if (type === '[object object]' || type === '[object array]') {
  572. try {
  573. v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---'
  574. } catch (e) {
  575. v = type
  576. }
  577. } else {
  578. if (v === null) {
  579. v = '---NULL---'
  580. } else if (v === undefined) {
  581. v = '---UNDEFINED---'
  582. } else {
  583. var vType = typof(v).toUpperCase()
  584. if (vType === 'NUMBER' || vType === 'BOOLEAN') {
  585. v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---'
  586. } else {
  587. v = String(v)
  588. }
  589. }
  590. }
  591. return v
  592. })
  593. var msg = ''
  594. if (msgs.length > 1) {
  595. var lastMsg = msgs.pop()
  596. msg = msgs.join('---COMMA---')
  597. if (lastMsg.indexOf(' at ') === 0) {
  598. msg += lastMsg
  599. } else {
  600. msg += '---COMMA---' + lastMsg
  601. }
  602. } else {
  603. msg = msgs[0]
  604. }
  605. console[type](msg)
  606. }
  607. /***/ }),
  608. /* 8 */
  609. /*!**********************************************************************!*\
  610. !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
  611. \**********************************************************************/
  612. /*! no static exports found */
  613. /***/ (function(module, exports) {
  614. function _interopRequireDefault(obj) {
  615. return obj && obj.__esModule ? obj : {
  616. "default": obj
  617. };
  618. }
  619. module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
  620. /***/ }),
  621. /* 9 */
  622. /*!**********************************************************!*\
  623. !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
  624. \**********************************************************/
  625. /*! no static exports found */
  626. /***/ (function(module, exports, __webpack_require__) {
  627. var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 10);
  628. // TODO(Babel 8): Remove this file.
  629. var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 11)();
  630. module.exports = runtime;
  631. // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
  632. try {
  633. regeneratorRuntime = runtime;
  634. } catch (accidentalStrictMode) {
  635. if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") {
  636. globalThis.regeneratorRuntime = runtime;
  637. } else {
  638. Function("r", "regeneratorRuntime = r")(runtime);
  639. }
  640. }
  641. /***/ }),
  642. /* 10 */
  643. /*!*******************************************************!*\
  644. !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
  645. \*******************************************************/
  646. /*! no static exports found */
  647. /***/ (function(module, exports) {
  648. function _typeof(obj) {
  649. "@babel/helpers - typeof";
  650. return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
  651. return typeof obj;
  652. } : function (obj) {
  653. return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  654. }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
  655. }
  656. module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
  657. /***/ }),
  658. /* 11 */
  659. /*!*******************************************************************!*\
  660. !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
  661. \*******************************************************************/
  662. /*! no static exports found */
  663. /***/ (function(module, exports, __webpack_require__) {
  664. var _typeof = __webpack_require__(/*! ./typeof.js */ 10)["default"];
  665. function _regeneratorRuntime() {
  666. "use strict";
  667. /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
  668. module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
  669. return exports;
  670. }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  671. var exports = {},
  672. Op = Object.prototype,
  673. hasOwn = Op.hasOwnProperty,
  674. defineProperty = Object.defineProperty || function (obj, key, desc) {
  675. obj[key] = desc.value;
  676. },
  677. $Symbol = "function" == typeof Symbol ? Symbol : {},
  678. iteratorSymbol = $Symbol.iterator || "@@iterator",
  679. asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
  680. toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
  681. function define(obj, key, value) {
  682. return Object.defineProperty(obj, key, {
  683. value: value,
  684. enumerable: !0,
  685. configurable: !0,
  686. writable: !0
  687. }), obj[key];
  688. }
  689. try {
  690. define({}, "");
  691. } catch (err) {
  692. define = function define(obj, key, value) {
  693. return obj[key] = value;
  694. };
  695. }
  696. function wrap(innerFn, outerFn, self, tryLocsList) {
  697. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
  698. generator = Object.create(protoGenerator.prototype),
  699. context = new Context(tryLocsList || []);
  700. return defineProperty(generator, "_invoke", {
  701. value: makeInvokeMethod(innerFn, self, context)
  702. }), generator;
  703. }
  704. function tryCatch(fn, obj, arg) {
  705. try {
  706. return {
  707. type: "normal",
  708. arg: fn.call(obj, arg)
  709. };
  710. } catch (err) {
  711. return {
  712. type: "throw",
  713. arg: err
  714. };
  715. }
  716. }
  717. exports.wrap = wrap;
  718. var ContinueSentinel = {};
  719. function Generator() {}
  720. function GeneratorFunction() {}
  721. function GeneratorFunctionPrototype() {}
  722. var IteratorPrototype = {};
  723. define(IteratorPrototype, iteratorSymbol, function () {
  724. return this;
  725. });
  726. var getProto = Object.getPrototypeOf,
  727. NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  728. NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
  729. var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
  730. function defineIteratorMethods(prototype) {
  731. ["next", "throw", "return"].forEach(function (method) {
  732. define(prototype, method, function (arg) {
  733. return this._invoke(method, arg);
  734. });
  735. });
  736. }
  737. function AsyncIterator(generator, PromiseImpl) {
  738. function invoke(method, arg, resolve, reject) {
  739. var record = tryCatch(generator[method], generator, arg);
  740. if ("throw" !== record.type) {
  741. var result = record.arg,
  742. value = result.value;
  743. return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
  744. invoke("next", value, resolve, reject);
  745. }, function (err) {
  746. invoke("throw", err, resolve, reject);
  747. }) : PromiseImpl.resolve(value).then(function (unwrapped) {
  748. result.value = unwrapped, resolve(result);
  749. }, function (error) {
  750. return invoke("throw", error, resolve, reject);
  751. });
  752. }
  753. reject(record.arg);
  754. }
  755. var previousPromise;
  756. defineProperty(this, "_invoke", {
  757. value: function value(method, arg) {
  758. function callInvokeWithMethodAndArg() {
  759. return new PromiseImpl(function (resolve, reject) {
  760. invoke(method, arg, resolve, reject);
  761. });
  762. }
  763. return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
  764. }
  765. });
  766. }
  767. function makeInvokeMethod(innerFn, self, context) {
  768. var state = "suspendedStart";
  769. return function (method, arg) {
  770. if ("executing" === state) throw new Error("Generator is already running");
  771. if ("completed" === state) {
  772. if ("throw" === method) throw arg;
  773. return doneResult();
  774. }
  775. for (context.method = method, context.arg = arg;;) {
  776. var delegate = context.delegate;
  777. if (delegate) {
  778. var delegateResult = maybeInvokeDelegate(delegate, context);
  779. if (delegateResult) {
  780. if (delegateResult === ContinueSentinel) continue;
  781. return delegateResult;
  782. }
  783. }
  784. if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
  785. if ("suspendedStart" === state) throw state = "completed", context.arg;
  786. context.dispatchException(context.arg);
  787. } else "return" === context.method && context.abrupt("return", context.arg);
  788. state = "executing";
  789. var record = tryCatch(innerFn, self, context);
  790. if ("normal" === record.type) {
  791. if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
  792. return {
  793. value: record.arg,
  794. done: context.done
  795. };
  796. }
  797. "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
  798. }
  799. };
  800. }
  801. function maybeInvokeDelegate(delegate, context) {
  802. var methodName = context.method,
  803. method = delegate.iterator[methodName];
  804. if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
  805. var record = tryCatch(method, delegate.iterator, context.arg);
  806. if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
  807. var info = record.arg;
  808. return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
  809. }
  810. function pushTryEntry(locs) {
  811. var entry = {
  812. tryLoc: locs[0]
  813. };
  814. 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
  815. }
  816. function resetTryEntry(entry) {
  817. var record = entry.completion || {};
  818. record.type = "normal", delete record.arg, entry.completion = record;
  819. }
  820. function Context(tryLocsList) {
  821. this.tryEntries = [{
  822. tryLoc: "root"
  823. }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
  824. }
  825. function values(iterable) {
  826. if (iterable) {
  827. var iteratorMethod = iterable[iteratorSymbol];
  828. if (iteratorMethod) return iteratorMethod.call(iterable);
  829. if ("function" == typeof iterable.next) return iterable;
  830. if (!isNaN(iterable.length)) {
  831. var i = -1,
  832. next = function next() {
  833. for (; ++i < iterable.length;) {
  834. if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
  835. }
  836. return next.value = undefined, next.done = !0, next;
  837. };
  838. return next.next = next;
  839. }
  840. }
  841. return {
  842. next: doneResult
  843. };
  844. }
  845. function doneResult() {
  846. return {
  847. value: undefined,
  848. done: !0
  849. };
  850. }
  851. return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
  852. value: GeneratorFunctionPrototype,
  853. configurable: !0
  854. }), defineProperty(GeneratorFunctionPrototype, "constructor", {
  855. value: GeneratorFunction,
  856. configurable: !0
  857. }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
  858. var ctor = "function" == typeof genFun && genFun.constructor;
  859. return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
  860. }, exports.mark = function (genFun) {
  861. return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
  862. }, exports.awrap = function (arg) {
  863. return {
  864. __await: arg
  865. };
  866. }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
  867. return this;
  868. }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
  869. void 0 === PromiseImpl && (PromiseImpl = Promise);
  870. var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
  871. return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
  872. return result.done ? result.value : iter.next();
  873. });
  874. }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
  875. return this;
  876. }), define(Gp, "toString", function () {
  877. return "[object Generator]";
  878. }), exports.keys = function (val) {
  879. var object = Object(val),
  880. keys = [];
  881. for (var key in object) {
  882. keys.push(key);
  883. }
  884. return keys.reverse(), function next() {
  885. for (; keys.length;) {
  886. var key = keys.pop();
  887. if (key in object) return next.value = key, next.done = !1, next;
  888. }
  889. return next.done = !0, next;
  890. };
  891. }, exports.values = values, Context.prototype = {
  892. constructor: Context,
  893. reset: function reset(skipTempReset) {
  894. if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {
  895. "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
  896. }
  897. },
  898. stop: function stop() {
  899. this.done = !0;
  900. var rootRecord = this.tryEntries[0].completion;
  901. if ("throw" === rootRecord.type) throw rootRecord.arg;
  902. return this.rval;
  903. },
  904. dispatchException: function dispatchException(exception) {
  905. if (this.done) throw exception;
  906. var context = this;
  907. function handle(loc, caught) {
  908. return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
  909. }
  910. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  911. var entry = this.tryEntries[i],
  912. record = entry.completion;
  913. if ("root" === entry.tryLoc) return handle("end");
  914. if (entry.tryLoc <= this.prev) {
  915. var hasCatch = hasOwn.call(entry, "catchLoc"),
  916. hasFinally = hasOwn.call(entry, "finallyLoc");
  917. if (hasCatch && hasFinally) {
  918. if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  919. if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  920. } else if (hasCatch) {
  921. if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  922. } else {
  923. if (!hasFinally) throw new Error("try statement without catch or finally");
  924. if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  925. }
  926. }
  927. }
  928. },
  929. abrupt: function abrupt(type, arg) {
  930. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  931. var entry = this.tryEntries[i];
  932. if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
  933. var finallyEntry = entry;
  934. break;
  935. }
  936. }
  937. finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
  938. var record = finallyEntry ? finallyEntry.completion : {};
  939. return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
  940. },
  941. complete: function complete(record, afterLoc) {
  942. if ("throw" === record.type) throw record.arg;
  943. return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
  944. },
  945. finish: function finish(finallyLoc) {
  946. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  947. var entry = this.tryEntries[i];
  948. if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
  949. }
  950. },
  951. "catch": function _catch(tryLoc) {
  952. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  953. var entry = this.tryEntries[i];
  954. if (entry.tryLoc === tryLoc) {
  955. var record = entry.completion;
  956. if ("throw" === record.type) {
  957. var thrown = record.arg;
  958. resetTryEntry(entry);
  959. }
  960. return thrown;
  961. }
  962. }
  963. throw new Error("illegal catch attempt");
  964. },
  965. delegateYield: function delegateYield(iterable, resultName, nextLoc) {
  966. return this.delegate = {
  967. iterator: values(iterable),
  968. resultName: resultName,
  969. nextLoc: nextLoc
  970. }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
  971. }
  972. }, exports;
  973. }
  974. module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
  975. /***/ }),
  976. /* 12 */
  977. /*!*****************************************************************!*\
  978. !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
  979. \*****************************************************************/
  980. /*! no static exports found */
  981. /***/ (function(module, exports) {
  982. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  983. try {
  984. var info = gen[key](arg);
  985. var value = info.value;
  986. } catch (error) {
  987. reject(error);
  988. return;
  989. }
  990. if (info.done) {
  991. resolve(value);
  992. } else {
  993. Promise.resolve(value).then(_next, _throw);
  994. }
  995. }
  996. function _asyncToGenerator(fn) {
  997. return function () {
  998. var self = this,
  999. args = arguments;
  1000. return new Promise(function (resolve, reject) {
  1001. var gen = fn.apply(self, args);
  1002. function _next(value) {
  1003. asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
  1004. }
  1005. function _throw(err) {
  1006. asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
  1007. }
  1008. _next(undefined);
  1009. });
  1010. };
  1011. }
  1012. module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
  1013. /***/ }),
  1014. /* 13 */
  1015. /*!********************************************************************************!*\
  1016. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/leaflet.css ***!
  1017. \********************************************************************************/
  1018. /*! no static exports found */
  1019. /***/ (function(module, exports, __webpack_require__) {
  1020. // style-loader: Adds some css to the DOM by adding a <style> tag
  1021. // load the styles
  1022. var content = __webpack_require__(/*! !../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-3-2!../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-3-3!./leaflet.css */ 14);
  1023. if(content.__esModule) content = content.default;
  1024. if(typeof content === 'string') content = [[module.i, content, '']];
  1025. if(content.locals) module.exports = content.locals;
  1026. // add the styles to the DOM
  1027. var add = __webpack_require__(/*! ../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  1028. var update = add("136a00a7", content, false, {"sourceMap":false,"shadowMode":false});
  1029. // Hot Module Replacement
  1030. if(false) {}
  1031. /***/ }),
  1032. /* 14 */
  1033. /*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  1034. !*** ./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-3-2!./node_modules/postcss-loader/src??ref--6-oneOf-3-3!D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/leaflet.css ***!
  1035. \*********************************************************************************************************************************************************************************************************************************************************************************************/
  1036. /*! no static exports found */
  1037. /***/ (function(module, exports, __webpack_require__) {
  1038. // Imports
  1039. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  1040. var ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/lib/app-plus/getUrl.js */ 16);
  1041. var ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! ./images/layers.png */ 17);
  1042. var ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(/*! ./images/layers-2x.png */ 18);
  1043. var ___CSS_LOADER_URL_IMPORT_2___ = __webpack_require__(/*! ./images/marker-icon.png */ 19);
  1044. exports = ___CSS_LOADER_API_IMPORT___(false);
  1045. var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
  1046. var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);
  1047. var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);
  1048. // Module
  1049. exports.push([module.i, "/* required styles */\r\n\r\n.leaflet-pane,\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-tile-container,\r\n.leaflet-pane > svg,\r\n.leaflet-pane > uni-canvas,\r\n.leaflet-zoom-box,\r\n.leaflet-image-layer,\r\n.leaflet-layer {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\t}\r\n\r\n.leaflet-container {\r\n\toverflow: hidden;\r\n\t}\r\n\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\t-webkit-user-select: none;\r\n\t user-select: none;\r\n\t -webkit-user-drag: none;\r\n\t}\r\n\r\n/* Prevents IE11 from highlighting tiles in blue */\r\n\r\n.leaflet-tile::selection {\r\n\tbackground: transparent;\r\n}\r\n\r\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r\n\r\n.leaflet-safari .leaflet-tile {\r\n\timage-rendering: -webkit-optimize-contrast;\r\n\t}\r\n\r\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\r\n\r\n.leaflet-safari .leaflet-tile-container {\r\n\twidth: 1600px;\r\n\theight: 1600px;\r\n\t-webkit-transform-origin: 0 0;\r\n\t}\r\n\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\tdisplay: block;\r\n\t}\r\n\r\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\r\n\r\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\r\n\r\n.leaflet-container .leaflet-overlay-pane svg {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\t}\r\n\r\n.leaflet-container .leaflet-marker-pane img,\r\n.leaflet-container .leaflet-shadow-pane img,\r\n.leaflet-container .leaflet-tile-pane img,\r\n.leaflet-container img.leaflet-image-layer,\r\n.leaflet-container .leaflet-tile {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\twidth: auto;\r\n\tpadding: 0;\r\n\t}\r\n\r\n.leaflet-container.leaflet-touch-zoom {\r\n\ttouch-action: pan-x pan-y;\r\n\t}\r\n\r\n.leaflet-container.leaflet-touch-drag {\r\n\t/* Fallback for FF which doesn't support pinch-zoom */\r\n\ttouch-action: none;\r\n\ttouch-action: pinch-zoom;\r\n}\r\n\r\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\r\n\ttouch-action: none;\r\n}\r\n\r\n.leaflet-container {\r\n\t-webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n.leaflet-container a {\r\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\r\n}\r\n\r\n.leaflet-tile {\r\n\t-webkit-filter: inherit;\r\n\t filter: inherit;\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n.leaflet-tile-loaded {\r\n\tvisibility: inherit;\r\n\t}\r\n\r\n.leaflet-zoom-box {\r\n\twidth: 0;\r\n\theight: 0;\r\n\tbox-sizing: border-box;\r\n\tz-index: 800;\r\n\t}\r\n\r\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\r\n\r\n.leaflet-overlay-pane svg {\r\n\t-moz-user-select: none;\r\n\t}\r\n\r\n.leaflet-pane { z-index: 400; }\r\n\r\n.leaflet-tile-pane { z-index: 200; }\r\n\r\n.leaflet-overlay-pane { z-index: 400; }\r\n\r\n.leaflet-shadow-pane { z-index: 500; }\r\n\r\n.leaflet-marker-pane { z-index: 600; }\r\n\r\n.leaflet-tooltip-pane { z-index: 650; }\r\n\r\n.leaflet-popup-pane { z-index: 700; }\r\n\r\n.leaflet-map-pane uni-canvas { z-index: 100; }\r\n\r\n.leaflet-map-pane svg { z-index: 200; }\r\n\r\n.leaflet-vml-shape {\r\n\twidth: 1px;\r\n\theight: 1px;\r\n\t}\r\n\r\n.lvml {\r\n\tbehavior: url(#default#VML);\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\t}\r\n\r\n/* control positioning */\r\n\r\n.leaflet-control {\r\n\tposition: relative;\r\n\tz-index: 800;\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n.leaflet-top,\r\n.leaflet-bottom {\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-top {\r\n\ttop: 0;\r\n\t}\r\n\r\n.leaflet-right {\r\n\tright: 0;\r\n\t}\r\n\r\n.leaflet-bottom {\r\n\tbottom: 0;\r\n\t}\r\n\r\n.leaflet-left {\r\n\tleft: 0;\r\n\t}\r\n\r\n.leaflet-control {\r\n\tfloat: left;\r\n\tclear: both;\r\n\t}\r\n\r\n.leaflet-right .leaflet-control {\r\n\tfloat: right;\r\n\t}\r\n\r\n.leaflet-top .leaflet-control {\r\n\tmargin-top: 10px;\r\n\t}\r\n\r\n.leaflet-bottom .leaflet-control {\r\n\tmargin-bottom: 10px;\r\n\t}\r\n\r\n.leaflet-left .leaflet-control {\r\n\tmargin-left: 10px;\r\n\t}\r\n\r\n.leaflet-right .leaflet-control {\r\n\tmargin-right: 10px;\r\n\t}\r\n\r\n/* zoom and fade animations */\r\n\r\n.leaflet-fade-anim .leaflet-popup {\r\n\topacity: 0;\r\n\ttransition: opacity 0.2s linear;\r\n\t}\r\n\r\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r\n\topacity: 1;\r\n\t}\r\n\r\n.leaflet-zoom-animated {\r\n\t-webkit-transform-origin: 0 0;\r\n\t transform-origin: 0 0;\r\n\t}\r\n\r\nsvg.leaflet-zoom-animated {\r\n\twill-change: transform;\r\n}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\ttransition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\ttransition: transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\ttransition: transform 0.25s cubic-bezier(0,0,0.25,1), -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-tile,\r\n.leaflet-pan-anim .leaflet-tile {\r\n\ttransition: none;\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-hide {\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n/* cursors */\r\n\r\n.leaflet-interactive {\r\n\tcursor: pointer;\r\n\t}\r\n\r\n.leaflet-grab {\r\n\tcursor: grab;\r\n\t}\r\n\r\n.leaflet-crosshair,\r\n.leaflet-crosshair .leaflet-interactive {\r\n\tcursor: crosshair;\r\n\t}\r\n\r\n.leaflet-popup-pane,\r\n.leaflet-control {\r\n\tcursor: auto;\r\n\t}\r\n\r\n.leaflet-dragging .leaflet-grab,\r\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\r\n.leaflet-dragging .leaflet-marker-draggable {\r\n\tcursor: move;\r\n\tcursor: grabbing;\r\n\t}\r\n\r\n/* marker & overlays interactivity */\r\n\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-image-layer,\r\n.leaflet-pane > svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive,\r\nsvg.leaflet-image-layer.leaflet-interactive path {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline-offset: 1px;\r\n\t}\r\n\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n/* general typography */\r\n\r\n.leaflet-container {\r\n\tfont-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\tfont-size: 12px;\r\n\tfont-size: 0.75rem;\r\n\tline-height: 1.5;\r\n\t}\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n\r\n.leaflet-bar a {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n\r\n.leaflet-bar a:hover,\r\n.leaflet-bar a:focus {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n\r\n.leaflet-control-layers uni-label {\r\n\tdisplay: block;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\t}\r\n\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n\r\n.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */\r\n\tbackground-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ");\r\n\t}\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.8);\r\n\tmargin: 0;\r\n\t}\r\n\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\tline-height: 1.4;\r\n\t}\r\n\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n\r\n.leaflet-control-attribution a:hover,\r\n.leaflet-control-attribution a:focus {\r\n\ttext-decoration: underline;\r\n\t}\r\n\r\n.leaflet-attribution-flag {\r\n\tdisplay: inline !important;\r\n\tvertical-align: baseline !important;\r\n\twidth: 1em;\r\n\theight: 0.6669em;\r\n\t}\r\n\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\twhite-space: nowrap;\r\n\tbox-sizing: border-box;\r\n\tbackground: rgba(255, 255, 255, 0.8);\r\n\ttext-shadow: 1px 1px #fff;\r\n\t}\r\n\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n\r\n.leaflet-popup-content {\r\n\tmargin: 13px 24px 13px 20px;\r\n\tline-height: 1.3;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\tmin-height: 1px;\r\n\t}\r\n\r\n.leaflet-popup-content p {\r\n\tmargin: 17px 0;\r\n\tmargin: 1.3em 0;\r\n\t}\r\n\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-top: -1px;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\tpointer-events: auto;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tfont: 16px/24px Tahoma, Verdana, sans-serif;\r\n\tcolor: #757575;\r\n\ttext-decoration: none;\r\n\tbackground: transparent;\r\n\t}\r\n\r\n.leaflet-container a.leaflet-popup-close-button:hover,\r\n.leaflet-container a.leaflet-popup-close-button:focus {\r\n\tcolor: #585858;\r\n\t}\r\n\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\t-ms-zoom: 1;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n/* Tooltip */\r\n\r\n/* Base styles for the element that has a tooltip */\r\n\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n\r\n.leaflet-tooltip.leaflet-interactive {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: \"\";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n\r\n/* Printing */\r\n\r\n@media print {\r\n\t/* Prevent printers from removing background-images of controls. */\r\n\t.leaflet-control {\r\n\t\t-webkit-print-color-adjust: exact;\r\n\t\tprint-color-adjust: exact;\r\n\t\t}\r\n\t}\r\n", ""]);
  1050. // Exports
  1051. module.exports = exports;
  1052. /***/ }),
  1053. /* 15 */
  1054. /*!*****************************************************!*\
  1055. !*** ./node_modules/css-loader/dist/runtime/api.js ***!
  1056. \*****************************************************/
  1057. /*! no static exports found */
  1058. /***/ (function(module, exports, __webpack_require__) {
  1059. "use strict";
  1060. /*
  1061. MIT License http://www.opensource.org/licenses/mit-license.php
  1062. Author Tobias Koppers @sokra
  1063. */
  1064. // css base code, injected by the css-loader
  1065. // eslint-disable-next-line func-names
  1066. module.exports = function (useSourceMap) {
  1067. var list = []; // return the list of modules as css string
  1068. list.toString = function toString() {
  1069. return this.map(function (item) {
  1070. var content = cssWithMappingToString(item, useSourceMap);
  1071. if (item[2]) {
  1072. return "@media ".concat(item[2], " {").concat(content, "}");
  1073. }
  1074. return content;
  1075. }).join('');
  1076. }; // import a list of modules into the list
  1077. // eslint-disable-next-line func-names
  1078. list.i = function (modules, mediaQuery, dedupe) {
  1079. if (typeof modules === 'string') {
  1080. // eslint-disable-next-line no-param-reassign
  1081. modules = [[null, modules, '']];
  1082. }
  1083. var alreadyImportedModules = {};
  1084. if (dedupe) {
  1085. for (var i = 0; i < this.length; i++) {
  1086. // eslint-disable-next-line prefer-destructuring
  1087. var id = this[i][0];
  1088. if (id != null) {
  1089. alreadyImportedModules[id] = true;
  1090. }
  1091. }
  1092. }
  1093. for (var _i = 0; _i < modules.length; _i++) {
  1094. var item = [].concat(modules[_i]);
  1095. if (dedupe && alreadyImportedModules[item[0]]) {
  1096. // eslint-disable-next-line no-continue
  1097. continue;
  1098. }
  1099. if (mediaQuery) {
  1100. if (!item[2]) {
  1101. item[2] = mediaQuery;
  1102. } else {
  1103. item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
  1104. }
  1105. }
  1106. list.push(item);
  1107. }
  1108. };
  1109. return list;
  1110. };
  1111. function cssWithMappingToString(item, useSourceMap) {
  1112. var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
  1113. var cssMapping = item[3];
  1114. if (!cssMapping) {
  1115. return content;
  1116. }
  1117. if (useSourceMap && typeof btoa === 'function') {
  1118. var sourceMapping = toComment(cssMapping);
  1119. var sourceURLs = cssMapping.sources.map(function (source) {
  1120. return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */");
  1121. });
  1122. return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
  1123. }
  1124. return [content].join('\n');
  1125. } // Adapted from convert-source-map (MIT)
  1126. function toComment(sourceMap) {
  1127. // eslint-disable-next-line no-undef
  1128. var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
  1129. var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
  1130. return "/*# ".concat(data, " */");
  1131. }
  1132. /***/ }),
  1133. /* 16 */
  1134. /*!**************************************************************************!*\
  1135. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/app-plus/getUrl.js ***!
  1136. \**************************************************************************/
  1137. /*! no static exports found */
  1138. /***/ (function(module, exports, __webpack_require__) {
  1139. "use strict";
  1140. module.exports = function (url, options) {
  1141. if (!options) {
  1142. // eslint-disable-next-line no-param-reassign
  1143. options = {}
  1144. } // eslint-disable-next-line no-underscore-dangle, no-param-reassign
  1145. url = url && url.__esModule ? url.default : url
  1146. if (typeof url !== 'string') {
  1147. return url
  1148. } // If url is already wrapped in quotes, remove them
  1149. if (/^['"].*['"]$/.test(url)) {
  1150. // eslint-disable-next-line no-param-reassign
  1151. url = url.slice(1, -1)
  1152. }
  1153. if (options.hash) {
  1154. // eslint-disable-next-line no-param-reassign
  1155. url += options.hash
  1156. } // Should url be wrapped?
  1157. // See https://drafts.csswg.org/css-values-3/#urls
  1158. if (/["'() \t\n]/.test(url) || options.needQuotes) {
  1159. return '"'.concat(url.replace(/"/g, '\\"').replace(/\n/g, '\\n'), '"')
  1160. }
  1161. if (url.indexOf('/') === 0) {
  1162. return url.substr(1)
  1163. }
  1164. return url
  1165. }
  1166. /***/ }),
  1167. /* 17 */
  1168. /*!**************************************************************************************!*\
  1169. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/images/layers.png ***!
  1170. \**************************************************************************************/
  1171. /*! no static exports found */
  1172. /***/ (function(module, exports) {
  1173. module.exports = "/node-modules/leaflet/dist/images/layers.png";
  1174. /***/ }),
  1175. /* 18 */
  1176. /*!*****************************************************************************************!*\
  1177. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/images/layers-2x.png ***!
  1178. \*****************************************************************************************/
  1179. /*! no static exports found */
  1180. /***/ (function(module, exports) {
  1181. module.exports = "/node-modules/leaflet/dist/images/layers-2x.png";
  1182. /***/ }),
  1183. /* 19 */
  1184. /*!*******************************************************************************************!*\
  1185. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/images/marker-icon.png ***!
  1186. \*******************************************************************************************/
  1187. /*! no static exports found */
  1188. /***/ (function(module, exports) {
  1189. module.exports = "/node-modules/leaflet/dist/images/marker-icon.png";
  1190. /***/ }),
  1191. /* 20 */
  1192. /*!********************************************************************************************************!*\
  1193. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js ***!
  1194. \********************************************************************************************************/
  1195. /*! exports provided: default */
  1196. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1197. "use strict";
  1198. __webpack_require__.r(__webpack_exports__);
  1199. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addStylesClient; });
  1200. /* harmony import */ var _listToStyles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./listToStyles */ 21);
  1201. /*
  1202. MIT License http://www.opensource.org/licenses/mit-license.php
  1203. Author Tobias Koppers @sokra
  1204. Modified by Evan You @yyx990803
  1205. */
  1206. var hasDocument = typeof document !== 'undefined'
  1207. if (typeof DEBUG !== 'undefined' && DEBUG) {
  1208. if (!hasDocument) {
  1209. throw new Error(
  1210. 'vue-style-loader cannot be used in a non-browser environment. ' +
  1211. "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
  1212. ) }
  1213. }
  1214. /*
  1215. type StyleObject = {
  1216. id: number;
  1217. parts: Array<StyleObjectPart>
  1218. }
  1219. type StyleObjectPart = {
  1220. css: string;
  1221. media: string;
  1222. sourceMap: ?string
  1223. }
  1224. */
  1225. var stylesInDom = {/*
  1226. [id: number]: {
  1227. id: number,
  1228. refs: number,
  1229. parts: Array<(obj?: StyleObjectPart) => void>
  1230. }
  1231. */}
  1232. var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
  1233. var singletonElement = null
  1234. var singletonCounter = 0
  1235. var isProduction = false
  1236. var noop = function () {}
  1237. var options = null
  1238. var ssrIdKey = 'data-vue-ssr-id'
  1239. // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
  1240. // tags it will allow on a page
  1241. var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
  1242. function addStylesClient (parentId, list, _isProduction, _options) {
  1243. isProduction = _isProduction
  1244. options = _options || {}
  1245. var styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, list)
  1246. addStylesToDom(styles)
  1247. return function update (newList) {
  1248. var mayRemove = []
  1249. for (var i = 0; i < styles.length; i++) {
  1250. var item = styles[i]
  1251. var domStyle = stylesInDom[item.id]
  1252. domStyle.refs--
  1253. mayRemove.push(domStyle)
  1254. }
  1255. if (newList) {
  1256. styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, newList)
  1257. addStylesToDom(styles)
  1258. } else {
  1259. styles = []
  1260. }
  1261. for (var i = 0; i < mayRemove.length; i++) {
  1262. var domStyle = mayRemove[i]
  1263. if (domStyle.refs === 0) {
  1264. for (var j = 0; j < domStyle.parts.length; j++) {
  1265. domStyle.parts[j]()
  1266. }
  1267. delete stylesInDom[domStyle.id]
  1268. }
  1269. }
  1270. }
  1271. }
  1272. function addStylesToDom (styles /* Array<StyleObject> */) {
  1273. for (var i = 0; i < styles.length; i++) {
  1274. var item = styles[i]
  1275. var domStyle = stylesInDom[item.id]
  1276. if (domStyle) {
  1277. domStyle.refs++
  1278. for (var j = 0; j < domStyle.parts.length; j++) {
  1279. domStyle.parts[j](item.parts[j])
  1280. }
  1281. for (; j < item.parts.length; j++) {
  1282. domStyle.parts.push(addStyle(item.parts[j]))
  1283. }
  1284. if (domStyle.parts.length > item.parts.length) {
  1285. domStyle.parts.length = item.parts.length
  1286. }
  1287. } else {
  1288. var parts = []
  1289. for (var j = 0; j < item.parts.length; j++) {
  1290. parts.push(addStyle(item.parts[j]))
  1291. }
  1292. stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
  1293. }
  1294. }
  1295. }
  1296. function createStyleElement () {
  1297. var styleElement = document.createElement('style')
  1298. styleElement.type = 'text/css'
  1299. head.appendChild(styleElement)
  1300. return styleElement
  1301. }
  1302. function addStyle (obj /* StyleObjectPart */) {
  1303. var update, remove
  1304. var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]')
  1305. if (styleElement) {
  1306. if (isProduction) {
  1307. // has SSR styles and in production mode.
  1308. // simply do nothing.
  1309. return noop
  1310. } else {
  1311. // has SSR styles but in dev mode.
  1312. // for some reason Chrome can't handle source map in server-rendered
  1313. // style tags - source maps in <style> only works if the style tag is
  1314. // created and inserted dynamically. So we remove the server rendered
  1315. // styles and inject new ones.
  1316. styleElement.parentNode.removeChild(styleElement)
  1317. }
  1318. }
  1319. if (isOldIE) {
  1320. // use singleton mode for IE9.
  1321. var styleIndex = singletonCounter++
  1322. styleElement = singletonElement || (singletonElement = createStyleElement())
  1323. update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
  1324. remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
  1325. } else {
  1326. // use multi-style-tag mode in all other cases
  1327. styleElement = createStyleElement()
  1328. update = applyToTag.bind(null, styleElement)
  1329. remove = function () {
  1330. styleElement.parentNode.removeChild(styleElement)
  1331. }
  1332. }
  1333. update(obj)
  1334. return function updateStyle (newObj /* StyleObjectPart */) {
  1335. if (newObj) {
  1336. if (newObj.css === obj.css &&
  1337. newObj.media === obj.media &&
  1338. newObj.sourceMap === obj.sourceMap) {
  1339. return
  1340. }
  1341. update(obj = newObj)
  1342. } else {
  1343. remove()
  1344. }
  1345. }
  1346. }
  1347. var replaceText = (function () {
  1348. var textStore = []
  1349. return function (index, replacement) {
  1350. textStore[index] = replacement
  1351. return textStore.filter(Boolean).join('\n')
  1352. }
  1353. })()
  1354. function applyToSingletonTag (styleElement, index, remove, obj) {
  1355. var css = remove ? '' : processCss(obj.css) // fixed by xxxxxx
  1356. if (styleElement.styleSheet) {
  1357. styleElement.styleSheet.cssText = replaceText(index, css)
  1358. } else {
  1359. var cssNode = document.createTextNode(css)
  1360. var childNodes = styleElement.childNodes
  1361. if (childNodes[index]) styleElement.removeChild(childNodes[index])
  1362. if (childNodes.length) {
  1363. styleElement.insertBefore(cssNode, childNodes[index])
  1364. } else {
  1365. styleElement.appendChild(cssNode)
  1366. }
  1367. }
  1368. }
  1369. function applyToTag (styleElement, obj) {
  1370. var css = processCss(obj.css) // fixed by xxxxxx
  1371. var media = obj.media
  1372. var sourceMap = obj.sourceMap
  1373. if (media) {
  1374. styleElement.setAttribute('media', media)
  1375. }
  1376. if (options.ssrId) {
  1377. styleElement.setAttribute(ssrIdKey, obj.id)
  1378. }
  1379. if (sourceMap) {
  1380. // https://developer.chrome.com/devtools/docs/javascript-debugging
  1381. // this makes source maps inside style tags work properly in Chrome
  1382. css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
  1383. // http://stackoverflow.com/a/26603875
  1384. css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
  1385. }
  1386. if (styleElement.styleSheet) {
  1387. styleElement.styleSheet.cssText = css
  1388. } else {
  1389. while (styleElement.firstChild) {
  1390. styleElement.removeChild(styleElement.firstChild)
  1391. }
  1392. styleElement.appendChild(document.createTextNode(css))
  1393. }
  1394. }
  1395. //fixed by xxxxxx
  1396. var UPX_RE = /\b([+-]?\d+(\.\d+)?)[r|u]px\b/g
  1397. var VAR_STATUS_BAR_HEIGHT = /var\(--status-bar-height\)/gi
  1398. var VAR_WINDOW_TOP = /var\(--window-top\)/gi
  1399. var VAR_WINDOW_BOTTOM = /var\(--window-bottom\)/gi
  1400. var VAR_WINDOW_LEFT = /var\(--window-left\)/gi
  1401. var VAR_WINDOW_RIGHT = /var\(--window-right\)/gi
  1402. var statusBarHeight = false
  1403. function processCss(css) {
  1404. if (!uni.canIUse('css.var')) { //不支持 css 变量
  1405. if (statusBarHeight === false) {
  1406. statusBarHeight = plus.navigator.getStatusbarHeight()
  1407. }
  1408. var offset = {
  1409. statusBarHeight: statusBarHeight,
  1410. top: window.__WINDOW_TOP || 0,
  1411. bottom: window.__WINDOW_BOTTOM || 0
  1412. }
  1413. css = css.replace(VAR_STATUS_BAR_HEIGHT, offset.statusBarHeight + 'px')
  1414. .replace(VAR_WINDOW_TOP, offset.top + 'px')
  1415. .replace(VAR_WINDOW_BOTTOM, offset.bottom + 'px')
  1416. .replace(VAR_WINDOW_LEFT, '0px')
  1417. .replace(VAR_WINDOW_RIGHT, '0px')
  1418. }
  1419. return css.replace(/\{[\s\S]+?\}|@media.+?\{/g, function (css) {
  1420. return css.replace(UPX_RE, function (a, b) {
  1421. return uni.upx2px(b) + 'px'
  1422. })
  1423. })
  1424. }
  1425. /***/ }),
  1426. /* 21 */
  1427. /*!*****************************************************************************************************!*\
  1428. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/listToStyles.js ***!
  1429. \*****************************************************************************************************/
  1430. /*! exports provided: default */
  1431. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1432. "use strict";
  1433. __webpack_require__.r(__webpack_exports__);
  1434. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return listToStyles; });
  1435. /**
  1436. * Translates the list format produced by css-loader into something
  1437. * easier to manipulate.
  1438. */
  1439. function listToStyles (parentId, list) {
  1440. var styles = []
  1441. var newStyles = {}
  1442. for (var i = 0; i < list.length; i++) {
  1443. var item = list[i]
  1444. var id = item[0]
  1445. var css = item[1]
  1446. var media = item[2]
  1447. var sourceMap = item[3]
  1448. var part = {
  1449. id: parentId + ':' + i,
  1450. css: css,
  1451. media: media,
  1452. sourceMap: sourceMap
  1453. }
  1454. if (!newStyles[id]) {
  1455. styles.push(newStyles[id] = { id: id, parts: [part] })
  1456. } else {
  1457. newStyles[id].parts.push(part)
  1458. }
  1459. }
  1460. return styles
  1461. }
  1462. /***/ }),
  1463. /* 22 */
  1464. /*!**********************************************************!*\
  1465. !*** D:/Work2/Orienteering/TrackOffical/grpc/base_pb.js ***!
  1466. \**********************************************************/
  1467. /*! no static exports found */
  1468. /***/ (function(module, exports, __webpack_require__) {
  1469. // source: base.proto
  1470. /**
  1471. * @fileoverview
  1472. * @enhanceable
  1473. * @suppress {missingRequire} reports error on implicit type usages.
  1474. * @suppress {messageConventions} JS Compiler reports an error if a variable or
  1475. * field starts with 'MSG_' and isn't a translatable message.
  1476. * @public
  1477. */
  1478. // GENERATED CODE -- DO NOT EDIT!
  1479. /* eslint-disable */
  1480. // @ts-nocheck
  1481. var jspb = __webpack_require__(/*! google-protobuf */ 23);
  1482. var goog = jspb;
  1483. var global = function () {
  1484. return this || window || global || self || Function('return this')();
  1485. }.call(null);
  1486. var google_protobuf_timestamp_pb = __webpack_require__(/*! google-protobuf/google/protobuf/timestamp_pb.js */ 25);
  1487. goog.object.extend(proto, google_protobuf_timestamp_pb);
  1488. goog.exportSymbol('proto.base.v1.CType', null, global);
  1489. goog.exportSymbol('proto.base.v1.ControlInfoList', null, global);
  1490. goog.exportSymbol('proto.base.v1.ControlPoint', null, global);
  1491. goog.exportSymbol('proto.base.v1.ControlPointInfo', null, global);
  1492. goog.exportSymbol('proto.base.v1.ControlPointSimple', null, global);
  1493. goog.exportSymbol('proto.base.v1.CriterionType', null, global);
  1494. goog.exportSymbol('proto.base.v1.DefaultReply', null, global);
  1495. goog.exportSymbol('proto.base.v1.DefaultRequest', null, global);
  1496. goog.exportSymbol('proto.base.v1.ErrorCode', null, global);
  1497. goog.exportSymbol('proto.base.v1.GameGpsInfo', null, global);
  1498. goog.exportSymbol('proto.base.v1.IdRequest', null, global);
  1499. goog.exportSymbol('proto.base.v1.Image', null, global);
  1500. goog.exportSymbol('proto.base.v1.LoginSource', null, global);
  1501. goog.exportSymbol('proto.base.v1.MapRoute', null, global);
  1502. goog.exportSymbol('proto.base.v1.NetImage', null, global);
  1503. goog.exportSymbol('proto.base.v1.Position', null, global);
  1504. goog.exportSymbol('proto.base.v1.ProjectContentType', null, global);
  1505. goog.exportSymbol('proto.base.v1.Region', null, global);
  1506. goog.exportSymbol('proto.base.v1.ShopList', null, global);
  1507. goog.exportSymbol('proto.base.v1.ShopType', null, global);
  1508. goog.exportSymbol('proto.base.v1.SignInReply', null, global);
  1509. goog.exportSymbol('proto.base.v1.SmsType', null, global);
  1510. goog.exportSymbol('proto.base.v1.StatusEditRequest', null, global);
  1511. goog.exportSymbol('proto.base.v1.StatusType', null, global);
  1512. goog.exportSymbol('proto.base.v1.User', null, global);
  1513. goog.exportSymbol('proto.base.v1.User.Sex', null, global);
  1514. goog.exportSymbol('proto.base.v1.UserType', null, global);
  1515. /**
  1516. * Generated by JsPbCodeGenerator.
  1517. * @param {Array=} opt_data Optional initial data array, typically from a
  1518. * server response, or constructed directly in Javascript. The array is used
  1519. * in place and becomes part of the constructed object. It is not cloned.
  1520. * If no data is provided, the constructed object will be empty, but still
  1521. * valid.
  1522. * @extends {jspb.Message}
  1523. * @constructor
  1524. */
  1525. proto.base.v1.NetImage = function (opt_data) {
  1526. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1527. };
  1528. goog.inherits(proto.base.v1.NetImage, jspb.Message);
  1529. if (goog.DEBUG && !COMPILED) {
  1530. /**
  1531. * @public
  1532. * @override
  1533. */
  1534. proto.base.v1.NetImage.displayName = 'proto.base.v1.NetImage';
  1535. }
  1536. /**
  1537. * Generated by JsPbCodeGenerator.
  1538. * @param {Array=} opt_data Optional initial data array, typically from a
  1539. * server response, or constructed directly in Javascript. The array is used
  1540. * in place and becomes part of the constructed object. It is not cloned.
  1541. * If no data is provided, the constructed object will be empty, but still
  1542. * valid.
  1543. * @extends {jspb.Message}
  1544. * @constructor
  1545. */
  1546. proto.base.v1.User = function (opt_data) {
  1547. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1548. };
  1549. goog.inherits(proto.base.v1.User, jspb.Message);
  1550. if (goog.DEBUG && !COMPILED) {
  1551. /**
  1552. * @public
  1553. * @override
  1554. */
  1555. proto.base.v1.User.displayName = 'proto.base.v1.User';
  1556. }
  1557. /**
  1558. * Generated by JsPbCodeGenerator.
  1559. * @param {Array=} opt_data Optional initial data array, typically from a
  1560. * server response, or constructed directly in Javascript. The array is used
  1561. * in place and becomes part of the constructed object. It is not cloned.
  1562. * If no data is provided, the constructed object will be empty, but still
  1563. * valid.
  1564. * @extends {jspb.Message}
  1565. * @constructor
  1566. */
  1567. proto.base.v1.GameGpsInfo = function (opt_data) {
  1568. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1569. };
  1570. goog.inherits(proto.base.v1.GameGpsInfo, jspb.Message);
  1571. if (goog.DEBUG && !COMPILED) {
  1572. /**
  1573. * @public
  1574. * @override
  1575. */
  1576. proto.base.v1.GameGpsInfo.displayName = 'proto.base.v1.GameGpsInfo';
  1577. }
  1578. /**
  1579. * Generated by JsPbCodeGenerator.
  1580. * @param {Array=} opt_data Optional initial data array, typically from a
  1581. * server response, or constructed directly in Javascript. The array is used
  1582. * in place and becomes part of the constructed object. It is not cloned.
  1583. * If no data is provided, the constructed object will be empty, but still
  1584. * valid.
  1585. * @extends {jspb.Message}
  1586. * @constructor
  1587. */
  1588. proto.base.v1.SignInReply = function (opt_data) {
  1589. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1590. };
  1591. goog.inherits(proto.base.v1.SignInReply, jspb.Message);
  1592. if (goog.DEBUG && !COMPILED) {
  1593. /**
  1594. * @public
  1595. * @override
  1596. */
  1597. proto.base.v1.SignInReply.displayName = 'proto.base.v1.SignInReply';
  1598. }
  1599. /**
  1600. * Generated by JsPbCodeGenerator.
  1601. * @param {Array=} opt_data Optional initial data array, typically from a
  1602. * server response, or constructed directly in Javascript. The array is used
  1603. * in place and becomes part of the constructed object. It is not cloned.
  1604. * If no data is provided, the constructed object will be empty, but still
  1605. * valid.
  1606. * @extends {jspb.Message}
  1607. * @constructor
  1608. */
  1609. proto.base.v1.MapRoute = function (opt_data) {
  1610. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1611. };
  1612. goog.inherits(proto.base.v1.MapRoute, jspb.Message);
  1613. if (goog.DEBUG && !COMPILED) {
  1614. /**
  1615. * @public
  1616. * @override
  1617. */
  1618. proto.base.v1.MapRoute.displayName = 'proto.base.v1.MapRoute';
  1619. }
  1620. /**
  1621. * Generated by JsPbCodeGenerator.
  1622. * @param {Array=} opt_data Optional initial data array, typically from a
  1623. * server response, or constructed directly in Javascript. The array is used
  1624. * in place and becomes part of the constructed object. It is not cloned.
  1625. * If no data is provided, the constructed object will be empty, but still
  1626. * valid.
  1627. * @extends {jspb.Message}
  1628. * @constructor
  1629. */
  1630. proto.base.v1.Region = function (opt_data) {
  1631. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1632. };
  1633. goog.inherits(proto.base.v1.Region, jspb.Message);
  1634. if (goog.DEBUG && !COMPILED) {
  1635. /**
  1636. * @public
  1637. * @override
  1638. */
  1639. proto.base.v1.Region.displayName = 'proto.base.v1.Region';
  1640. }
  1641. /**
  1642. * Generated by JsPbCodeGenerator.
  1643. * @param {Array=} opt_data Optional initial data array, typically from a
  1644. * server response, or constructed directly in Javascript. The array is used
  1645. * in place and becomes part of the constructed object. It is not cloned.
  1646. * If no data is provided, the constructed object will be empty, but still
  1647. * valid.
  1648. * @extends {jspb.Message}
  1649. * @constructor
  1650. */
  1651. proto.base.v1.ShopList = function (opt_data) {
  1652. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1653. };
  1654. goog.inherits(proto.base.v1.ShopList, jspb.Message);
  1655. if (goog.DEBUG && !COMPILED) {
  1656. /**
  1657. * @public
  1658. * @override
  1659. */
  1660. proto.base.v1.ShopList.displayName = 'proto.base.v1.ShopList';
  1661. }
  1662. /**
  1663. * Generated by JsPbCodeGenerator.
  1664. * @param {Array=} opt_data Optional initial data array, typically from a
  1665. * server response, or constructed directly in Javascript. The array is used
  1666. * in place and becomes part of the constructed object. It is not cloned.
  1667. * If no data is provided, the constructed object will be empty, but still
  1668. * valid.
  1669. * @extends {jspb.Message}
  1670. * @constructor
  1671. */
  1672. proto.base.v1.ControlInfoList = function (opt_data) {
  1673. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1674. };
  1675. goog.inherits(proto.base.v1.ControlInfoList, jspb.Message);
  1676. if (goog.DEBUG && !COMPILED) {
  1677. /**
  1678. * @public
  1679. * @override
  1680. */
  1681. proto.base.v1.ControlInfoList.displayName = 'proto.base.v1.ControlInfoList';
  1682. }
  1683. /**
  1684. * Generated by JsPbCodeGenerator.
  1685. * @param {Array=} opt_data Optional initial data array, typically from a
  1686. * server response, or constructed directly in Javascript. The array is used
  1687. * in place and becomes part of the constructed object. It is not cloned.
  1688. * If no data is provided, the constructed object will be empty, but still
  1689. * valid.
  1690. * @extends {jspb.Message}
  1691. * @constructor
  1692. */
  1693. proto.base.v1.DefaultReply = function (opt_data) {
  1694. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1695. };
  1696. goog.inherits(proto.base.v1.DefaultReply, jspb.Message);
  1697. if (goog.DEBUG && !COMPILED) {
  1698. /**
  1699. * @public
  1700. * @override
  1701. */
  1702. proto.base.v1.DefaultReply.displayName = 'proto.base.v1.DefaultReply';
  1703. }
  1704. /**
  1705. * Generated by JsPbCodeGenerator.
  1706. * @param {Array=} opt_data Optional initial data array, typically from a
  1707. * server response, or constructed directly in Javascript. The array is used
  1708. * in place and becomes part of the constructed object. It is not cloned.
  1709. * If no data is provided, the constructed object will be empty, but still
  1710. * valid.
  1711. * @extends {jspb.Message}
  1712. * @constructor
  1713. */
  1714. proto.base.v1.IdRequest = function (opt_data) {
  1715. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1716. };
  1717. goog.inherits(proto.base.v1.IdRequest, jspb.Message);
  1718. if (goog.DEBUG && !COMPILED) {
  1719. /**
  1720. * @public
  1721. * @override
  1722. */
  1723. proto.base.v1.IdRequest.displayName = 'proto.base.v1.IdRequest';
  1724. }
  1725. /**
  1726. * Generated by JsPbCodeGenerator.
  1727. * @param {Array=} opt_data Optional initial data array, typically from a
  1728. * server response, or constructed directly in Javascript. The array is used
  1729. * in place and becomes part of the constructed object. It is not cloned.
  1730. * If no data is provided, the constructed object will be empty, but still
  1731. * valid.
  1732. * @extends {jspb.Message}
  1733. * @constructor
  1734. */
  1735. proto.base.v1.DefaultRequest = function (opt_data) {
  1736. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1737. };
  1738. goog.inherits(proto.base.v1.DefaultRequest, jspb.Message);
  1739. if (goog.DEBUG && !COMPILED) {
  1740. /**
  1741. * @public
  1742. * @override
  1743. */
  1744. proto.base.v1.DefaultRequest.displayName = 'proto.base.v1.DefaultRequest';
  1745. }
  1746. /**
  1747. * Generated by JsPbCodeGenerator.
  1748. * @param {Array=} opt_data Optional initial data array, typically from a
  1749. * server response, or constructed directly in Javascript. The array is used
  1750. * in place and becomes part of the constructed object. It is not cloned.
  1751. * If no data is provided, the constructed object will be empty, but still
  1752. * valid.
  1753. * @extends {jspb.Message}
  1754. * @constructor
  1755. */
  1756. proto.base.v1.Position = function (opt_data) {
  1757. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1758. };
  1759. goog.inherits(proto.base.v1.Position, jspb.Message);
  1760. if (goog.DEBUG && !COMPILED) {
  1761. /**
  1762. * @public
  1763. * @override
  1764. */
  1765. proto.base.v1.Position.displayName = 'proto.base.v1.Position';
  1766. }
  1767. /**
  1768. * Generated by JsPbCodeGenerator.
  1769. * @param {Array=} opt_data Optional initial data array, typically from a
  1770. * server response, or constructed directly in Javascript. The array is used
  1771. * in place and becomes part of the constructed object. It is not cloned.
  1772. * If no data is provided, the constructed object will be empty, but still
  1773. * valid.
  1774. * @extends {jspb.Message}
  1775. * @constructor
  1776. */
  1777. proto.base.v1.ControlPointInfo = function (opt_data) {
  1778. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1779. };
  1780. goog.inherits(proto.base.v1.ControlPointInfo, jspb.Message);
  1781. if (goog.DEBUG && !COMPILED) {
  1782. /**
  1783. * @public
  1784. * @override
  1785. */
  1786. proto.base.v1.ControlPointInfo.displayName = 'proto.base.v1.ControlPointInfo';
  1787. }
  1788. /**
  1789. * Generated by JsPbCodeGenerator.
  1790. * @param {Array=} opt_data Optional initial data array, typically from a
  1791. * server response, or constructed directly in Javascript. The array is used
  1792. * in place and becomes part of the constructed object. It is not cloned.
  1793. * If no data is provided, the constructed object will be empty, but still
  1794. * valid.
  1795. * @extends {jspb.Message}
  1796. * @constructor
  1797. */
  1798. proto.base.v1.Image = function (opt_data) {
  1799. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1800. };
  1801. goog.inherits(proto.base.v1.Image, jspb.Message);
  1802. if (goog.DEBUG && !COMPILED) {
  1803. /**
  1804. * @public
  1805. * @override
  1806. */
  1807. proto.base.v1.Image.displayName = 'proto.base.v1.Image';
  1808. }
  1809. /**
  1810. * Generated by JsPbCodeGenerator.
  1811. * @param {Array=} opt_data Optional initial data array, typically from a
  1812. * server response, or constructed directly in Javascript. The array is used
  1813. * in place and becomes part of the constructed object. It is not cloned.
  1814. * If no data is provided, the constructed object will be empty, but still
  1815. * valid.
  1816. * @extends {jspb.Message}
  1817. * @constructor
  1818. */
  1819. proto.base.v1.StatusEditRequest = function (opt_data) {
  1820. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  1821. };
  1822. goog.inherits(proto.base.v1.StatusEditRequest, jspb.Message);
  1823. if (goog.DEBUG && !COMPILED) {
  1824. /**
  1825. * @public
  1826. * @override
  1827. */
  1828. proto.base.v1.StatusEditRequest.displayName = 'proto.base.v1.StatusEditRequest';
  1829. }
  1830. /**
  1831. * Generated by JsPbCodeGenerator.
  1832. * @param {Array=} opt_data Optional initial data array, typically from a
  1833. * server response, or constructed directly in Javascript. The array is used
  1834. * in place and becomes part of the constructed object. It is not cloned.
  1835. * If no data is provided, the constructed object will be empty, but still
  1836. * valid.
  1837. * @extends {jspb.Message}
  1838. * @constructor
  1839. */
  1840. proto.base.v1.ControlPoint = function (opt_data) {
  1841. jspb.Message.initialize(this, opt_data, 0, -1, proto.base.v1.ControlPoint.repeatedFields_, null);
  1842. };
  1843. goog.inherits(proto.base.v1.ControlPoint, jspb.Message);
  1844. if (goog.DEBUG && !COMPILED) {
  1845. /**
  1846. * @public
  1847. * @override
  1848. */
  1849. proto.base.v1.ControlPoint.displayName = 'proto.base.v1.ControlPoint';
  1850. }
  1851. /**
  1852. * Generated by JsPbCodeGenerator.
  1853. * @param {Array=} opt_data Optional initial data array, typically from a
  1854. * server response, or constructed directly in Javascript. The array is used
  1855. * in place and becomes part of the constructed object. It is not cloned.
  1856. * If no data is provided, the constructed object will be empty, but still
  1857. * valid.
  1858. * @extends {jspb.Message}
  1859. * @constructor
  1860. */
  1861. proto.base.v1.ControlPointSimple = function (opt_data) {
  1862. jspb.Message.initialize(this, opt_data, 0, -1, proto.base.v1.ControlPointSimple.repeatedFields_, null);
  1863. };
  1864. goog.inherits(proto.base.v1.ControlPointSimple, jspb.Message);
  1865. if (goog.DEBUG && !COMPILED) {
  1866. /**
  1867. * @public
  1868. * @override
  1869. */
  1870. proto.base.v1.ControlPointSimple.displayName = 'proto.base.v1.ControlPointSimple';
  1871. }
  1872. if (jspb.Message.GENERATE_TO_OBJECT) {
  1873. /**
  1874. * Creates an object representation of this proto.
  1875. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  1876. * Optional fields that are not set will be set to undefined.
  1877. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  1878. * For the list of reserved names please see:
  1879. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  1880. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  1881. * JSPB instance for transitional soy proto support:
  1882. * http://goto/soy-param-migration
  1883. * @return {!Object}
  1884. */
  1885. proto.base.v1.NetImage.prototype.toObject = function (opt_includeInstance) {
  1886. return proto.base.v1.NetImage.toObject(opt_includeInstance, this);
  1887. };
  1888. /**
  1889. * Static version of the {@see toObject} method.
  1890. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  1891. * the JSPB instance for transitional soy proto support:
  1892. * http://goto/soy-param-migration
  1893. * @param {!proto.base.v1.NetImage} msg The msg instance to transform.
  1894. * @return {!Object}
  1895. * @suppress {unusedLocalVariables} f is only used for nested messages
  1896. */
  1897. proto.base.v1.NetImage.toObject = function (includeInstance, msg) {
  1898. var f,
  1899. obj = {
  1900. url: jspb.Message.getFieldWithDefault(msg, 1, ""),
  1901. md5: msg.getMd5_asB64()
  1902. };
  1903. if (includeInstance) {
  1904. obj.$jspbMessageInstance = msg;
  1905. }
  1906. return obj;
  1907. };
  1908. }
  1909. /**
  1910. * Deserializes binary data (in protobuf wire format).
  1911. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  1912. * @return {!proto.base.v1.NetImage}
  1913. */
  1914. proto.base.v1.NetImage.deserializeBinary = function (bytes) {
  1915. var reader = new jspb.BinaryReader(bytes);
  1916. var msg = new proto.base.v1.NetImage();
  1917. return proto.base.v1.NetImage.deserializeBinaryFromReader(msg, reader);
  1918. };
  1919. /**
  1920. * Deserializes binary data (in protobuf wire format) from the
  1921. * given reader into the given message object.
  1922. * @param {!proto.base.v1.NetImage} msg The message object to deserialize into.
  1923. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  1924. * @return {!proto.base.v1.NetImage}
  1925. */
  1926. proto.base.v1.NetImage.deserializeBinaryFromReader = function (msg, reader) {
  1927. while (reader.nextField()) {
  1928. if (reader.isEndGroup()) {
  1929. break;
  1930. }
  1931. var field = reader.getFieldNumber();
  1932. switch (field) {
  1933. case 1:
  1934. var value = /** @type {string} */reader.readString();
  1935. msg.setUrl(value);
  1936. break;
  1937. case 2:
  1938. var value = /** @type {!Uint8Array} */reader.readBytes();
  1939. msg.setMd5(value);
  1940. break;
  1941. default:
  1942. reader.skipField();
  1943. break;
  1944. }
  1945. }
  1946. return msg;
  1947. };
  1948. /**
  1949. * Serializes the message to binary data (in protobuf wire format).
  1950. * @return {!Uint8Array}
  1951. */
  1952. proto.base.v1.NetImage.prototype.serializeBinary = function () {
  1953. var writer = new jspb.BinaryWriter();
  1954. proto.base.v1.NetImage.serializeBinaryToWriter(this, writer);
  1955. return writer.getResultBuffer();
  1956. };
  1957. /**
  1958. * Serializes the given message to binary data (in protobuf wire
  1959. * format), writing to the given BinaryWriter.
  1960. * @param {!proto.base.v1.NetImage} message
  1961. * @param {!jspb.BinaryWriter} writer
  1962. * @suppress {unusedLocalVariables} f is only used for nested messages
  1963. */
  1964. proto.base.v1.NetImage.serializeBinaryToWriter = function (message, writer) {
  1965. var f = undefined;
  1966. f = message.getUrl();
  1967. if (f.length > 0) {
  1968. writer.writeString(1, f);
  1969. }
  1970. f = message.getMd5_asU8();
  1971. if (f.length > 0) {
  1972. writer.writeBytes(2, f);
  1973. }
  1974. };
  1975. /**
  1976. * optional string url = 1;
  1977. * @return {string}
  1978. */
  1979. proto.base.v1.NetImage.prototype.getUrl = function () {
  1980. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, "")
  1981. );
  1982. };
  1983. /**
  1984. * @param {string} value
  1985. * @return {!proto.base.v1.NetImage} returns this
  1986. */
  1987. proto.base.v1.NetImage.prototype.setUrl = function (value) {
  1988. return jspb.Message.setProto3StringField(this, 1, value);
  1989. };
  1990. /**
  1991. * optional bytes md5 = 2;
  1992. * @return {string}
  1993. */
  1994. proto.base.v1.NetImage.prototype.getMd5 = function () {
  1995. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  1996. );
  1997. };
  1998. /**
  1999. * optional bytes md5 = 2;
  2000. * This is a type-conversion wrapper around `getMd5()`
  2001. * @return {string}
  2002. */
  2003. proto.base.v1.NetImage.prototype.getMd5_asB64 = function () {
  2004. return (/** @type {string} */jspb.Message.bytesAsB64(this.getMd5())
  2005. );
  2006. };
  2007. /**
  2008. * optional bytes md5 = 2;
  2009. * Note that Uint8Array is not supported on all browsers.
  2010. * @see http://caniuse.com/Uint8Array
  2011. * This is a type-conversion wrapper around `getMd5()`
  2012. * @return {!Uint8Array}
  2013. */
  2014. proto.base.v1.NetImage.prototype.getMd5_asU8 = function () {
  2015. return (/** @type {!Uint8Array} */jspb.Message.bytesAsU8(this.getMd5())
  2016. );
  2017. };
  2018. /**
  2019. * @param {!(string|Uint8Array)} value
  2020. * @return {!proto.base.v1.NetImage} returns this
  2021. */
  2022. proto.base.v1.NetImage.prototype.setMd5 = function (value) {
  2023. return jspb.Message.setProto3BytesField(this, 2, value);
  2024. };
  2025. if (jspb.Message.GENERATE_TO_OBJECT) {
  2026. /**
  2027. * Creates an object representation of this proto.
  2028. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2029. * Optional fields that are not set will be set to undefined.
  2030. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2031. * For the list of reserved names please see:
  2032. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2033. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2034. * JSPB instance for transitional soy proto support:
  2035. * http://goto/soy-param-migration
  2036. * @return {!Object}
  2037. */
  2038. proto.base.v1.User.prototype.toObject = function (opt_includeInstance) {
  2039. return proto.base.v1.User.toObject(opt_includeInstance, this);
  2040. };
  2041. /**
  2042. * Static version of the {@see toObject} method.
  2043. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2044. * the JSPB instance for transitional soy proto support:
  2045. * http://goto/soy-param-migration
  2046. * @param {!proto.base.v1.User} msg The msg instance to transform.
  2047. * @return {!Object}
  2048. * @suppress {unusedLocalVariables} f is only used for nested messages
  2049. */
  2050. proto.base.v1.User.toObject = function (includeInstance, msg) {
  2051. var f,
  2052. obj = {};
  2053. if (includeInstance) {
  2054. obj.$jspbMessageInstance = msg;
  2055. }
  2056. return obj;
  2057. };
  2058. }
  2059. /**
  2060. * Deserializes binary data (in protobuf wire format).
  2061. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2062. * @return {!proto.base.v1.User}
  2063. */
  2064. proto.base.v1.User.deserializeBinary = function (bytes) {
  2065. var reader = new jspb.BinaryReader(bytes);
  2066. var msg = new proto.base.v1.User();
  2067. return proto.base.v1.User.deserializeBinaryFromReader(msg, reader);
  2068. };
  2069. /**
  2070. * Deserializes binary data (in protobuf wire format) from the
  2071. * given reader into the given message object.
  2072. * @param {!proto.base.v1.User} msg The message object to deserialize into.
  2073. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2074. * @return {!proto.base.v1.User}
  2075. */
  2076. proto.base.v1.User.deserializeBinaryFromReader = function (msg, reader) {
  2077. while (reader.nextField()) {
  2078. if (reader.isEndGroup()) {
  2079. break;
  2080. }
  2081. var field = reader.getFieldNumber();
  2082. switch (field) {
  2083. default:
  2084. reader.skipField();
  2085. break;
  2086. }
  2087. }
  2088. return msg;
  2089. };
  2090. /**
  2091. * Serializes the message to binary data (in protobuf wire format).
  2092. * @return {!Uint8Array}
  2093. */
  2094. proto.base.v1.User.prototype.serializeBinary = function () {
  2095. var writer = new jspb.BinaryWriter();
  2096. proto.base.v1.User.serializeBinaryToWriter(this, writer);
  2097. return writer.getResultBuffer();
  2098. };
  2099. /**
  2100. * Serializes the given message to binary data (in protobuf wire
  2101. * format), writing to the given BinaryWriter.
  2102. * @param {!proto.base.v1.User} message
  2103. * @param {!jspb.BinaryWriter} writer
  2104. * @suppress {unusedLocalVariables} f is only used for nested messages
  2105. */
  2106. proto.base.v1.User.serializeBinaryToWriter = function (message, writer) {
  2107. var f = undefined;
  2108. };
  2109. /**
  2110. * @enum {number}
  2111. */
  2112. proto.base.v1.User.Sex = {
  2113. UNDEFINE: 0,
  2114. MALE: 1,
  2115. FEMALE: 2
  2116. };
  2117. if (jspb.Message.GENERATE_TO_OBJECT) {
  2118. /**
  2119. * Creates an object representation of this proto.
  2120. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2121. * Optional fields that are not set will be set to undefined.
  2122. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2123. * For the list of reserved names please see:
  2124. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2125. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2126. * JSPB instance for transitional soy proto support:
  2127. * http://goto/soy-param-migration
  2128. * @return {!Object}
  2129. */
  2130. proto.base.v1.GameGpsInfo.prototype.toObject = function (opt_includeInstance) {
  2131. return proto.base.v1.GameGpsInfo.toObject(opt_includeInstance, this);
  2132. };
  2133. /**
  2134. * Static version of the {@see toObject} method.
  2135. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2136. * the JSPB instance for transitional soy proto support:
  2137. * http://goto/soy-param-migration
  2138. * @param {!proto.base.v1.GameGpsInfo} msg The msg instance to transform.
  2139. * @return {!Object}
  2140. * @suppress {unusedLocalVariables} f is only used for nested messages
  2141. */
  2142. proto.base.v1.GameGpsInfo.toObject = function (includeInstance, msg) {
  2143. var f,
  2144. obj = {
  2145. uptime: (f = msg.getUptime()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
  2146. longitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),
  2147. latitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0),
  2148. directionradian: jspb.Message.getFloatingPointFieldWithDefault(msg, 4, 0.0)
  2149. };
  2150. if (includeInstance) {
  2151. obj.$jspbMessageInstance = msg;
  2152. }
  2153. return obj;
  2154. };
  2155. }
  2156. /**
  2157. * Deserializes binary data (in protobuf wire format).
  2158. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2159. * @return {!proto.base.v1.GameGpsInfo}
  2160. */
  2161. proto.base.v1.GameGpsInfo.deserializeBinary = function (bytes) {
  2162. var reader = new jspb.BinaryReader(bytes);
  2163. var msg = new proto.base.v1.GameGpsInfo();
  2164. return proto.base.v1.GameGpsInfo.deserializeBinaryFromReader(msg, reader);
  2165. };
  2166. /**
  2167. * Deserializes binary data (in protobuf wire format) from the
  2168. * given reader into the given message object.
  2169. * @param {!proto.base.v1.GameGpsInfo} msg The message object to deserialize into.
  2170. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2171. * @return {!proto.base.v1.GameGpsInfo}
  2172. */
  2173. proto.base.v1.GameGpsInfo.deserializeBinaryFromReader = function (msg, reader) {
  2174. while (reader.nextField()) {
  2175. if (reader.isEndGroup()) {
  2176. break;
  2177. }
  2178. var field = reader.getFieldNumber();
  2179. switch (field) {
  2180. case 1:
  2181. var value = new google_protobuf_timestamp_pb.Timestamp();
  2182. reader.readMessage(value, google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
  2183. msg.setUptime(value);
  2184. break;
  2185. case 2:
  2186. var value = /** @type {number} */reader.readDouble();
  2187. msg.setLongitude(value);
  2188. break;
  2189. case 3:
  2190. var value = /** @type {number} */reader.readDouble();
  2191. msg.setLatitude(value);
  2192. break;
  2193. case 4:
  2194. var value = /** @type {number} */reader.readDouble();
  2195. msg.setDirectionradian(value);
  2196. break;
  2197. default:
  2198. reader.skipField();
  2199. break;
  2200. }
  2201. }
  2202. return msg;
  2203. };
  2204. /**
  2205. * Serializes the message to binary data (in protobuf wire format).
  2206. * @return {!Uint8Array}
  2207. */
  2208. proto.base.v1.GameGpsInfo.prototype.serializeBinary = function () {
  2209. var writer = new jspb.BinaryWriter();
  2210. proto.base.v1.GameGpsInfo.serializeBinaryToWriter(this, writer);
  2211. return writer.getResultBuffer();
  2212. };
  2213. /**
  2214. * Serializes the given message to binary data (in protobuf wire
  2215. * format), writing to the given BinaryWriter.
  2216. * @param {!proto.base.v1.GameGpsInfo} message
  2217. * @param {!jspb.BinaryWriter} writer
  2218. * @suppress {unusedLocalVariables} f is only used for nested messages
  2219. */
  2220. proto.base.v1.GameGpsInfo.serializeBinaryToWriter = function (message, writer) {
  2221. var f = undefined;
  2222. f = message.getUptime();
  2223. if (f != null) {
  2224. writer.writeMessage(1, f, google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter);
  2225. }
  2226. f = message.getLongitude();
  2227. if (f !== 0.0) {
  2228. writer.writeDouble(2, f);
  2229. }
  2230. f = message.getLatitude();
  2231. if (f !== 0.0) {
  2232. writer.writeDouble(3, f);
  2233. }
  2234. f = message.getDirectionradian();
  2235. if (f !== 0.0) {
  2236. writer.writeDouble(4, f);
  2237. }
  2238. };
  2239. /**
  2240. * optional google.protobuf.Timestamp upTime = 1;
  2241. * @return {?proto.google.protobuf.Timestamp}
  2242. */
  2243. proto.base.v1.GameGpsInfo.prototype.getUptime = function () {
  2244. return (/** @type{?proto.google.protobuf.Timestamp} */
  2245. jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1)
  2246. );
  2247. };
  2248. /**
  2249. * @param {?proto.google.protobuf.Timestamp|undefined} value
  2250. * @return {!proto.base.v1.GameGpsInfo} returns this
  2251. */
  2252. proto.base.v1.GameGpsInfo.prototype.setUptime = function (value) {
  2253. return jspb.Message.setWrapperField(this, 1, value);
  2254. };
  2255. /**
  2256. * Clears the message field making it undefined.
  2257. * @return {!proto.base.v1.GameGpsInfo} returns this
  2258. */
  2259. proto.base.v1.GameGpsInfo.prototype.clearUptime = function () {
  2260. return this.setUptime(undefined);
  2261. };
  2262. /**
  2263. * Returns whether this field is set.
  2264. * @return {boolean}
  2265. */
  2266. proto.base.v1.GameGpsInfo.prototype.hasUptime = function () {
  2267. return jspb.Message.getField(this, 1) != null;
  2268. };
  2269. /**
  2270. * optional double longitude = 2;
  2271. * @return {number}
  2272. */
  2273. proto.base.v1.GameGpsInfo.prototype.getLongitude = function () {
  2274. return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)
  2275. );
  2276. };
  2277. /**
  2278. * @param {number} value
  2279. * @return {!proto.base.v1.GameGpsInfo} returns this
  2280. */
  2281. proto.base.v1.GameGpsInfo.prototype.setLongitude = function (value) {
  2282. return jspb.Message.setProto3FloatField(this, 2, value);
  2283. };
  2284. /**
  2285. * optional double latitude = 3;
  2286. * @return {number}
  2287. */
  2288. proto.base.v1.GameGpsInfo.prototype.getLatitude = function () {
  2289. return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0)
  2290. );
  2291. };
  2292. /**
  2293. * @param {number} value
  2294. * @return {!proto.base.v1.GameGpsInfo} returns this
  2295. */
  2296. proto.base.v1.GameGpsInfo.prototype.setLatitude = function (value) {
  2297. return jspb.Message.setProto3FloatField(this, 3, value);
  2298. };
  2299. /**
  2300. * optional double directionRadian = 4;
  2301. * @return {number}
  2302. */
  2303. proto.base.v1.GameGpsInfo.prototype.getDirectionradian = function () {
  2304. return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 4, 0.0)
  2305. );
  2306. };
  2307. /**
  2308. * @param {number} value
  2309. * @return {!proto.base.v1.GameGpsInfo} returns this
  2310. */
  2311. proto.base.v1.GameGpsInfo.prototype.setDirectionradian = function (value) {
  2312. return jspb.Message.setProto3FloatField(this, 4, value);
  2313. };
  2314. if (jspb.Message.GENERATE_TO_OBJECT) {
  2315. /**
  2316. * Creates an object representation of this proto.
  2317. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2318. * Optional fields that are not set will be set to undefined.
  2319. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2320. * For the list of reserved names please see:
  2321. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2322. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2323. * JSPB instance for transitional soy proto support:
  2324. * http://goto/soy-param-migration
  2325. * @return {!Object}
  2326. */
  2327. proto.base.v1.SignInReply.prototype.toObject = function (opt_includeInstance) {
  2328. return proto.base.v1.SignInReply.toObject(opt_includeInstance, this);
  2329. };
  2330. /**
  2331. * Static version of the {@see toObject} method.
  2332. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2333. * the JSPB instance for transitional soy proto support:
  2334. * http://goto/soy-param-migration
  2335. * @param {!proto.base.v1.SignInReply} msg The msg instance to transform.
  2336. * @return {!Object}
  2337. * @suppress {unusedLocalVariables} f is only used for nested messages
  2338. */
  2339. proto.base.v1.SignInReply.toObject = function (includeInstance, msg) {
  2340. var f,
  2341. obj = {
  2342. token: jspb.Message.getFieldWithDefault(msg, 1, "")
  2343. };
  2344. if (includeInstance) {
  2345. obj.$jspbMessageInstance = msg;
  2346. }
  2347. return obj;
  2348. };
  2349. }
  2350. /**
  2351. * Deserializes binary data (in protobuf wire format).
  2352. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2353. * @return {!proto.base.v1.SignInReply}
  2354. */
  2355. proto.base.v1.SignInReply.deserializeBinary = function (bytes) {
  2356. var reader = new jspb.BinaryReader(bytes);
  2357. var msg = new proto.base.v1.SignInReply();
  2358. return proto.base.v1.SignInReply.deserializeBinaryFromReader(msg, reader);
  2359. };
  2360. /**
  2361. * Deserializes binary data (in protobuf wire format) from the
  2362. * given reader into the given message object.
  2363. * @param {!proto.base.v1.SignInReply} msg The message object to deserialize into.
  2364. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2365. * @return {!proto.base.v1.SignInReply}
  2366. */
  2367. proto.base.v1.SignInReply.deserializeBinaryFromReader = function (msg, reader) {
  2368. while (reader.nextField()) {
  2369. if (reader.isEndGroup()) {
  2370. break;
  2371. }
  2372. var field = reader.getFieldNumber();
  2373. switch (field) {
  2374. case 1:
  2375. var value = /** @type {string} */reader.readString();
  2376. msg.setToken(value);
  2377. break;
  2378. default:
  2379. reader.skipField();
  2380. break;
  2381. }
  2382. }
  2383. return msg;
  2384. };
  2385. /**
  2386. * Serializes the message to binary data (in protobuf wire format).
  2387. * @return {!Uint8Array}
  2388. */
  2389. proto.base.v1.SignInReply.prototype.serializeBinary = function () {
  2390. var writer = new jspb.BinaryWriter();
  2391. proto.base.v1.SignInReply.serializeBinaryToWriter(this, writer);
  2392. return writer.getResultBuffer();
  2393. };
  2394. /**
  2395. * Serializes the given message to binary data (in protobuf wire
  2396. * format), writing to the given BinaryWriter.
  2397. * @param {!proto.base.v1.SignInReply} message
  2398. * @param {!jspb.BinaryWriter} writer
  2399. * @suppress {unusedLocalVariables} f is only used for nested messages
  2400. */
  2401. proto.base.v1.SignInReply.serializeBinaryToWriter = function (message, writer) {
  2402. var f = undefined;
  2403. f = message.getToken();
  2404. if (f.length > 0) {
  2405. writer.writeString(1, f);
  2406. }
  2407. };
  2408. /**
  2409. * optional string token = 1;
  2410. * @return {string}
  2411. */
  2412. proto.base.v1.SignInReply.prototype.getToken = function () {
  2413. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, "")
  2414. );
  2415. };
  2416. /**
  2417. * @param {string} value
  2418. * @return {!proto.base.v1.SignInReply} returns this
  2419. */
  2420. proto.base.v1.SignInReply.prototype.setToken = function (value) {
  2421. return jspb.Message.setProto3StringField(this, 1, value);
  2422. };
  2423. if (jspb.Message.GENERATE_TO_OBJECT) {
  2424. /**
  2425. * Creates an object representation of this proto.
  2426. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2427. * Optional fields that are not set will be set to undefined.
  2428. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2429. * For the list of reserved names please see:
  2430. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2431. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2432. * JSPB instance for transitional soy proto support:
  2433. * http://goto/soy-param-migration
  2434. * @return {!Object}
  2435. */
  2436. proto.base.v1.MapRoute.prototype.toObject = function (opt_includeInstance) {
  2437. return proto.base.v1.MapRoute.toObject(opt_includeInstance, this);
  2438. };
  2439. /**
  2440. * Static version of the {@see toObject} method.
  2441. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2442. * the JSPB instance for transitional soy proto support:
  2443. * http://goto/soy-param-migration
  2444. * @param {!proto.base.v1.MapRoute} msg The msg instance to transform.
  2445. * @return {!Object}
  2446. * @suppress {unusedLocalVariables} f is only used for nested messages
  2447. */
  2448. proto.base.v1.MapRoute.toObject = function (includeInstance, msg) {
  2449. var f,
  2450. obj = {
  2451. id: jspb.Message.getFieldWithDefault(msg, 1, 0),
  2452. name: jspb.Message.getFieldWithDefault(msg, 2, ""),
  2453. image: (f = msg.getImage()) && proto.base.v1.NetImage.toObject(includeInstance, f)
  2454. };
  2455. if (includeInstance) {
  2456. obj.$jspbMessageInstance = msg;
  2457. }
  2458. return obj;
  2459. };
  2460. }
  2461. /**
  2462. * Deserializes binary data (in protobuf wire format).
  2463. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2464. * @return {!proto.base.v1.MapRoute}
  2465. */
  2466. proto.base.v1.MapRoute.deserializeBinary = function (bytes) {
  2467. var reader = new jspb.BinaryReader(bytes);
  2468. var msg = new proto.base.v1.MapRoute();
  2469. return proto.base.v1.MapRoute.deserializeBinaryFromReader(msg, reader);
  2470. };
  2471. /**
  2472. * Deserializes binary data (in protobuf wire format) from the
  2473. * given reader into the given message object.
  2474. * @param {!proto.base.v1.MapRoute} msg The message object to deserialize into.
  2475. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2476. * @return {!proto.base.v1.MapRoute}
  2477. */
  2478. proto.base.v1.MapRoute.deserializeBinaryFromReader = function (msg, reader) {
  2479. while (reader.nextField()) {
  2480. if (reader.isEndGroup()) {
  2481. break;
  2482. }
  2483. var field = reader.getFieldNumber();
  2484. switch (field) {
  2485. case 1:
  2486. var value = /** @type {number} */reader.readInt64();
  2487. msg.setId(value);
  2488. break;
  2489. case 2:
  2490. var value = /** @type {string} */reader.readString();
  2491. msg.setName(value);
  2492. break;
  2493. case 3:
  2494. var value = new proto.base.v1.NetImage();
  2495. reader.readMessage(value, proto.base.v1.NetImage.deserializeBinaryFromReader);
  2496. msg.setImage(value);
  2497. break;
  2498. default:
  2499. reader.skipField();
  2500. break;
  2501. }
  2502. }
  2503. return msg;
  2504. };
  2505. /**
  2506. * Serializes the message to binary data (in protobuf wire format).
  2507. * @return {!Uint8Array}
  2508. */
  2509. proto.base.v1.MapRoute.prototype.serializeBinary = function () {
  2510. var writer = new jspb.BinaryWriter();
  2511. proto.base.v1.MapRoute.serializeBinaryToWriter(this, writer);
  2512. return writer.getResultBuffer();
  2513. };
  2514. /**
  2515. * Serializes the given message to binary data (in protobuf wire
  2516. * format), writing to the given BinaryWriter.
  2517. * @param {!proto.base.v1.MapRoute} message
  2518. * @param {!jspb.BinaryWriter} writer
  2519. * @suppress {unusedLocalVariables} f is only used for nested messages
  2520. */
  2521. proto.base.v1.MapRoute.serializeBinaryToWriter = function (message, writer) {
  2522. var f = undefined;
  2523. f = message.getId();
  2524. if (f !== 0) {
  2525. writer.writeInt64(1, f);
  2526. }
  2527. f = message.getName();
  2528. if (f.length > 0) {
  2529. writer.writeString(2, f);
  2530. }
  2531. f = message.getImage();
  2532. if (f != null) {
  2533. writer.writeMessage(3, f, proto.base.v1.NetImage.serializeBinaryToWriter);
  2534. }
  2535. };
  2536. /**
  2537. * optional int64 id = 1;
  2538. * @return {number}
  2539. */
  2540. proto.base.v1.MapRoute.prototype.getId = function () {
  2541. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  2542. );
  2543. };
  2544. /**
  2545. * @param {number} value
  2546. * @return {!proto.base.v1.MapRoute} returns this
  2547. */
  2548. proto.base.v1.MapRoute.prototype.setId = function (value) {
  2549. return jspb.Message.setProto3IntField(this, 1, value);
  2550. };
  2551. /**
  2552. * optional string name = 2;
  2553. * @return {string}
  2554. */
  2555. proto.base.v1.MapRoute.prototype.getName = function () {
  2556. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  2557. );
  2558. };
  2559. /**
  2560. * @param {string} value
  2561. * @return {!proto.base.v1.MapRoute} returns this
  2562. */
  2563. proto.base.v1.MapRoute.prototype.setName = function (value) {
  2564. return jspb.Message.setProto3StringField(this, 2, value);
  2565. };
  2566. /**
  2567. * optional NetImage image = 3;
  2568. * @return {?proto.base.v1.NetImage}
  2569. */
  2570. proto.base.v1.MapRoute.prototype.getImage = function () {
  2571. return (/** @type{?proto.base.v1.NetImage} */
  2572. jspb.Message.getWrapperField(this, proto.base.v1.NetImage, 3)
  2573. );
  2574. };
  2575. /**
  2576. * @param {?proto.base.v1.NetImage|undefined} value
  2577. * @return {!proto.base.v1.MapRoute} returns this
  2578. */
  2579. proto.base.v1.MapRoute.prototype.setImage = function (value) {
  2580. return jspb.Message.setWrapperField(this, 3, value);
  2581. };
  2582. /**
  2583. * Clears the message field making it undefined.
  2584. * @return {!proto.base.v1.MapRoute} returns this
  2585. */
  2586. proto.base.v1.MapRoute.prototype.clearImage = function () {
  2587. return this.setImage(undefined);
  2588. };
  2589. /**
  2590. * Returns whether this field is set.
  2591. * @return {boolean}
  2592. */
  2593. proto.base.v1.MapRoute.prototype.hasImage = function () {
  2594. return jspb.Message.getField(this, 3) != null;
  2595. };
  2596. if (jspb.Message.GENERATE_TO_OBJECT) {
  2597. /**
  2598. * Creates an object representation of this proto.
  2599. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2600. * Optional fields that are not set will be set to undefined.
  2601. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2602. * For the list of reserved names please see:
  2603. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2604. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2605. * JSPB instance for transitional soy proto support:
  2606. * http://goto/soy-param-migration
  2607. * @return {!Object}
  2608. */
  2609. proto.base.v1.Region.prototype.toObject = function (opt_includeInstance) {
  2610. return proto.base.v1.Region.toObject(opt_includeInstance, this);
  2611. };
  2612. /**
  2613. * Static version of the {@see toObject} method.
  2614. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2615. * the JSPB instance for transitional soy proto support:
  2616. * http://goto/soy-param-migration
  2617. * @param {!proto.base.v1.Region} msg The msg instance to transform.
  2618. * @return {!Object}
  2619. * @suppress {unusedLocalVariables} f is only used for nested messages
  2620. */
  2621. proto.base.v1.Region.toObject = function (includeInstance, msg) {
  2622. var f,
  2623. obj = {
  2624. code: jspb.Message.getFieldWithDefault(msg, 1, ""),
  2625. name: jspb.Message.getFieldWithDefault(msg, 2, "")
  2626. };
  2627. if (includeInstance) {
  2628. obj.$jspbMessageInstance = msg;
  2629. }
  2630. return obj;
  2631. };
  2632. }
  2633. /**
  2634. * Deserializes binary data (in protobuf wire format).
  2635. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2636. * @return {!proto.base.v1.Region}
  2637. */
  2638. proto.base.v1.Region.deserializeBinary = function (bytes) {
  2639. var reader = new jspb.BinaryReader(bytes);
  2640. var msg = new proto.base.v1.Region();
  2641. return proto.base.v1.Region.deserializeBinaryFromReader(msg, reader);
  2642. };
  2643. /**
  2644. * Deserializes binary data (in protobuf wire format) from the
  2645. * given reader into the given message object.
  2646. * @param {!proto.base.v1.Region} msg The message object to deserialize into.
  2647. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2648. * @return {!proto.base.v1.Region}
  2649. */
  2650. proto.base.v1.Region.deserializeBinaryFromReader = function (msg, reader) {
  2651. while (reader.nextField()) {
  2652. if (reader.isEndGroup()) {
  2653. break;
  2654. }
  2655. var field = reader.getFieldNumber();
  2656. switch (field) {
  2657. case 1:
  2658. var value = /** @type {string} */reader.readString();
  2659. msg.setCode(value);
  2660. break;
  2661. case 2:
  2662. var value = /** @type {string} */reader.readString();
  2663. msg.setName(value);
  2664. break;
  2665. default:
  2666. reader.skipField();
  2667. break;
  2668. }
  2669. }
  2670. return msg;
  2671. };
  2672. /**
  2673. * Serializes the message to binary data (in protobuf wire format).
  2674. * @return {!Uint8Array}
  2675. */
  2676. proto.base.v1.Region.prototype.serializeBinary = function () {
  2677. var writer = new jspb.BinaryWriter();
  2678. proto.base.v1.Region.serializeBinaryToWriter(this, writer);
  2679. return writer.getResultBuffer();
  2680. };
  2681. /**
  2682. * Serializes the given message to binary data (in protobuf wire
  2683. * format), writing to the given BinaryWriter.
  2684. * @param {!proto.base.v1.Region} message
  2685. * @param {!jspb.BinaryWriter} writer
  2686. * @suppress {unusedLocalVariables} f is only used for nested messages
  2687. */
  2688. proto.base.v1.Region.serializeBinaryToWriter = function (message, writer) {
  2689. var f = undefined;
  2690. f = message.getCode();
  2691. if (f.length > 0) {
  2692. writer.writeString(1, f);
  2693. }
  2694. f = message.getName();
  2695. if (f.length > 0) {
  2696. writer.writeString(2, f);
  2697. }
  2698. };
  2699. /**
  2700. * optional string code = 1;
  2701. * @return {string}
  2702. */
  2703. proto.base.v1.Region.prototype.getCode = function () {
  2704. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, "")
  2705. );
  2706. };
  2707. /**
  2708. * @param {string} value
  2709. * @return {!proto.base.v1.Region} returns this
  2710. */
  2711. proto.base.v1.Region.prototype.setCode = function (value) {
  2712. return jspb.Message.setProto3StringField(this, 1, value);
  2713. };
  2714. /**
  2715. * optional string name = 2;
  2716. * @return {string}
  2717. */
  2718. proto.base.v1.Region.prototype.getName = function () {
  2719. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  2720. );
  2721. };
  2722. /**
  2723. * @param {string} value
  2724. * @return {!proto.base.v1.Region} returns this
  2725. */
  2726. proto.base.v1.Region.prototype.setName = function (value) {
  2727. return jspb.Message.setProto3StringField(this, 2, value);
  2728. };
  2729. if (jspb.Message.GENERATE_TO_OBJECT) {
  2730. /**
  2731. * Creates an object representation of this proto.
  2732. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2733. * Optional fields that are not set will be set to undefined.
  2734. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2735. * For the list of reserved names please see:
  2736. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2737. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2738. * JSPB instance for transitional soy proto support:
  2739. * http://goto/soy-param-migration
  2740. * @return {!Object}
  2741. */
  2742. proto.base.v1.ShopList.prototype.toObject = function (opt_includeInstance) {
  2743. return proto.base.v1.ShopList.toObject(opt_includeInstance, this);
  2744. };
  2745. /**
  2746. * Static version of the {@see toObject} method.
  2747. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2748. * the JSPB instance for transitional soy proto support:
  2749. * http://goto/soy-param-migration
  2750. * @param {!proto.base.v1.ShopList} msg The msg instance to transform.
  2751. * @return {!Object}
  2752. * @suppress {unusedLocalVariables} f is only used for nested messages
  2753. */
  2754. proto.base.v1.ShopList.toObject = function (includeInstance, msg) {
  2755. var f,
  2756. obj = {
  2757. shopid: jspb.Message.getFieldWithDefault(msg, 1, 0),
  2758. name: jspb.Message.getFieldWithDefault(msg, 2, "")
  2759. };
  2760. if (includeInstance) {
  2761. obj.$jspbMessageInstance = msg;
  2762. }
  2763. return obj;
  2764. };
  2765. }
  2766. /**
  2767. * Deserializes binary data (in protobuf wire format).
  2768. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2769. * @return {!proto.base.v1.ShopList}
  2770. */
  2771. proto.base.v1.ShopList.deserializeBinary = function (bytes) {
  2772. var reader = new jspb.BinaryReader(bytes);
  2773. var msg = new proto.base.v1.ShopList();
  2774. return proto.base.v1.ShopList.deserializeBinaryFromReader(msg, reader);
  2775. };
  2776. /**
  2777. * Deserializes binary data (in protobuf wire format) from the
  2778. * given reader into the given message object.
  2779. * @param {!proto.base.v1.ShopList} msg The message object to deserialize into.
  2780. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2781. * @return {!proto.base.v1.ShopList}
  2782. */
  2783. proto.base.v1.ShopList.deserializeBinaryFromReader = function (msg, reader) {
  2784. while (reader.nextField()) {
  2785. if (reader.isEndGroup()) {
  2786. break;
  2787. }
  2788. var field = reader.getFieldNumber();
  2789. switch (field) {
  2790. case 1:
  2791. var value = /** @type {number} */reader.readInt32();
  2792. msg.setShopid(value);
  2793. break;
  2794. case 2:
  2795. var value = /** @type {string} */reader.readString();
  2796. msg.setName(value);
  2797. break;
  2798. default:
  2799. reader.skipField();
  2800. break;
  2801. }
  2802. }
  2803. return msg;
  2804. };
  2805. /**
  2806. * Serializes the message to binary data (in protobuf wire format).
  2807. * @return {!Uint8Array}
  2808. */
  2809. proto.base.v1.ShopList.prototype.serializeBinary = function () {
  2810. var writer = new jspb.BinaryWriter();
  2811. proto.base.v1.ShopList.serializeBinaryToWriter(this, writer);
  2812. return writer.getResultBuffer();
  2813. };
  2814. /**
  2815. * Serializes the given message to binary data (in protobuf wire
  2816. * format), writing to the given BinaryWriter.
  2817. * @param {!proto.base.v1.ShopList} message
  2818. * @param {!jspb.BinaryWriter} writer
  2819. * @suppress {unusedLocalVariables} f is only used for nested messages
  2820. */
  2821. proto.base.v1.ShopList.serializeBinaryToWriter = function (message, writer) {
  2822. var f = undefined;
  2823. f = message.getShopid();
  2824. if (f !== 0) {
  2825. writer.writeInt32(1, f);
  2826. }
  2827. f = message.getName();
  2828. if (f.length > 0) {
  2829. writer.writeString(2, f);
  2830. }
  2831. };
  2832. /**
  2833. * optional int32 shopId = 1;
  2834. * @return {number}
  2835. */
  2836. proto.base.v1.ShopList.prototype.getShopid = function () {
  2837. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  2838. );
  2839. };
  2840. /**
  2841. * @param {number} value
  2842. * @return {!proto.base.v1.ShopList} returns this
  2843. */
  2844. proto.base.v1.ShopList.prototype.setShopid = function (value) {
  2845. return jspb.Message.setProto3IntField(this, 1, value);
  2846. };
  2847. /**
  2848. * optional string name = 2;
  2849. * @return {string}
  2850. */
  2851. proto.base.v1.ShopList.prototype.getName = function () {
  2852. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  2853. );
  2854. };
  2855. /**
  2856. * @param {string} value
  2857. * @return {!proto.base.v1.ShopList} returns this
  2858. */
  2859. proto.base.v1.ShopList.prototype.setName = function (value) {
  2860. return jspb.Message.setProto3StringField(this, 2, value);
  2861. };
  2862. if (jspb.Message.GENERATE_TO_OBJECT) {
  2863. /**
  2864. * Creates an object representation of this proto.
  2865. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2866. * Optional fields that are not set will be set to undefined.
  2867. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  2868. * For the list of reserved names please see:
  2869. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  2870. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  2871. * JSPB instance for transitional soy proto support:
  2872. * http://goto/soy-param-migration
  2873. * @return {!Object}
  2874. */
  2875. proto.base.v1.ControlInfoList.prototype.toObject = function (opt_includeInstance) {
  2876. return proto.base.v1.ControlInfoList.toObject(opt_includeInstance, this);
  2877. };
  2878. /**
  2879. * Static version of the {@see toObject} method.
  2880. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  2881. * the JSPB instance for transitional soy proto support:
  2882. * http://goto/soy-param-migration
  2883. * @param {!proto.base.v1.ControlInfoList} msg The msg instance to transform.
  2884. * @return {!Object}
  2885. * @suppress {unusedLocalVariables} f is only used for nested messages
  2886. */
  2887. proto.base.v1.ControlInfoList.toObject = function (includeInstance, msg) {
  2888. var f,
  2889. obj = {
  2890. ciid: jspb.Message.getFieldWithDefault(msg, 1, 0),
  2891. cicode: jspb.Message.getFieldWithDefault(msg, 2, "")
  2892. };
  2893. if (includeInstance) {
  2894. obj.$jspbMessageInstance = msg;
  2895. }
  2896. return obj;
  2897. };
  2898. }
  2899. /**
  2900. * Deserializes binary data (in protobuf wire format).
  2901. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  2902. * @return {!proto.base.v1.ControlInfoList}
  2903. */
  2904. proto.base.v1.ControlInfoList.deserializeBinary = function (bytes) {
  2905. var reader = new jspb.BinaryReader(bytes);
  2906. var msg = new proto.base.v1.ControlInfoList();
  2907. return proto.base.v1.ControlInfoList.deserializeBinaryFromReader(msg, reader);
  2908. };
  2909. /**
  2910. * Deserializes binary data (in protobuf wire format) from the
  2911. * given reader into the given message object.
  2912. * @param {!proto.base.v1.ControlInfoList} msg The message object to deserialize into.
  2913. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  2914. * @return {!proto.base.v1.ControlInfoList}
  2915. */
  2916. proto.base.v1.ControlInfoList.deserializeBinaryFromReader = function (msg, reader) {
  2917. while (reader.nextField()) {
  2918. if (reader.isEndGroup()) {
  2919. break;
  2920. }
  2921. var field = reader.getFieldNumber();
  2922. switch (field) {
  2923. case 1:
  2924. var value = /** @type {number} */reader.readInt32();
  2925. msg.setCiid(value);
  2926. break;
  2927. case 2:
  2928. var value = /** @type {string} */reader.readString();
  2929. msg.setCicode(value);
  2930. break;
  2931. default:
  2932. reader.skipField();
  2933. break;
  2934. }
  2935. }
  2936. return msg;
  2937. };
  2938. /**
  2939. * Serializes the message to binary data (in protobuf wire format).
  2940. * @return {!Uint8Array}
  2941. */
  2942. proto.base.v1.ControlInfoList.prototype.serializeBinary = function () {
  2943. var writer = new jspb.BinaryWriter();
  2944. proto.base.v1.ControlInfoList.serializeBinaryToWriter(this, writer);
  2945. return writer.getResultBuffer();
  2946. };
  2947. /**
  2948. * Serializes the given message to binary data (in protobuf wire
  2949. * format), writing to the given BinaryWriter.
  2950. * @param {!proto.base.v1.ControlInfoList} message
  2951. * @param {!jspb.BinaryWriter} writer
  2952. * @suppress {unusedLocalVariables} f is only used for nested messages
  2953. */
  2954. proto.base.v1.ControlInfoList.serializeBinaryToWriter = function (message, writer) {
  2955. var f = undefined;
  2956. f = message.getCiid();
  2957. if (f !== 0) {
  2958. writer.writeInt32(1, f);
  2959. }
  2960. f = message.getCicode();
  2961. if (f.length > 0) {
  2962. writer.writeString(2, f);
  2963. }
  2964. };
  2965. /**
  2966. * optional int32 ciId = 1;
  2967. * @return {number}
  2968. */
  2969. proto.base.v1.ControlInfoList.prototype.getCiid = function () {
  2970. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  2971. );
  2972. };
  2973. /**
  2974. * @param {number} value
  2975. * @return {!proto.base.v1.ControlInfoList} returns this
  2976. */
  2977. proto.base.v1.ControlInfoList.prototype.setCiid = function (value) {
  2978. return jspb.Message.setProto3IntField(this, 1, value);
  2979. };
  2980. /**
  2981. * optional string ciCode = 2;
  2982. * @return {string}
  2983. */
  2984. proto.base.v1.ControlInfoList.prototype.getCicode = function () {
  2985. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  2986. );
  2987. };
  2988. /**
  2989. * @param {string} value
  2990. * @return {!proto.base.v1.ControlInfoList} returns this
  2991. */
  2992. proto.base.v1.ControlInfoList.prototype.setCicode = function (value) {
  2993. return jspb.Message.setProto3StringField(this, 2, value);
  2994. };
  2995. if (jspb.Message.GENERATE_TO_OBJECT) {
  2996. /**
  2997. * Creates an object representation of this proto.
  2998. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  2999. * Optional fields that are not set will be set to undefined.
  3000. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3001. * For the list of reserved names please see:
  3002. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3003. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3004. * JSPB instance for transitional soy proto support:
  3005. * http://goto/soy-param-migration
  3006. * @return {!Object}
  3007. */
  3008. proto.base.v1.DefaultReply.prototype.toObject = function (opt_includeInstance) {
  3009. return proto.base.v1.DefaultReply.toObject(opt_includeInstance, this);
  3010. };
  3011. /**
  3012. * Static version of the {@see toObject} method.
  3013. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3014. * the JSPB instance for transitional soy proto support:
  3015. * http://goto/soy-param-migration
  3016. * @param {!proto.base.v1.DefaultReply} msg The msg instance to transform.
  3017. * @return {!Object}
  3018. * @suppress {unusedLocalVariables} f is only used for nested messages
  3019. */
  3020. proto.base.v1.DefaultReply.toObject = function (includeInstance, msg) {
  3021. var f,
  3022. obj = {};
  3023. if (includeInstance) {
  3024. obj.$jspbMessageInstance = msg;
  3025. }
  3026. return obj;
  3027. };
  3028. }
  3029. /**
  3030. * Deserializes binary data (in protobuf wire format).
  3031. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3032. * @return {!proto.base.v1.DefaultReply}
  3033. */
  3034. proto.base.v1.DefaultReply.deserializeBinary = function (bytes) {
  3035. var reader = new jspb.BinaryReader(bytes);
  3036. var msg = new proto.base.v1.DefaultReply();
  3037. return proto.base.v1.DefaultReply.deserializeBinaryFromReader(msg, reader);
  3038. };
  3039. /**
  3040. * Deserializes binary data (in protobuf wire format) from the
  3041. * given reader into the given message object.
  3042. * @param {!proto.base.v1.DefaultReply} msg The message object to deserialize into.
  3043. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3044. * @return {!proto.base.v1.DefaultReply}
  3045. */
  3046. proto.base.v1.DefaultReply.deserializeBinaryFromReader = function (msg, reader) {
  3047. while (reader.nextField()) {
  3048. if (reader.isEndGroup()) {
  3049. break;
  3050. }
  3051. var field = reader.getFieldNumber();
  3052. switch (field) {
  3053. default:
  3054. reader.skipField();
  3055. break;
  3056. }
  3057. }
  3058. return msg;
  3059. };
  3060. /**
  3061. * Serializes the message to binary data (in protobuf wire format).
  3062. * @return {!Uint8Array}
  3063. */
  3064. proto.base.v1.DefaultReply.prototype.serializeBinary = function () {
  3065. var writer = new jspb.BinaryWriter();
  3066. proto.base.v1.DefaultReply.serializeBinaryToWriter(this, writer);
  3067. return writer.getResultBuffer();
  3068. };
  3069. /**
  3070. * Serializes the given message to binary data (in protobuf wire
  3071. * format), writing to the given BinaryWriter.
  3072. * @param {!proto.base.v1.DefaultReply} message
  3073. * @param {!jspb.BinaryWriter} writer
  3074. * @suppress {unusedLocalVariables} f is only used for nested messages
  3075. */
  3076. proto.base.v1.DefaultReply.serializeBinaryToWriter = function (message, writer) {
  3077. var f = undefined;
  3078. };
  3079. if (jspb.Message.GENERATE_TO_OBJECT) {
  3080. /**
  3081. * Creates an object representation of this proto.
  3082. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3083. * Optional fields that are not set will be set to undefined.
  3084. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3085. * For the list of reserved names please see:
  3086. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3087. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3088. * JSPB instance for transitional soy proto support:
  3089. * http://goto/soy-param-migration
  3090. * @return {!Object}
  3091. */
  3092. proto.base.v1.IdRequest.prototype.toObject = function (opt_includeInstance) {
  3093. return proto.base.v1.IdRequest.toObject(opt_includeInstance, this);
  3094. };
  3095. /**
  3096. * Static version of the {@see toObject} method.
  3097. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3098. * the JSPB instance for transitional soy proto support:
  3099. * http://goto/soy-param-migration
  3100. * @param {!proto.base.v1.IdRequest} msg The msg instance to transform.
  3101. * @return {!Object}
  3102. * @suppress {unusedLocalVariables} f is only used for nested messages
  3103. */
  3104. proto.base.v1.IdRequest.toObject = function (includeInstance, msg) {
  3105. var f,
  3106. obj = {
  3107. id: jspb.Message.getFieldWithDefault(msg, 1, 0)
  3108. };
  3109. if (includeInstance) {
  3110. obj.$jspbMessageInstance = msg;
  3111. }
  3112. return obj;
  3113. };
  3114. }
  3115. /**
  3116. * Deserializes binary data (in protobuf wire format).
  3117. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3118. * @return {!proto.base.v1.IdRequest}
  3119. */
  3120. proto.base.v1.IdRequest.deserializeBinary = function (bytes) {
  3121. var reader = new jspb.BinaryReader(bytes);
  3122. var msg = new proto.base.v1.IdRequest();
  3123. return proto.base.v1.IdRequest.deserializeBinaryFromReader(msg, reader);
  3124. };
  3125. /**
  3126. * Deserializes binary data (in protobuf wire format) from the
  3127. * given reader into the given message object.
  3128. * @param {!proto.base.v1.IdRequest} msg The message object to deserialize into.
  3129. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3130. * @return {!proto.base.v1.IdRequest}
  3131. */
  3132. proto.base.v1.IdRequest.deserializeBinaryFromReader = function (msg, reader) {
  3133. while (reader.nextField()) {
  3134. if (reader.isEndGroup()) {
  3135. break;
  3136. }
  3137. var field = reader.getFieldNumber();
  3138. switch (field) {
  3139. case 1:
  3140. var value = /** @type {number} */reader.readInt64();
  3141. msg.setId(value);
  3142. break;
  3143. default:
  3144. reader.skipField();
  3145. break;
  3146. }
  3147. }
  3148. return msg;
  3149. };
  3150. /**
  3151. * Serializes the message to binary data (in protobuf wire format).
  3152. * @return {!Uint8Array}
  3153. */
  3154. proto.base.v1.IdRequest.prototype.serializeBinary = function () {
  3155. var writer = new jspb.BinaryWriter();
  3156. proto.base.v1.IdRequest.serializeBinaryToWriter(this, writer);
  3157. return writer.getResultBuffer();
  3158. };
  3159. /**
  3160. * Serializes the given message to binary data (in protobuf wire
  3161. * format), writing to the given BinaryWriter.
  3162. * @param {!proto.base.v1.IdRequest} message
  3163. * @param {!jspb.BinaryWriter} writer
  3164. * @suppress {unusedLocalVariables} f is only used for nested messages
  3165. */
  3166. proto.base.v1.IdRequest.serializeBinaryToWriter = function (message, writer) {
  3167. var f = undefined;
  3168. f = message.getId();
  3169. if (f !== 0) {
  3170. writer.writeInt64(1, f);
  3171. }
  3172. };
  3173. /**
  3174. * optional int64 id = 1;
  3175. * @return {number}
  3176. */
  3177. proto.base.v1.IdRequest.prototype.getId = function () {
  3178. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  3179. );
  3180. };
  3181. /**
  3182. * @param {number} value
  3183. * @return {!proto.base.v1.IdRequest} returns this
  3184. */
  3185. proto.base.v1.IdRequest.prototype.setId = function (value) {
  3186. return jspb.Message.setProto3IntField(this, 1, value);
  3187. };
  3188. if (jspb.Message.GENERATE_TO_OBJECT) {
  3189. /**
  3190. * Creates an object representation of this proto.
  3191. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3192. * Optional fields that are not set will be set to undefined.
  3193. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3194. * For the list of reserved names please see:
  3195. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3196. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3197. * JSPB instance for transitional soy proto support:
  3198. * http://goto/soy-param-migration
  3199. * @return {!Object}
  3200. */
  3201. proto.base.v1.DefaultRequest.prototype.toObject = function (opt_includeInstance) {
  3202. return proto.base.v1.DefaultRequest.toObject(opt_includeInstance, this);
  3203. };
  3204. /**
  3205. * Static version of the {@see toObject} method.
  3206. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3207. * the JSPB instance for transitional soy proto support:
  3208. * http://goto/soy-param-migration
  3209. * @param {!proto.base.v1.DefaultRequest} msg The msg instance to transform.
  3210. * @return {!Object}
  3211. * @suppress {unusedLocalVariables} f is only used for nested messages
  3212. */
  3213. proto.base.v1.DefaultRequest.toObject = function (includeInstance, msg) {
  3214. var f,
  3215. obj = {};
  3216. if (includeInstance) {
  3217. obj.$jspbMessageInstance = msg;
  3218. }
  3219. return obj;
  3220. };
  3221. }
  3222. /**
  3223. * Deserializes binary data (in protobuf wire format).
  3224. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3225. * @return {!proto.base.v1.DefaultRequest}
  3226. */
  3227. proto.base.v1.DefaultRequest.deserializeBinary = function (bytes) {
  3228. var reader = new jspb.BinaryReader(bytes);
  3229. var msg = new proto.base.v1.DefaultRequest();
  3230. return proto.base.v1.DefaultRequest.deserializeBinaryFromReader(msg, reader);
  3231. };
  3232. /**
  3233. * Deserializes binary data (in protobuf wire format) from the
  3234. * given reader into the given message object.
  3235. * @param {!proto.base.v1.DefaultRequest} msg The message object to deserialize into.
  3236. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3237. * @return {!proto.base.v1.DefaultRequest}
  3238. */
  3239. proto.base.v1.DefaultRequest.deserializeBinaryFromReader = function (msg, reader) {
  3240. while (reader.nextField()) {
  3241. if (reader.isEndGroup()) {
  3242. break;
  3243. }
  3244. var field = reader.getFieldNumber();
  3245. switch (field) {
  3246. default:
  3247. reader.skipField();
  3248. break;
  3249. }
  3250. }
  3251. return msg;
  3252. };
  3253. /**
  3254. * Serializes the message to binary data (in protobuf wire format).
  3255. * @return {!Uint8Array}
  3256. */
  3257. proto.base.v1.DefaultRequest.prototype.serializeBinary = function () {
  3258. var writer = new jspb.BinaryWriter();
  3259. proto.base.v1.DefaultRequest.serializeBinaryToWriter(this, writer);
  3260. return writer.getResultBuffer();
  3261. };
  3262. /**
  3263. * Serializes the given message to binary data (in protobuf wire
  3264. * format), writing to the given BinaryWriter.
  3265. * @param {!proto.base.v1.DefaultRequest} message
  3266. * @param {!jspb.BinaryWriter} writer
  3267. * @suppress {unusedLocalVariables} f is only used for nested messages
  3268. */
  3269. proto.base.v1.DefaultRequest.serializeBinaryToWriter = function (message, writer) {
  3270. var f = undefined;
  3271. };
  3272. if (jspb.Message.GENERATE_TO_OBJECT) {
  3273. /**
  3274. * Creates an object representation of this proto.
  3275. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3276. * Optional fields that are not set will be set to undefined.
  3277. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3278. * For the list of reserved names please see:
  3279. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3280. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3281. * JSPB instance for transitional soy proto support:
  3282. * http://goto/soy-param-migration
  3283. * @return {!Object}
  3284. */
  3285. proto.base.v1.Position.prototype.toObject = function (opt_includeInstance) {
  3286. return proto.base.v1.Position.toObject(opt_includeInstance, this);
  3287. };
  3288. /**
  3289. * Static version of the {@see toObject} method.
  3290. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3291. * the JSPB instance for transitional soy proto support:
  3292. * http://goto/soy-param-migration
  3293. * @param {!proto.base.v1.Position} msg The msg instance to transform.
  3294. * @return {!Object}
  3295. * @suppress {unusedLocalVariables} f is only used for nested messages
  3296. */
  3297. proto.base.v1.Position.toObject = function (includeInstance, msg) {
  3298. var f,
  3299. obj = {
  3300. longitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 1, 0.0),
  3301. latitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0)
  3302. };
  3303. if (includeInstance) {
  3304. obj.$jspbMessageInstance = msg;
  3305. }
  3306. return obj;
  3307. };
  3308. }
  3309. /**
  3310. * Deserializes binary data (in protobuf wire format).
  3311. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3312. * @return {!proto.base.v1.Position}
  3313. */
  3314. proto.base.v1.Position.deserializeBinary = function (bytes) {
  3315. var reader = new jspb.BinaryReader(bytes);
  3316. var msg = new proto.base.v1.Position();
  3317. return proto.base.v1.Position.deserializeBinaryFromReader(msg, reader);
  3318. };
  3319. /**
  3320. * Deserializes binary data (in protobuf wire format) from the
  3321. * given reader into the given message object.
  3322. * @param {!proto.base.v1.Position} msg The message object to deserialize into.
  3323. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3324. * @return {!proto.base.v1.Position}
  3325. */
  3326. proto.base.v1.Position.deserializeBinaryFromReader = function (msg, reader) {
  3327. while (reader.nextField()) {
  3328. if (reader.isEndGroup()) {
  3329. break;
  3330. }
  3331. var field = reader.getFieldNumber();
  3332. switch (field) {
  3333. case 1:
  3334. var value = /** @type {number} */reader.readDouble();
  3335. msg.setLongitude(value);
  3336. break;
  3337. case 2:
  3338. var value = /** @type {number} */reader.readDouble();
  3339. msg.setLatitude(value);
  3340. break;
  3341. default:
  3342. reader.skipField();
  3343. break;
  3344. }
  3345. }
  3346. return msg;
  3347. };
  3348. /**
  3349. * Serializes the message to binary data (in protobuf wire format).
  3350. * @return {!Uint8Array}
  3351. */
  3352. proto.base.v1.Position.prototype.serializeBinary = function () {
  3353. var writer = new jspb.BinaryWriter();
  3354. proto.base.v1.Position.serializeBinaryToWriter(this, writer);
  3355. return writer.getResultBuffer();
  3356. };
  3357. /**
  3358. * Serializes the given message to binary data (in protobuf wire
  3359. * format), writing to the given BinaryWriter.
  3360. * @param {!proto.base.v1.Position} message
  3361. * @param {!jspb.BinaryWriter} writer
  3362. * @suppress {unusedLocalVariables} f is only used for nested messages
  3363. */
  3364. proto.base.v1.Position.serializeBinaryToWriter = function (message, writer) {
  3365. var f = undefined;
  3366. f = message.getLongitude();
  3367. if (f !== 0.0) {
  3368. writer.writeDouble(1, f);
  3369. }
  3370. f = message.getLatitude();
  3371. if (f !== 0.0) {
  3372. writer.writeDouble(2, f);
  3373. }
  3374. };
  3375. /**
  3376. * optional double longitude = 1;
  3377. * @return {number}
  3378. */
  3379. proto.base.v1.Position.prototype.getLongitude = function () {
  3380. return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 1, 0.0)
  3381. );
  3382. };
  3383. /**
  3384. * @param {number} value
  3385. * @return {!proto.base.v1.Position} returns this
  3386. */
  3387. proto.base.v1.Position.prototype.setLongitude = function (value) {
  3388. return jspb.Message.setProto3FloatField(this, 1, value);
  3389. };
  3390. /**
  3391. * optional double latitude = 2;
  3392. * @return {number}
  3393. */
  3394. proto.base.v1.Position.prototype.getLatitude = function () {
  3395. return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)
  3396. );
  3397. };
  3398. /**
  3399. * @param {number} value
  3400. * @return {!proto.base.v1.Position} returns this
  3401. */
  3402. proto.base.v1.Position.prototype.setLatitude = function (value) {
  3403. return jspb.Message.setProto3FloatField(this, 2, value);
  3404. };
  3405. if (jspb.Message.GENERATE_TO_OBJECT) {
  3406. /**
  3407. * Creates an object representation of this proto.
  3408. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3409. * Optional fields that are not set will be set to undefined.
  3410. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3411. * For the list of reserved names please see:
  3412. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3413. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3414. * JSPB instance for transitional soy proto support:
  3415. * http://goto/soy-param-migration
  3416. * @return {!Object}
  3417. */
  3418. proto.base.v1.ControlPointInfo.prototype.toObject = function (opt_includeInstance) {
  3419. return proto.base.v1.ControlPointInfo.toObject(opt_includeInstance, this);
  3420. };
  3421. /**
  3422. * Static version of the {@see toObject} method.
  3423. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3424. * the JSPB instance for transitional soy proto support:
  3425. * http://goto/soy-param-migration
  3426. * @param {!proto.base.v1.ControlPointInfo} msg The msg instance to transform.
  3427. * @return {!Object}
  3428. * @suppress {unusedLocalVariables} f is only used for nested messages
  3429. */
  3430. proto.base.v1.ControlPointInfo.toObject = function (includeInstance, msg) {
  3431. var f,
  3432. obj = {
  3433. image: (f = msg.getImage()) && proto.base.v1.NetImage.toObject(includeInstance, f),
  3434. content: jspb.Message.getFieldWithDefault(msg, 2, "")
  3435. };
  3436. if (includeInstance) {
  3437. obj.$jspbMessageInstance = msg;
  3438. }
  3439. return obj;
  3440. };
  3441. }
  3442. /**
  3443. * Deserializes binary data (in protobuf wire format).
  3444. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3445. * @return {!proto.base.v1.ControlPointInfo}
  3446. */
  3447. proto.base.v1.ControlPointInfo.deserializeBinary = function (bytes) {
  3448. var reader = new jspb.BinaryReader(bytes);
  3449. var msg = new proto.base.v1.ControlPointInfo();
  3450. return proto.base.v1.ControlPointInfo.deserializeBinaryFromReader(msg, reader);
  3451. };
  3452. /**
  3453. * Deserializes binary data (in protobuf wire format) from the
  3454. * given reader into the given message object.
  3455. * @param {!proto.base.v1.ControlPointInfo} msg The message object to deserialize into.
  3456. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3457. * @return {!proto.base.v1.ControlPointInfo}
  3458. */
  3459. proto.base.v1.ControlPointInfo.deserializeBinaryFromReader = function (msg, reader) {
  3460. while (reader.nextField()) {
  3461. if (reader.isEndGroup()) {
  3462. break;
  3463. }
  3464. var field = reader.getFieldNumber();
  3465. switch (field) {
  3466. case 1:
  3467. var value = new proto.base.v1.NetImage();
  3468. reader.readMessage(value, proto.base.v1.NetImage.deserializeBinaryFromReader);
  3469. msg.setImage(value);
  3470. break;
  3471. case 2:
  3472. var value = /** @type {string} */reader.readString();
  3473. msg.setContent(value);
  3474. break;
  3475. default:
  3476. reader.skipField();
  3477. break;
  3478. }
  3479. }
  3480. return msg;
  3481. };
  3482. /**
  3483. * Serializes the message to binary data (in protobuf wire format).
  3484. * @return {!Uint8Array}
  3485. */
  3486. proto.base.v1.ControlPointInfo.prototype.serializeBinary = function () {
  3487. var writer = new jspb.BinaryWriter();
  3488. proto.base.v1.ControlPointInfo.serializeBinaryToWriter(this, writer);
  3489. return writer.getResultBuffer();
  3490. };
  3491. /**
  3492. * Serializes the given message to binary data (in protobuf wire
  3493. * format), writing to the given BinaryWriter.
  3494. * @param {!proto.base.v1.ControlPointInfo} message
  3495. * @param {!jspb.BinaryWriter} writer
  3496. * @suppress {unusedLocalVariables} f is only used for nested messages
  3497. */
  3498. proto.base.v1.ControlPointInfo.serializeBinaryToWriter = function (message, writer) {
  3499. var f = undefined;
  3500. f = message.getImage();
  3501. if (f != null) {
  3502. writer.writeMessage(1, f, proto.base.v1.NetImage.serializeBinaryToWriter);
  3503. }
  3504. f = message.getContent();
  3505. if (f.length > 0) {
  3506. writer.writeString(2, f);
  3507. }
  3508. };
  3509. /**
  3510. * optional NetImage image = 1;
  3511. * @return {?proto.base.v1.NetImage}
  3512. */
  3513. proto.base.v1.ControlPointInfo.prototype.getImage = function () {
  3514. return (/** @type{?proto.base.v1.NetImage} */
  3515. jspb.Message.getWrapperField(this, proto.base.v1.NetImage, 1)
  3516. );
  3517. };
  3518. /**
  3519. * @param {?proto.base.v1.NetImage|undefined} value
  3520. * @return {!proto.base.v1.ControlPointInfo} returns this
  3521. */
  3522. proto.base.v1.ControlPointInfo.prototype.setImage = function (value) {
  3523. return jspb.Message.setWrapperField(this, 1, value);
  3524. };
  3525. /**
  3526. * Clears the message field making it undefined.
  3527. * @return {!proto.base.v1.ControlPointInfo} returns this
  3528. */
  3529. proto.base.v1.ControlPointInfo.prototype.clearImage = function () {
  3530. return this.setImage(undefined);
  3531. };
  3532. /**
  3533. * Returns whether this field is set.
  3534. * @return {boolean}
  3535. */
  3536. proto.base.v1.ControlPointInfo.prototype.hasImage = function () {
  3537. return jspb.Message.getField(this, 1) != null;
  3538. };
  3539. /**
  3540. * optional string content = 2;
  3541. * @return {string}
  3542. */
  3543. proto.base.v1.ControlPointInfo.prototype.getContent = function () {
  3544. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  3545. );
  3546. };
  3547. /**
  3548. * @param {string} value
  3549. * @return {!proto.base.v1.ControlPointInfo} returns this
  3550. */
  3551. proto.base.v1.ControlPointInfo.prototype.setContent = function (value) {
  3552. return jspb.Message.setProto3StringField(this, 2, value);
  3553. };
  3554. if (jspb.Message.GENERATE_TO_OBJECT) {
  3555. /**
  3556. * Creates an object representation of this proto.
  3557. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3558. * Optional fields that are not set will be set to undefined.
  3559. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3560. * For the list of reserved names please see:
  3561. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3562. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3563. * JSPB instance for transitional soy proto support:
  3564. * http://goto/soy-param-migration
  3565. * @return {!Object}
  3566. */
  3567. proto.base.v1.Image.prototype.toObject = function (opt_includeInstance) {
  3568. return proto.base.v1.Image.toObject(opt_includeInstance, this);
  3569. };
  3570. /**
  3571. * Static version of the {@see toObject} method.
  3572. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3573. * the JSPB instance for transitional soy proto support:
  3574. * http://goto/soy-param-migration
  3575. * @param {!proto.base.v1.Image} msg The msg instance to transform.
  3576. * @return {!Object}
  3577. * @suppress {unusedLocalVariables} f is only used for nested messages
  3578. */
  3579. proto.base.v1.Image.toObject = function (includeInstance, msg) {
  3580. var f,
  3581. obj = {
  3582. ext: jspb.Message.getFieldWithDefault(msg, 1, ""),
  3583. data: msg.getData_asB64()
  3584. };
  3585. if (includeInstance) {
  3586. obj.$jspbMessageInstance = msg;
  3587. }
  3588. return obj;
  3589. };
  3590. }
  3591. /**
  3592. * Deserializes binary data (in protobuf wire format).
  3593. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3594. * @return {!proto.base.v1.Image}
  3595. */
  3596. proto.base.v1.Image.deserializeBinary = function (bytes) {
  3597. var reader = new jspb.BinaryReader(bytes);
  3598. var msg = new proto.base.v1.Image();
  3599. return proto.base.v1.Image.deserializeBinaryFromReader(msg, reader);
  3600. };
  3601. /**
  3602. * Deserializes binary data (in protobuf wire format) from the
  3603. * given reader into the given message object.
  3604. * @param {!proto.base.v1.Image} msg The message object to deserialize into.
  3605. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3606. * @return {!proto.base.v1.Image}
  3607. */
  3608. proto.base.v1.Image.deserializeBinaryFromReader = function (msg, reader) {
  3609. while (reader.nextField()) {
  3610. if (reader.isEndGroup()) {
  3611. break;
  3612. }
  3613. var field = reader.getFieldNumber();
  3614. switch (field) {
  3615. case 1:
  3616. var value = /** @type {string} */reader.readString();
  3617. msg.setExt(value);
  3618. break;
  3619. case 2:
  3620. var value = /** @type {!Uint8Array} */reader.readBytes();
  3621. msg.setData(value);
  3622. break;
  3623. default:
  3624. reader.skipField();
  3625. break;
  3626. }
  3627. }
  3628. return msg;
  3629. };
  3630. /**
  3631. * Serializes the message to binary data (in protobuf wire format).
  3632. * @return {!Uint8Array}
  3633. */
  3634. proto.base.v1.Image.prototype.serializeBinary = function () {
  3635. var writer = new jspb.BinaryWriter();
  3636. proto.base.v1.Image.serializeBinaryToWriter(this, writer);
  3637. return writer.getResultBuffer();
  3638. };
  3639. /**
  3640. * Serializes the given message to binary data (in protobuf wire
  3641. * format), writing to the given BinaryWriter.
  3642. * @param {!proto.base.v1.Image} message
  3643. * @param {!jspb.BinaryWriter} writer
  3644. * @suppress {unusedLocalVariables} f is only used for nested messages
  3645. */
  3646. proto.base.v1.Image.serializeBinaryToWriter = function (message, writer) {
  3647. var f = undefined;
  3648. f = message.getExt();
  3649. if (f.length > 0) {
  3650. writer.writeString(1, f);
  3651. }
  3652. f = message.getData_asU8();
  3653. if (f.length > 0) {
  3654. writer.writeBytes(2, f);
  3655. }
  3656. };
  3657. /**
  3658. * optional string ext = 1;
  3659. * @return {string}
  3660. */
  3661. proto.base.v1.Image.prototype.getExt = function () {
  3662. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, "")
  3663. );
  3664. };
  3665. /**
  3666. * @param {string} value
  3667. * @return {!proto.base.v1.Image} returns this
  3668. */
  3669. proto.base.v1.Image.prototype.setExt = function (value) {
  3670. return jspb.Message.setProto3StringField(this, 1, value);
  3671. };
  3672. /**
  3673. * optional bytes data = 2;
  3674. * @return {string}
  3675. */
  3676. proto.base.v1.Image.prototype.getData = function () {
  3677. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, "")
  3678. );
  3679. };
  3680. /**
  3681. * optional bytes data = 2;
  3682. * This is a type-conversion wrapper around `getData()`
  3683. * @return {string}
  3684. */
  3685. proto.base.v1.Image.prototype.getData_asB64 = function () {
  3686. return (/** @type {string} */jspb.Message.bytesAsB64(this.getData())
  3687. );
  3688. };
  3689. /**
  3690. * optional bytes data = 2;
  3691. * Note that Uint8Array is not supported on all browsers.
  3692. * @see http://caniuse.com/Uint8Array
  3693. * This is a type-conversion wrapper around `getData()`
  3694. * @return {!Uint8Array}
  3695. */
  3696. proto.base.v1.Image.prototype.getData_asU8 = function () {
  3697. return (/** @type {!Uint8Array} */jspb.Message.bytesAsU8(this.getData())
  3698. );
  3699. };
  3700. /**
  3701. * @param {!(string|Uint8Array)} value
  3702. * @return {!proto.base.v1.Image} returns this
  3703. */
  3704. proto.base.v1.Image.prototype.setData = function (value) {
  3705. return jspb.Message.setProto3BytesField(this, 2, value);
  3706. };
  3707. if (jspb.Message.GENERATE_TO_OBJECT) {
  3708. /**
  3709. * Creates an object representation of this proto.
  3710. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3711. * Optional fields that are not set will be set to undefined.
  3712. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3713. * For the list of reserved names please see:
  3714. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3715. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3716. * JSPB instance for transitional soy proto support:
  3717. * http://goto/soy-param-migration
  3718. * @return {!Object}
  3719. */
  3720. proto.base.v1.StatusEditRequest.prototype.toObject = function (opt_includeInstance) {
  3721. return proto.base.v1.StatusEditRequest.toObject(opt_includeInstance, this);
  3722. };
  3723. /**
  3724. * Static version of the {@see toObject} method.
  3725. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3726. * the JSPB instance for transitional soy proto support:
  3727. * http://goto/soy-param-migration
  3728. * @param {!proto.base.v1.StatusEditRequest} msg The msg instance to transform.
  3729. * @return {!Object}
  3730. * @suppress {unusedLocalVariables} f is only used for nested messages
  3731. */
  3732. proto.base.v1.StatusEditRequest.toObject = function (includeInstance, msg) {
  3733. var f,
  3734. obj = {
  3735. id: jspb.Message.getFieldWithDefault(msg, 1, 0),
  3736. status: jspb.Message.getFieldWithDefault(msg, 2, 0)
  3737. };
  3738. if (includeInstance) {
  3739. obj.$jspbMessageInstance = msg;
  3740. }
  3741. return obj;
  3742. };
  3743. }
  3744. /**
  3745. * Deserializes binary data (in protobuf wire format).
  3746. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3747. * @return {!proto.base.v1.StatusEditRequest}
  3748. */
  3749. proto.base.v1.StatusEditRequest.deserializeBinary = function (bytes) {
  3750. var reader = new jspb.BinaryReader(bytes);
  3751. var msg = new proto.base.v1.StatusEditRequest();
  3752. return proto.base.v1.StatusEditRequest.deserializeBinaryFromReader(msg, reader);
  3753. };
  3754. /**
  3755. * Deserializes binary data (in protobuf wire format) from the
  3756. * given reader into the given message object.
  3757. * @param {!proto.base.v1.StatusEditRequest} msg The message object to deserialize into.
  3758. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3759. * @return {!proto.base.v1.StatusEditRequest}
  3760. */
  3761. proto.base.v1.StatusEditRequest.deserializeBinaryFromReader = function (msg, reader) {
  3762. while (reader.nextField()) {
  3763. if (reader.isEndGroup()) {
  3764. break;
  3765. }
  3766. var field = reader.getFieldNumber();
  3767. switch (field) {
  3768. case 1:
  3769. var value = /** @type {number} */reader.readInt64();
  3770. msg.setId(value);
  3771. break;
  3772. case 2:
  3773. var value = /** @type {!proto.base.v1.StatusType} */reader.readEnum();
  3774. msg.setStatus(value);
  3775. break;
  3776. default:
  3777. reader.skipField();
  3778. break;
  3779. }
  3780. }
  3781. return msg;
  3782. };
  3783. /**
  3784. * Serializes the message to binary data (in protobuf wire format).
  3785. * @return {!Uint8Array}
  3786. */
  3787. proto.base.v1.StatusEditRequest.prototype.serializeBinary = function () {
  3788. var writer = new jspb.BinaryWriter();
  3789. proto.base.v1.StatusEditRequest.serializeBinaryToWriter(this, writer);
  3790. return writer.getResultBuffer();
  3791. };
  3792. /**
  3793. * Serializes the given message to binary data (in protobuf wire
  3794. * format), writing to the given BinaryWriter.
  3795. * @param {!proto.base.v1.StatusEditRequest} message
  3796. * @param {!jspb.BinaryWriter} writer
  3797. * @suppress {unusedLocalVariables} f is only used for nested messages
  3798. */
  3799. proto.base.v1.StatusEditRequest.serializeBinaryToWriter = function (message, writer) {
  3800. var f = undefined;
  3801. f = message.getId();
  3802. if (f !== 0) {
  3803. writer.writeInt64(1, f);
  3804. }
  3805. f = message.getStatus();
  3806. if (f !== 0.0) {
  3807. writer.writeEnum(2, f);
  3808. }
  3809. };
  3810. /**
  3811. * optional int64 id = 1;
  3812. * @return {number}
  3813. */
  3814. proto.base.v1.StatusEditRequest.prototype.getId = function () {
  3815. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  3816. );
  3817. };
  3818. /**
  3819. * @param {number} value
  3820. * @return {!proto.base.v1.StatusEditRequest} returns this
  3821. */
  3822. proto.base.v1.StatusEditRequest.prototype.setId = function (value) {
  3823. return jspb.Message.setProto3IntField(this, 1, value);
  3824. };
  3825. /**
  3826. * optional StatusType status = 2;
  3827. * @return {!proto.base.v1.StatusType}
  3828. */
  3829. proto.base.v1.StatusEditRequest.prototype.getStatus = function () {
  3830. return (/** @type {!proto.base.v1.StatusType} */jspb.Message.getFieldWithDefault(this, 2, 0)
  3831. );
  3832. };
  3833. /**
  3834. * @param {!proto.base.v1.StatusType} value
  3835. * @return {!proto.base.v1.StatusEditRequest} returns this
  3836. */
  3837. proto.base.v1.StatusEditRequest.prototype.setStatus = function (value) {
  3838. return jspb.Message.setProto3EnumField(this, 2, value);
  3839. };
  3840. /**
  3841. * List of repeated fields within this message type.
  3842. * @private {!Array<number>}
  3843. * @const
  3844. */
  3845. proto.base.v1.ControlPoint.repeatedFields_ = [3];
  3846. if (jspb.Message.GENERATE_TO_OBJECT) {
  3847. /**
  3848. * Creates an object representation of this proto.
  3849. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  3850. * Optional fields that are not set will be set to undefined.
  3851. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  3852. * For the list of reserved names please see:
  3853. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  3854. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  3855. * JSPB instance for transitional soy proto support:
  3856. * http://goto/soy-param-migration
  3857. * @return {!Object}
  3858. */
  3859. proto.base.v1.ControlPoint.prototype.toObject = function (opt_includeInstance) {
  3860. return proto.base.v1.ControlPoint.toObject(opt_includeInstance, this);
  3861. };
  3862. /**
  3863. * Static version of the {@see toObject} method.
  3864. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  3865. * the JSPB instance for transitional soy proto support:
  3866. * http://goto/soy-param-migration
  3867. * @param {!proto.base.v1.ControlPoint} msg The msg instance to transform.
  3868. * @return {!Object}
  3869. * @suppress {unusedLocalVariables} f is only used for nested messages
  3870. */
  3871. proto.base.v1.ControlPoint.toObject = function (includeInstance, msg) {
  3872. var f,
  3873. obj = {
  3874. id: jspb.Message.getFieldWithDefault(msg, 1, 0),
  3875. info: (f = msg.getInfo()) && proto.base.v1.ControlPointInfo.toObject(includeInstance, f),
  3876. nfcIdListList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,
  3877. onMapX: jspb.Message.getFieldWithDefault(msg, 4, 0),
  3878. onMapY: jspb.Message.getFieldWithDefault(msg, 5, 0),
  3879. sn: jspb.Message.getFieldWithDefault(msg, 6, ""),
  3880. ciposition: (f = msg.getCiposition()) && proto.base.v1.Position.toObject(includeInstance, f)
  3881. };
  3882. if (includeInstance) {
  3883. obj.$jspbMessageInstance = msg;
  3884. }
  3885. return obj;
  3886. };
  3887. }
  3888. /**
  3889. * Deserializes binary data (in protobuf wire format).
  3890. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  3891. * @return {!proto.base.v1.ControlPoint}
  3892. */
  3893. proto.base.v1.ControlPoint.deserializeBinary = function (bytes) {
  3894. var reader = new jspb.BinaryReader(bytes);
  3895. var msg = new proto.base.v1.ControlPoint();
  3896. return proto.base.v1.ControlPoint.deserializeBinaryFromReader(msg, reader);
  3897. };
  3898. /**
  3899. * Deserializes binary data (in protobuf wire format) from the
  3900. * given reader into the given message object.
  3901. * @param {!proto.base.v1.ControlPoint} msg The message object to deserialize into.
  3902. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  3903. * @return {!proto.base.v1.ControlPoint}
  3904. */
  3905. proto.base.v1.ControlPoint.deserializeBinaryFromReader = function (msg, reader) {
  3906. while (reader.nextField()) {
  3907. if (reader.isEndGroup()) {
  3908. break;
  3909. }
  3910. var field = reader.getFieldNumber();
  3911. switch (field) {
  3912. case 1:
  3913. var value = /** @type {number} */reader.readInt64();
  3914. msg.setId(value);
  3915. break;
  3916. case 2:
  3917. var value = new proto.base.v1.ControlPointInfo();
  3918. reader.readMessage(value, proto.base.v1.ControlPointInfo.deserializeBinaryFromReader);
  3919. msg.setInfo(value);
  3920. break;
  3921. case 3:
  3922. var value = /** @type {string} */reader.readString();
  3923. msg.addNfcIdList(value);
  3924. break;
  3925. case 4:
  3926. var value = /** @type {number} */reader.readInt64();
  3927. msg.setOnMapX(value);
  3928. break;
  3929. case 5:
  3930. var value = /** @type {number} */reader.readInt64();
  3931. msg.setOnMapY(value);
  3932. break;
  3933. case 6:
  3934. var value = /** @type {string} */reader.readString();
  3935. msg.setSn(value);
  3936. break;
  3937. case 7:
  3938. var value = new proto.base.v1.Position();
  3939. reader.readMessage(value, proto.base.v1.Position.deserializeBinaryFromReader);
  3940. msg.setCiposition(value);
  3941. break;
  3942. default:
  3943. reader.skipField();
  3944. break;
  3945. }
  3946. }
  3947. return msg;
  3948. };
  3949. /**
  3950. * Serializes the message to binary data (in protobuf wire format).
  3951. * @return {!Uint8Array}
  3952. */
  3953. proto.base.v1.ControlPoint.prototype.serializeBinary = function () {
  3954. var writer = new jspb.BinaryWriter();
  3955. proto.base.v1.ControlPoint.serializeBinaryToWriter(this, writer);
  3956. return writer.getResultBuffer();
  3957. };
  3958. /**
  3959. * Serializes the given message to binary data (in protobuf wire
  3960. * format), writing to the given BinaryWriter.
  3961. * @param {!proto.base.v1.ControlPoint} message
  3962. * @param {!jspb.BinaryWriter} writer
  3963. * @suppress {unusedLocalVariables} f is only used for nested messages
  3964. */
  3965. proto.base.v1.ControlPoint.serializeBinaryToWriter = function (message, writer) {
  3966. var f = undefined;
  3967. f = message.getId();
  3968. if (f !== 0) {
  3969. writer.writeInt64(1, f);
  3970. }
  3971. f = message.getInfo();
  3972. if (f != null) {
  3973. writer.writeMessage(2, f, proto.base.v1.ControlPointInfo.serializeBinaryToWriter);
  3974. }
  3975. f = message.getNfcIdListList();
  3976. if (f.length > 0) {
  3977. writer.writeRepeatedString(3, f);
  3978. }
  3979. f = message.getOnMapX();
  3980. if (f !== 0) {
  3981. writer.writeInt64(4, f);
  3982. }
  3983. f = message.getOnMapY();
  3984. if (f !== 0) {
  3985. writer.writeInt64(5, f);
  3986. }
  3987. f = message.getSn();
  3988. if (f.length > 0) {
  3989. writer.writeString(6, f);
  3990. }
  3991. f = message.getCiposition();
  3992. if (f != null) {
  3993. writer.writeMessage(7, f, proto.base.v1.Position.serializeBinaryToWriter);
  3994. }
  3995. };
  3996. /**
  3997. * optional int64 id = 1;
  3998. * @return {number}
  3999. */
  4000. proto.base.v1.ControlPoint.prototype.getId = function () {
  4001. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  4002. );
  4003. };
  4004. /**
  4005. * @param {number} value
  4006. * @return {!proto.base.v1.ControlPoint} returns this
  4007. */
  4008. proto.base.v1.ControlPoint.prototype.setId = function (value) {
  4009. return jspb.Message.setProto3IntField(this, 1, value);
  4010. };
  4011. /**
  4012. * optional ControlPointInfo info = 2;
  4013. * @return {?proto.base.v1.ControlPointInfo}
  4014. */
  4015. proto.base.v1.ControlPoint.prototype.getInfo = function () {
  4016. return (/** @type{?proto.base.v1.ControlPointInfo} */
  4017. jspb.Message.getWrapperField(this, proto.base.v1.ControlPointInfo, 2)
  4018. );
  4019. };
  4020. /**
  4021. * @param {?proto.base.v1.ControlPointInfo|undefined} value
  4022. * @return {!proto.base.v1.ControlPoint} returns this
  4023. */
  4024. proto.base.v1.ControlPoint.prototype.setInfo = function (value) {
  4025. return jspb.Message.setWrapperField(this, 2, value);
  4026. };
  4027. /**
  4028. * Clears the message field making it undefined.
  4029. * @return {!proto.base.v1.ControlPoint} returns this
  4030. */
  4031. proto.base.v1.ControlPoint.prototype.clearInfo = function () {
  4032. return this.setInfo(undefined);
  4033. };
  4034. /**
  4035. * Returns whether this field is set.
  4036. * @return {boolean}
  4037. */
  4038. proto.base.v1.ControlPoint.prototype.hasInfo = function () {
  4039. return jspb.Message.getField(this, 2) != null;
  4040. };
  4041. /**
  4042. * repeated string nfc_id_list = 3;
  4043. * @return {!Array<string>}
  4044. */
  4045. proto.base.v1.ControlPoint.prototype.getNfcIdListList = function () {
  4046. return (/** @type {!Array<string>} */jspb.Message.getRepeatedField(this, 3)
  4047. );
  4048. };
  4049. /**
  4050. * @param {!Array<string>} value
  4051. * @return {!proto.base.v1.ControlPoint} returns this
  4052. */
  4053. proto.base.v1.ControlPoint.prototype.setNfcIdListList = function (value) {
  4054. return jspb.Message.setField(this, 3, value || []);
  4055. };
  4056. /**
  4057. * @param {string} value
  4058. * @param {number=} opt_index
  4059. * @return {!proto.base.v1.ControlPoint} returns this
  4060. */
  4061. proto.base.v1.ControlPoint.prototype.addNfcIdList = function (value, opt_index) {
  4062. return jspb.Message.addToRepeatedField(this, 3, value, opt_index);
  4063. };
  4064. /**
  4065. * Clears the list making it empty but non-null.
  4066. * @return {!proto.base.v1.ControlPoint} returns this
  4067. */
  4068. proto.base.v1.ControlPoint.prototype.clearNfcIdListList = function () {
  4069. return this.setNfcIdListList([]);
  4070. };
  4071. /**
  4072. * optional int64 on_map_x = 4;
  4073. * @return {number}
  4074. */
  4075. proto.base.v1.ControlPoint.prototype.getOnMapX = function () {
  4076. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)
  4077. );
  4078. };
  4079. /**
  4080. * @param {number} value
  4081. * @return {!proto.base.v1.ControlPoint} returns this
  4082. */
  4083. proto.base.v1.ControlPoint.prototype.setOnMapX = function (value) {
  4084. return jspb.Message.setProto3IntField(this, 4, value);
  4085. };
  4086. /**
  4087. * optional int64 on_map_y = 5;
  4088. * @return {number}
  4089. */
  4090. proto.base.v1.ControlPoint.prototype.getOnMapY = function () {
  4091. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 5, 0)
  4092. );
  4093. };
  4094. /**
  4095. * @param {number} value
  4096. * @return {!proto.base.v1.ControlPoint} returns this
  4097. */
  4098. proto.base.v1.ControlPoint.prototype.setOnMapY = function (value) {
  4099. return jspb.Message.setProto3IntField(this, 5, value);
  4100. };
  4101. /**
  4102. * optional string sn = 6;
  4103. * @return {string}
  4104. */
  4105. proto.base.v1.ControlPoint.prototype.getSn = function () {
  4106. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 6, "")
  4107. );
  4108. };
  4109. /**
  4110. * @param {string} value
  4111. * @return {!proto.base.v1.ControlPoint} returns this
  4112. */
  4113. proto.base.v1.ControlPoint.prototype.setSn = function (value) {
  4114. return jspb.Message.setProto3StringField(this, 6, value);
  4115. };
  4116. /**
  4117. * optional Position ciPosition = 7;
  4118. * @return {?proto.base.v1.Position}
  4119. */
  4120. proto.base.v1.ControlPoint.prototype.getCiposition = function () {
  4121. return (/** @type{?proto.base.v1.Position} */
  4122. jspb.Message.getWrapperField(this, proto.base.v1.Position, 7)
  4123. );
  4124. };
  4125. /**
  4126. * @param {?proto.base.v1.Position|undefined} value
  4127. * @return {!proto.base.v1.ControlPoint} returns this
  4128. */
  4129. proto.base.v1.ControlPoint.prototype.setCiposition = function (value) {
  4130. return jspb.Message.setWrapperField(this, 7, value);
  4131. };
  4132. /**
  4133. * Clears the message field making it undefined.
  4134. * @return {!proto.base.v1.ControlPoint} returns this
  4135. */
  4136. proto.base.v1.ControlPoint.prototype.clearCiposition = function () {
  4137. return this.setCiposition(undefined);
  4138. };
  4139. /**
  4140. * Returns whether this field is set.
  4141. * @return {boolean}
  4142. */
  4143. proto.base.v1.ControlPoint.prototype.hasCiposition = function () {
  4144. return jspb.Message.getField(this, 7) != null;
  4145. };
  4146. /**
  4147. * List of repeated fields within this message type.
  4148. * @private {!Array<number>}
  4149. * @const
  4150. */
  4151. proto.base.v1.ControlPointSimple.repeatedFields_ = [2];
  4152. if (jspb.Message.GENERATE_TO_OBJECT) {
  4153. /**
  4154. * Creates an object representation of this proto.
  4155. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  4156. * Optional fields that are not set will be set to undefined.
  4157. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  4158. * For the list of reserved names please see:
  4159. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  4160. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  4161. * JSPB instance for transitional soy proto support:
  4162. * http://goto/soy-param-migration
  4163. * @return {!Object}
  4164. */
  4165. proto.base.v1.ControlPointSimple.prototype.toObject = function (opt_includeInstance) {
  4166. return proto.base.v1.ControlPointSimple.toObject(opt_includeInstance, this);
  4167. };
  4168. /**
  4169. * Static version of the {@see toObject} method.
  4170. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  4171. * the JSPB instance for transitional soy proto support:
  4172. * http://goto/soy-param-migration
  4173. * @param {!proto.base.v1.ControlPointSimple} msg The msg instance to transform.
  4174. * @return {!Object}
  4175. * @suppress {unusedLocalVariables} f is only used for nested messages
  4176. */
  4177. proto.base.v1.ControlPointSimple.toObject = function (includeInstance, msg) {
  4178. var f,
  4179. obj = {
  4180. id: jspb.Message.getFieldWithDefault(msg, 1, 0),
  4181. nfcIdListList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
  4182. sn: jspb.Message.getFieldWithDefault(msg, 3, "")
  4183. };
  4184. if (includeInstance) {
  4185. obj.$jspbMessageInstance = msg;
  4186. }
  4187. return obj;
  4188. };
  4189. }
  4190. /**
  4191. * Deserializes binary data (in protobuf wire format).
  4192. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  4193. * @return {!proto.base.v1.ControlPointSimple}
  4194. */
  4195. proto.base.v1.ControlPointSimple.deserializeBinary = function (bytes) {
  4196. var reader = new jspb.BinaryReader(bytes);
  4197. var msg = new proto.base.v1.ControlPointSimple();
  4198. return proto.base.v1.ControlPointSimple.deserializeBinaryFromReader(msg, reader);
  4199. };
  4200. /**
  4201. * Deserializes binary data (in protobuf wire format) from the
  4202. * given reader into the given message object.
  4203. * @param {!proto.base.v1.ControlPointSimple} msg The message object to deserialize into.
  4204. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  4205. * @return {!proto.base.v1.ControlPointSimple}
  4206. */
  4207. proto.base.v1.ControlPointSimple.deserializeBinaryFromReader = function (msg, reader) {
  4208. while (reader.nextField()) {
  4209. if (reader.isEndGroup()) {
  4210. break;
  4211. }
  4212. var field = reader.getFieldNumber();
  4213. switch (field) {
  4214. case 1:
  4215. var value = /** @type {number} */reader.readInt64();
  4216. msg.setId(value);
  4217. break;
  4218. case 2:
  4219. var value = /** @type {string} */reader.readString();
  4220. msg.addNfcIdList(value);
  4221. break;
  4222. case 3:
  4223. var value = /** @type {string} */reader.readString();
  4224. msg.setSn(value);
  4225. break;
  4226. default:
  4227. reader.skipField();
  4228. break;
  4229. }
  4230. }
  4231. return msg;
  4232. };
  4233. /**
  4234. * Serializes the message to binary data (in protobuf wire format).
  4235. * @return {!Uint8Array}
  4236. */
  4237. proto.base.v1.ControlPointSimple.prototype.serializeBinary = function () {
  4238. var writer = new jspb.BinaryWriter();
  4239. proto.base.v1.ControlPointSimple.serializeBinaryToWriter(this, writer);
  4240. return writer.getResultBuffer();
  4241. };
  4242. /**
  4243. * Serializes the given message to binary data (in protobuf wire
  4244. * format), writing to the given BinaryWriter.
  4245. * @param {!proto.base.v1.ControlPointSimple} message
  4246. * @param {!jspb.BinaryWriter} writer
  4247. * @suppress {unusedLocalVariables} f is only used for nested messages
  4248. */
  4249. proto.base.v1.ControlPointSimple.serializeBinaryToWriter = function (message, writer) {
  4250. var f = undefined;
  4251. f = message.getId();
  4252. if (f !== 0) {
  4253. writer.writeInt64(1, f);
  4254. }
  4255. f = message.getNfcIdListList();
  4256. if (f.length > 0) {
  4257. writer.writeRepeatedString(2, f);
  4258. }
  4259. f = message.getSn();
  4260. if (f.length > 0) {
  4261. writer.writeString(3, f);
  4262. }
  4263. };
  4264. /**
  4265. * optional int64 id = 1;
  4266. * @return {number}
  4267. */
  4268. proto.base.v1.ControlPointSimple.prototype.getId = function () {
  4269. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  4270. );
  4271. };
  4272. /**
  4273. * @param {number} value
  4274. * @return {!proto.base.v1.ControlPointSimple} returns this
  4275. */
  4276. proto.base.v1.ControlPointSimple.prototype.setId = function (value) {
  4277. return jspb.Message.setProto3IntField(this, 1, value);
  4278. };
  4279. /**
  4280. * repeated string nfc_id_list = 2;
  4281. * @return {!Array<string>}
  4282. */
  4283. proto.base.v1.ControlPointSimple.prototype.getNfcIdListList = function () {
  4284. return (/** @type {!Array<string>} */jspb.Message.getRepeatedField(this, 2)
  4285. );
  4286. };
  4287. /**
  4288. * @param {!Array<string>} value
  4289. * @return {!proto.base.v1.ControlPointSimple} returns this
  4290. */
  4291. proto.base.v1.ControlPointSimple.prototype.setNfcIdListList = function (value) {
  4292. return jspb.Message.setField(this, 2, value || []);
  4293. };
  4294. /**
  4295. * @param {string} value
  4296. * @param {number=} opt_index
  4297. * @return {!proto.base.v1.ControlPointSimple} returns this
  4298. */
  4299. proto.base.v1.ControlPointSimple.prototype.addNfcIdList = function (value, opt_index) {
  4300. return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
  4301. };
  4302. /**
  4303. * Clears the list making it empty but non-null.
  4304. * @return {!proto.base.v1.ControlPointSimple} returns this
  4305. */
  4306. proto.base.v1.ControlPointSimple.prototype.clearNfcIdListList = function () {
  4307. return this.setNfcIdListList([]);
  4308. };
  4309. /**
  4310. * optional string sn = 3;
  4311. * @return {string}
  4312. */
  4313. proto.base.v1.ControlPointSimple.prototype.getSn = function () {
  4314. return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 3, "")
  4315. );
  4316. };
  4317. /**
  4318. * @param {string} value
  4319. * @return {!proto.base.v1.ControlPointSimple} returns this
  4320. */
  4321. proto.base.v1.ControlPointSimple.prototype.setSn = function (value) {
  4322. return jspb.Message.setProto3StringField(this, 3, value);
  4323. };
  4324. /**
  4325. * @enum {number}
  4326. */
  4327. proto.base.v1.ErrorCode = {
  4328. OK: 0,
  4329. TOKENEXPIRE: 1000,
  4330. USERBAN: 1001,
  4331. VFCODEEXPIRE: 1002,
  4332. SMSSENDFAIL: 1003,
  4333. USERSTATUSERR: 1008,
  4334. STATUSERR: 1009,
  4335. PHONENOTEXIST: 2001,
  4336. UNKNOWNERR: 2002,
  4337. PARAMERR: 5000,
  4338. HEADSOURCEERR: 5001,
  4339. DATABASE: 9000,
  4340. NORECORD: 9001
  4341. };
  4342. /**
  4343. * @enum {number}
  4344. */
  4345. proto.base.v1.ShopType = {
  4346. UNKNOWSHOP: 0,
  4347. PARKSHOP: 1,
  4348. IPSHOP: 2,
  4349. ADMINSHOP: 3
  4350. };
  4351. /**
  4352. * @enum {number}
  4353. */
  4354. proto.base.v1.UserType = {
  4355. UNDEFINE: 0,
  4356. APPUSER: 1,
  4357. PARKADMIN: 2,
  4358. IPADMIN: 3,
  4359. SYSADMIN: 4
  4360. };
  4361. /**
  4362. * @enum {number}
  4363. */
  4364. proto.base.v1.LoginSource = {
  4365. UNDEF: 0,
  4366. USERAPP: 1,
  4367. WEBADMIN: 2,
  4368. SHOPAPP: 3
  4369. };
  4370. /**
  4371. * @enum {number}
  4372. */
  4373. proto.base.v1.SmsType = {
  4374. UNKNOW: 0,
  4375. LOGIN: 1,
  4376. SIGNUP: 2
  4377. };
  4378. /**
  4379. * @enum {number}
  4380. */
  4381. proto.base.v1.ProjectContentType = {
  4382. TEXT: 0,
  4383. HTML: 1
  4384. };
  4385. /**
  4386. * @enum {number}
  4387. */
  4388. proto.base.v1.CriterionType = {
  4389. CRUNKNOW: 0,
  4390. CRORDER: 1,
  4391. CRNUM: 2
  4392. };
  4393. /**
  4394. * @enum {number}
  4395. */
  4396. proto.base.v1.CType = {
  4397. UNKNOWTYPE: 0,
  4398. BEGINTYPE: 1,
  4399. MIDDLETYPE: 2,
  4400. ENDTYPE: 3
  4401. };
  4402. /**
  4403. * @enum {number}
  4404. */
  4405. proto.base.v1.StatusType = {
  4406. UNKNOWSTATUS: 0,
  4407. NORMALSTATUS: 1,
  4408. DISABLEDSTATUS: 8,
  4409. DELETESTATUS: 9
  4410. };
  4411. goog.object.extend(exports, proto.base.v1);
  4412. /***/ }),
  4413. /* 23 */
  4414. /*!******************************************************************************************!*\
  4415. !*** D:/Work2/Orienteering/TrackOffical/node_modules/google-protobuf/google-protobuf.js ***!
  4416. \******************************************************************************************/
  4417. /*! no static exports found */
  4418. /***/ (function(module, exports, __webpack_require__) {
  4419. /* WEBPACK VAR INJECTION */(function(global) {var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 10);
  4420. /*
  4421. Copyright The Closure Library Authors.
  4422. SPDX-License-Identifier: Apache-2.0
  4423. */
  4424. var $jscomp = $jscomp || {};
  4425. $jscomp.scope = {};
  4426. $jscomp.findInternal = function (a, b, c) {
  4427. a instanceof String && (a = String(a));
  4428. for (var d = a.length, e = 0; e < d; e++) {
  4429. var f = a[e];
  4430. if (b.call(c, f, e, a)) return {
  4431. i: e,
  4432. v: f
  4433. };
  4434. }
  4435. return {
  4436. i: -1,
  4437. v: void 0
  4438. };
  4439. };
  4440. $jscomp.ASSUME_ES5 = !1;
  4441. $jscomp.ASSUME_NO_NATIVE_MAP = !1;
  4442. $jscomp.ASSUME_NO_NATIVE_SET = !1;
  4443. $jscomp.SIMPLE_FROUND_POLYFILL = !1;
  4444. $jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function (a, b, c) {
  4445. a != Array.prototype && a != Object.prototype && (a[b] = c.value);
  4446. };
  4447. $jscomp.getGlobal = function (a) {
  4448. return "undefined" != typeof window && window === a ? a : "undefined" != typeof global && null != global ? global : a;
  4449. };
  4450. $jscomp.global = $jscomp.getGlobal(this);
  4451. $jscomp.polyfill = function (a, b, c, d) {
  4452. if (b) {
  4453. c = $jscomp.global;
  4454. a = a.split(".");
  4455. for (d = 0; d < a.length - 1; d++) {
  4456. var e = a[d];
  4457. e in c || (c[e] = {});
  4458. c = c[e];
  4459. }
  4460. a = a[a.length - 1];
  4461. d = c[a];
  4462. b = b(d);
  4463. b != d && null != b && $jscomp.defineProperty(c, a, {
  4464. configurable: !0,
  4465. writable: !0,
  4466. value: b
  4467. });
  4468. }
  4469. };
  4470. $jscomp.polyfill("Array.prototype.findIndex", function (a) {
  4471. return a ? a : function (a, c) {
  4472. return $jscomp.findInternal(this, a, c).i;
  4473. };
  4474. }, "es6", "es3");
  4475. $jscomp.checkStringArgs = function (a, b, c) {
  4476. if (null == a) throw new TypeError("The 'this' value for String.prototype." + c + " must not be null or undefined");
  4477. if (b instanceof RegExp) throw new TypeError("First argument to String.prototype." + c + " must not be a regular expression");
  4478. return a + "";
  4479. };
  4480. $jscomp.polyfill("String.prototype.endsWith", function (a) {
  4481. return a ? a : function (a, c) {
  4482. var b = $jscomp.checkStringArgs(this, a, "endsWith");
  4483. a += "";
  4484. void 0 === c && (c = b.length);
  4485. c = Math.max(0, Math.min(c | 0, b.length));
  4486. for (var e = a.length; 0 < e && 0 < c;) {
  4487. if (b[--c] != a[--e]) return !1;
  4488. }
  4489. return 0 >= e;
  4490. };
  4491. }, "es6", "es3");
  4492. $jscomp.polyfill("Array.prototype.find", function (a) {
  4493. return a ? a : function (a, c) {
  4494. return $jscomp.findInternal(this, a, c).v;
  4495. };
  4496. }, "es6", "es3");
  4497. $jscomp.polyfill("String.prototype.startsWith", function (a) {
  4498. return a ? a : function (a, c) {
  4499. var b = $jscomp.checkStringArgs(this, a, "startsWith");
  4500. a += "";
  4501. var e = b.length,
  4502. f = a.length;
  4503. c = Math.max(0, Math.min(c | 0, b.length));
  4504. for (var g = 0; g < f && c < e;) {
  4505. if (b[c++] != a[g++]) return !1;
  4506. }
  4507. return g >= f;
  4508. };
  4509. }, "es6", "es3");
  4510. $jscomp.polyfill("String.prototype.repeat", function (a) {
  4511. return a ? a : function (a) {
  4512. var b = $jscomp.checkStringArgs(this, null, "repeat");
  4513. if (0 > a || 1342177279 < a) throw new RangeError("Invalid count value");
  4514. a |= 0;
  4515. for (var d = ""; a;) {
  4516. if (a & 1 && (d += b), a >>>= 1) b += b;
  4517. }
  4518. return d;
  4519. };
  4520. }, "es6", "es3");
  4521. var COMPILED = !0,
  4522. goog = goog || {};
  4523. goog.global = this || self;
  4524. goog.exportPath_ = function (a, b, c) {
  4525. a = a.split(".");
  4526. c = c || goog.global;
  4527. a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]);
  4528. for (var d; a.length && (d = a.shift());) {
  4529. a.length || void 0 === b ? c = c[d] && c[d] !== Object.prototype[d] ? c[d] : c[d] = {} : c[d] = b;
  4530. }
  4531. };
  4532. goog.define = function (a, b) {
  4533. if (!COMPILED) {
  4534. var c = goog.global.CLOSURE_UNCOMPILED_DEFINES,
  4535. d = goog.global.CLOSURE_DEFINES;
  4536. c && void 0 === c.nodeType && Object.prototype.hasOwnProperty.call(c, a) ? b = c[a] : d && void 0 === d.nodeType && Object.prototype.hasOwnProperty.call(d, a) && (b = d[a]);
  4537. }
  4538. return b;
  4539. };
  4540. goog.FEATURESET_YEAR = 2012;
  4541. goog.DEBUG = !0;
  4542. goog.LOCALE = "en";
  4543. goog.TRUSTED_SITE = !0;
  4544. goog.STRICT_MODE_COMPATIBLE = !1;
  4545. goog.DISALLOW_TEST_ONLY_CODE = COMPILED && !goog.DEBUG;
  4546. goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1;
  4547. goog.provide = function (a) {
  4548. if (goog.isInModuleLoader_()) throw Error("goog.provide cannot be used within a module.");
  4549. if (!COMPILED && goog.isProvided_(a)) throw Error('Namespace "' + a + '" already declared.');
  4550. goog.constructNamespace_(a);
  4551. };
  4552. goog.constructNamespace_ = function (a, b) {
  4553. if (!COMPILED) {
  4554. delete goog.implicitNamespaces_[a];
  4555. for (var c = a; (c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);) {
  4556. goog.implicitNamespaces_[c] = !0;
  4557. }
  4558. }
  4559. goog.exportPath_(a, b);
  4560. };
  4561. goog.getScriptNonce = function (a) {
  4562. if (a && a != goog.global) return goog.getScriptNonce_(a.document);
  4563. null === goog.cspNonce_ && (goog.cspNonce_ = goog.getScriptNonce_(goog.global.document));
  4564. return goog.cspNonce_;
  4565. };
  4566. goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/;
  4567. goog.cspNonce_ = null;
  4568. goog.getScriptNonce_ = function (a) {
  4569. return (a = a.querySelector && a.querySelector("script[nonce]")) && (a = a.nonce || a.getAttribute("nonce")) && goog.NONCE_PATTERN_.test(a) ? a : "";
  4570. };
  4571. goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
  4572. goog.module = function (a) {
  4573. if ("string" !== typeof a || !a || -1 == a.search(goog.VALID_MODULE_RE_)) throw Error("Invalid module identifier");
  4574. if (!goog.isInGoogModuleLoader_()) throw Error("Module " + a + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");
  4575. if (goog.moduleLoaderState_.moduleName) throw Error("goog.module may only be called once per module.");
  4576. goog.moduleLoaderState_.moduleName = a;
  4577. if (!COMPILED) {
  4578. if (goog.isProvided_(a)) throw Error('Namespace "' + a + '" already declared.');
  4579. delete goog.implicitNamespaces_[a];
  4580. }
  4581. };
  4582. goog.module.get = function (a) {
  4583. return goog.module.getInternal_(a);
  4584. };
  4585. goog.module.getInternal_ = function (a) {
  4586. if (!COMPILED) {
  4587. if (a in goog.loadedModules_) return goog.loadedModules_[a].exports;
  4588. if (!goog.implicitNamespaces_[a]) return a = goog.getObjectByName(a), null != a ? a : null;
  4589. }
  4590. return null;
  4591. };
  4592. goog.ModuleType = {
  4593. ES6: "es6",
  4594. GOOG: "goog"
  4595. };
  4596. goog.moduleLoaderState_ = null;
  4597. goog.isInModuleLoader_ = function () {
  4598. return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_();
  4599. };
  4600. goog.isInGoogModuleLoader_ = function () {
  4601. return !!goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.GOOG;
  4602. };
  4603. goog.isInEs6ModuleLoader_ = function () {
  4604. if (goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.ES6) return !0;
  4605. var a = goog.global.$jscomp;
  4606. return a ? "function" != typeof a.getCurrentModulePath ? !1 : !!a.getCurrentModulePath() : !1;
  4607. };
  4608. goog.module.declareLegacyNamespace = function () {
  4609. if (!COMPILED && !goog.isInGoogModuleLoader_()) throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");
  4610. if (!COMPILED && !goog.moduleLoaderState_.moduleName) throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");
  4611. goog.moduleLoaderState_.declareLegacyNamespace = !0;
  4612. };
  4613. goog.declareModuleId = function (a) {
  4614. if (!COMPILED) {
  4615. if (!goog.isInEs6ModuleLoader_()) throw Error("goog.declareModuleId may only be called from within an ES6 module");
  4616. if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName) throw Error("goog.declareModuleId may only be called once per module.");
  4617. if (a in goog.loadedModules_) throw Error('Module with namespace "' + a + '" already exists.');
  4618. }
  4619. if (goog.moduleLoaderState_) goog.moduleLoaderState_.moduleName = a;else {
  4620. var b = goog.global.$jscomp;
  4621. if (!b || "function" != typeof b.getCurrentModulePath) throw Error('Module with namespace "' + a + '" has been loaded incorrectly.');
  4622. b = b.require(b.getCurrentModulePath());
  4623. goog.loadedModules_[a] = {
  4624. exports: b,
  4625. type: goog.ModuleType.ES6,
  4626. moduleId: a
  4627. };
  4628. }
  4629. };
  4630. goog.setTestOnly = function (a) {
  4631. if (goog.DISALLOW_TEST_ONLY_CODE) throw a = a || "", Error("Importing test-only code into non-debug environment" + (a ? ": " + a : "."));
  4632. };
  4633. goog.forwardDeclare = function (a) {};
  4634. COMPILED || (goog.isProvided_ = function (a) {
  4635. return a in goog.loadedModules_ || !goog.implicitNamespaces_[a] && null != goog.getObjectByName(a);
  4636. }, goog.implicitNamespaces_ = {
  4637. "goog.module": !0
  4638. });
  4639. goog.getObjectByName = function (a, b) {
  4640. a = a.split(".");
  4641. b = b || goog.global;
  4642. for (var c = 0; c < a.length; c++) {
  4643. if (b = b[a[c]], null == b) return null;
  4644. }
  4645. return b;
  4646. };
  4647. goog.globalize = function (a, b) {
  4648. b = b || goog.global;
  4649. for (var c in a) {
  4650. b[c] = a[c];
  4651. }
  4652. };
  4653. goog.addDependency = function (a, b, c, d) {
  4654. !COMPILED && goog.DEPENDENCIES_ENABLED && goog.debugLoader_.addDependency(a, b, c, d);
  4655. };
  4656. goog.ENABLE_DEBUG_LOADER = !0;
  4657. goog.logToConsole_ = function (a) {
  4658. goog.global.console && goog.global.console.error(a);
  4659. };
  4660. goog.require = function (a) {
  4661. if (!COMPILED) {
  4662. goog.ENABLE_DEBUG_LOADER && goog.debugLoader_.requested(a);
  4663. if (goog.isProvided_(a)) {
  4664. if (goog.isInModuleLoader_()) return goog.module.getInternal_(a);
  4665. } else if (goog.ENABLE_DEBUG_LOADER) {
  4666. var b = goog.moduleLoaderState_;
  4667. goog.moduleLoaderState_ = null;
  4668. try {
  4669. goog.debugLoader_.load_(a);
  4670. } finally {
  4671. goog.moduleLoaderState_ = b;
  4672. }
  4673. }
  4674. return null;
  4675. }
  4676. };
  4677. goog.requireType = function (a) {
  4678. return {};
  4679. };
  4680. goog.basePath = "";
  4681. goog.nullFunction = function () {};
  4682. goog.abstractMethod = function () {
  4683. throw Error("unimplemented abstract method");
  4684. };
  4685. goog.addSingletonGetter = function (a) {
  4686. a.instance_ = void 0;
  4687. a.getInstance = function () {
  4688. if (a.instance_) return a.instance_;
  4689. goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a);
  4690. return a.instance_ = new a();
  4691. };
  4692. };
  4693. goog.instantiatedSingletons_ = [];
  4694. goog.LOAD_MODULE_USING_EVAL = !0;
  4695. goog.SEAL_MODULE_EXPORTS = goog.DEBUG;
  4696. goog.loadedModules_ = {};
  4697. goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
  4698. goog.TRANSPILE = "detect";
  4699. goog.ASSUME_ES_MODULES_TRANSPILED = !1;
  4700. goog.TRANSPILE_TO_LANGUAGE = "";
  4701. goog.TRANSPILER = "transpile.js";
  4702. goog.hasBadLetScoping = null;
  4703. goog.useSafari10Workaround = function () {
  4704. if (null == goog.hasBadLetScoping) {
  4705. try {
  4706. var a = !eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";');
  4707. } catch (b) {
  4708. a = !1;
  4709. }
  4710. goog.hasBadLetScoping = a;
  4711. }
  4712. return goog.hasBadLetScoping;
  4713. };
  4714. goog.workaroundSafari10EvalBug = function (a) {
  4715. return "(function(){" + a + "\n;})();\n";
  4716. };
  4717. goog.loadModule = function (a) {
  4718. var b = goog.moduleLoaderState_;
  4719. try {
  4720. goog.moduleLoaderState_ = {
  4721. moduleName: "",
  4722. declareLegacyNamespace: !1,
  4723. type: goog.ModuleType.GOOG
  4724. };
  4725. if (goog.isFunction(a)) var c = a.call(void 0, {});else if ("string" === typeof a) goog.useSafari10Workaround() && (a = goog.workaroundSafari10EvalBug(a)), c = goog.loadModuleFromSource_.call(void 0, a);else throw Error("Invalid module definition");
  4726. var d = goog.moduleLoaderState_.moduleName;
  4727. if ("string" === typeof d && d) goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && "object" == _typeof(c) && null != c && Object.seal(c), goog.loadedModules_[d] = {
  4728. exports: c,
  4729. type: goog.ModuleType.GOOG,
  4730. moduleId: goog.moduleLoaderState_.moduleName
  4731. };else throw Error('Invalid module name "' + d + '"');
  4732. } finally {
  4733. goog.moduleLoaderState_ = b;
  4734. }
  4735. };
  4736. goog.loadModuleFromSource_ = function (a) {
  4737. eval(a);
  4738. return {};
  4739. };
  4740. goog.normalizePath_ = function (a) {
  4741. a = a.split("/");
  4742. for (var b = 0; b < a.length;) {
  4743. "." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++;
  4744. }
  4745. return a.join("/");
  4746. };
  4747. goog.loadFileSync_ = function (a) {
  4748. if (goog.global.CLOSURE_LOAD_FILE_SYNC) return goog.global.CLOSURE_LOAD_FILE_SYNC(a);
  4749. try {
  4750. var b = new goog.global.XMLHttpRequest();
  4751. b.open("get", a, !1);
  4752. b.send();
  4753. return 0 == b.status || 200 == b.status ? b.responseText : null;
  4754. } catch (c) {
  4755. return null;
  4756. }
  4757. };
  4758. goog.transpile_ = function (a, b, c) {
  4759. var d = goog.global.$jscomp;
  4760. d || (goog.global.$jscomp = d = {});
  4761. var e = d.transpile;
  4762. if (!e) {
  4763. var f = goog.basePath + goog.TRANSPILER,
  4764. g = goog.loadFileSync_(f);
  4765. if (g) {
  4766. (function () {
  4767. (0, eval)(g + "\n//# sourceURL=" + f);
  4768. }).call(goog.global);
  4769. if (goog.global.$gwtExport && goog.global.$gwtExport.$jscomp && !goog.global.$gwtExport.$jscomp.transpile) throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: ' + JSON.stringify(goog.global.$gwtExport));
  4770. goog.global.$jscomp.transpile = goog.global.$gwtExport.$jscomp.transpile;
  4771. d = goog.global.$jscomp;
  4772. e = d.transpile;
  4773. }
  4774. }
  4775. e || (e = d.transpile = function (a, b) {
  4776. goog.logToConsole_(b + " requires transpilation but no transpiler was found.");
  4777. return a;
  4778. });
  4779. return e(a, b, c);
  4780. };
  4781. goog.typeOf = function (a) {
  4782. var b = _typeof(a);
  4783. if ("object" == b) {
  4784. if (a) {
  4785. if (a instanceof Array) return "array";
  4786. if (a instanceof Object) return b;
  4787. var c = Object.prototype.toString.call(a);
  4788. if ("[object Window]" == c) return "object";
  4789. if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
  4790. if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function";
  4791. } else return "null";
  4792. } else if ("function" == b && "undefined" == typeof a.call) return "object";
  4793. return b;
  4794. };
  4795. goog.isArray = function (a) {
  4796. return "array" == goog.typeOf(a);
  4797. };
  4798. goog.isArrayLike = function (a) {
  4799. var b = goog.typeOf(a);
  4800. return "array" == b || "object" == b && "number" == typeof a.length;
  4801. };
  4802. goog.isDateLike = function (a) {
  4803. return goog.isObject(a) && "function" == typeof a.getFullYear;
  4804. };
  4805. goog.isFunction = function (a) {
  4806. return "function" == goog.typeOf(a);
  4807. };
  4808. goog.isObject = function (a) {
  4809. var b = _typeof(a);
  4810. return "object" == b && null != a || "function" == b;
  4811. };
  4812. goog.getUid = function (a) {
  4813. return Object.prototype.hasOwnProperty.call(a, goog.UID_PROPERTY_) && a[goog.UID_PROPERTY_] || (a[goog.UID_PROPERTY_] = ++goog.uidCounter_);
  4814. };
  4815. goog.hasUid = function (a) {
  4816. return !!a[goog.UID_PROPERTY_];
  4817. };
  4818. goog.removeUid = function (a) {
  4819. null !== a && "removeAttribute" in a && a.removeAttribute(goog.UID_PROPERTY_);
  4820. try {
  4821. delete a[goog.UID_PROPERTY_];
  4822. } catch (b) {}
  4823. };
  4824. goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0);
  4825. goog.uidCounter_ = 0;
  4826. goog.getHashCode = goog.getUid;
  4827. goog.removeHashCode = goog.removeUid;
  4828. goog.cloneObject = function (a) {
  4829. var b = goog.typeOf(a);
  4830. if ("object" == b || "array" == b) {
  4831. if ("function" === typeof a.clone) return a.clone();
  4832. b = "array" == b ? [] : {};
  4833. for (var c in a) {
  4834. b[c] = goog.cloneObject(a[c]);
  4835. }
  4836. return b;
  4837. }
  4838. return a;
  4839. };
  4840. goog.bindNative_ = function (a, b, c) {
  4841. return a.call.apply(a.bind, arguments);
  4842. };
  4843. goog.bindJs_ = function (a, b, c) {
  4844. if (!a) throw Error();
  4845. if (2 < arguments.length) {
  4846. var d = Array.prototype.slice.call(arguments, 2);
  4847. return function () {
  4848. var c = Array.prototype.slice.call(arguments);
  4849. Array.prototype.unshift.apply(c, d);
  4850. return a.apply(b, c);
  4851. };
  4852. }
  4853. return function () {
  4854. return a.apply(b, arguments);
  4855. };
  4856. };
  4857. goog.bind = function (a, b, c) {
  4858. Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_;
  4859. return goog.bind.apply(null, arguments);
  4860. };
  4861. goog.partial = function (a, b) {
  4862. var c = Array.prototype.slice.call(arguments, 1);
  4863. return function () {
  4864. var b = c.slice();
  4865. b.push.apply(b, arguments);
  4866. return a.apply(this, b);
  4867. };
  4868. };
  4869. goog.mixin = function (a, b) {
  4870. for (var c in b) {
  4871. a[c] = b[c];
  4872. }
  4873. };
  4874. goog.now = goog.TRUSTED_SITE && Date.now || function () {
  4875. return +new Date();
  4876. };
  4877. goog.globalEval = function (a) {
  4878. if (goog.global.execScript) goog.global.execScript(a, "JavaScript");else if (goog.global.eval) {
  4879. if (null == goog.evalWorksForGlobals_) {
  4880. try {
  4881. goog.global.eval("var _evalTest_ = 1;");
  4882. } catch (d) {}
  4883. if ("undefined" != typeof goog.global._evalTest_) {
  4884. try {
  4885. delete goog.global._evalTest_;
  4886. } catch (d) {}
  4887. goog.evalWorksForGlobals_ = !0;
  4888. } else goog.evalWorksForGlobals_ = !1;
  4889. }
  4890. if (goog.evalWorksForGlobals_) goog.global.eval(a);else {
  4891. var b = goog.global.document,
  4892. c = b.createElement("script");
  4893. c.type = "text/javascript";
  4894. c.defer = !1;
  4895. c.appendChild(b.createTextNode(a));
  4896. b.head.appendChild(c);
  4897. b.head.removeChild(c);
  4898. }
  4899. } else throw Error("goog.globalEval not available");
  4900. };
  4901. goog.evalWorksForGlobals_ = null;
  4902. goog.getCssName = function (a, b) {
  4903. if ("." == String(a).charAt(0)) throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + a);
  4904. var c = function c(a) {
  4905. return goog.cssNameMapping_[a] || a;
  4906. },
  4907. d = function d(a) {
  4908. a = a.split("-");
  4909. for (var b = [], d = 0; d < a.length; d++) {
  4910. b.push(c(a[d]));
  4911. }
  4912. return b.join("-");
  4913. };
  4914. d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function (a) {
  4915. return a;
  4916. };
  4917. a = b ? a + "-" + d(b) : d(a);
  4918. return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(a) : a;
  4919. };
  4920. goog.setCssNameMapping = function (a, b) {
  4921. goog.cssNameMapping_ = a;
  4922. goog.cssNameMappingStyle_ = b;
  4923. };
  4924. !COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING && (goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING);
  4925. goog.getMsg = function (a, b, c) {
  4926. c && c.html && (a = a.replace(/</g, "&lt;"));
  4927. b && (a = a.replace(/\{\$([^}]+)}/g, function (a, c) {
  4928. return null != b && c in b ? b[c] : a;
  4929. }));
  4930. return a;
  4931. };
  4932. goog.getMsgWithFallback = function (a, b) {
  4933. return a;
  4934. };
  4935. goog.exportSymbol = function (a, b, c) {
  4936. goog.exportPath_(a, b, c);
  4937. };
  4938. goog.exportProperty = function (a, b, c) {
  4939. a[b] = c;
  4940. };
  4941. goog.inherits = function (a, b) {
  4942. function c() {}
  4943. c.prototype = b.prototype;
  4944. a.superClass_ = b.prototype;
  4945. a.prototype = new c();
  4946. a.prototype.constructor = a;
  4947. a.base = function (a, c, f) {
  4948. for (var d = Array(arguments.length - 2), e = 2; e < arguments.length; e++) {
  4949. d[e - 2] = arguments[e];
  4950. }
  4951. return b.prototype[c].apply(a, d);
  4952. };
  4953. };
  4954. goog.scope = function (a) {
  4955. if (goog.isInModuleLoader_()) throw Error("goog.scope is not supported within a module.");
  4956. a.call(goog.global);
  4957. };
  4958. COMPILED || (goog.global.COMPILED = COMPILED);
  4959. goog.defineClass = function (a, b) {
  4960. var c = b.constructor,
  4961. d = b.statics;
  4962. c && c != Object.prototype.constructor || (c = function c() {
  4963. throw Error("cannot instantiate an interface (no constructor defined).");
  4964. });
  4965. c = goog.defineClass.createSealingConstructor_(c, a);
  4966. a && goog.inherits(c, a);
  4967. delete b.constructor;
  4968. delete b.statics;
  4969. goog.defineClass.applyProperties_(c.prototype, b);
  4970. null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d));
  4971. return c;
  4972. };
  4973. goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG;
  4974. goog.defineClass.createSealingConstructor_ = function (a, b) {
  4975. if (!goog.defineClass.SEAL_CLASS_INSTANCES) return a;
  4976. var c = !goog.defineClass.isUnsealable_(b),
  4977. d = function d() {
  4978. var b = a.apply(this, arguments) || this;
  4979. b[goog.UID_PROPERTY_] = b[goog.UID_PROPERTY_];
  4980. this.constructor === d && c && Object.seal instanceof Function && Object.seal(b);
  4981. return b;
  4982. };
  4983. return d;
  4984. };
  4985. goog.defineClass.isUnsealable_ = function (a) {
  4986. return a && a.prototype && a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_];
  4987. };
  4988. goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
  4989. goog.defineClass.applyProperties_ = function (a, b) {
  4990. for (var c in b) {
  4991. Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
  4992. }
  4993. for (var d = 0; d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; d++) {
  4994. c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d], Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
  4995. }
  4996. };
  4997. goog.tagUnsealableClass = function (a) {
  4998. !COMPILED && goog.defineClass.SEAL_CLASS_INSTANCES && (a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_] = !0);
  4999. };
  5000. goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_ = "goog_defineClass_legacy_unsealable";
  5001. !COMPILED && goog.DEPENDENCIES_ENABLED && (goog.inHtmlDocument_ = function () {
  5002. var a = goog.global.document;
  5003. return null != a && "write" in a;
  5004. }, goog.isDocumentLoading_ = function () {
  5005. var a = goog.global.document;
  5006. return a.attachEvent ? "complete" != a.readyState : "loading" == a.readyState;
  5007. }, goog.findBasePath_ = function () {
  5008. if (void 0 != goog.global.CLOSURE_BASE_PATH && "string" === typeof goog.global.CLOSURE_BASE_PATH) goog.basePath = goog.global.CLOSURE_BASE_PATH;else if (goog.inHtmlDocument_()) {
  5009. var a = goog.global.document,
  5010. b = a.currentScript;
  5011. a = b ? [b] : a.getElementsByTagName("SCRIPT");
  5012. for (b = a.length - 1; 0 <= b; --b) {
  5013. var c = a[b].src,
  5014. d = c.lastIndexOf("?");
  5015. d = -1 == d ? c.length : d;
  5016. if ("base.js" == c.substr(d - 7, 7)) {
  5017. goog.basePath = c.substr(0, d - 7);
  5018. break;
  5019. }
  5020. }
  5021. }
  5022. }, goog.findBasePath_(), goog.Transpiler = function () {
  5023. this.requiresTranspilation_ = null;
  5024. this.transpilationTarget_ = goog.TRANSPILE_TO_LANGUAGE;
  5025. }, goog.Transpiler.prototype.createRequiresTranspilation_ = function () {
  5026. function a(a, b) {
  5027. e ? d[a] = !0 : b() ? (c = a, d[a] = !1) : e = d[a] = !0;
  5028. }
  5029. function b(a) {
  5030. try {
  5031. return !!eval(a);
  5032. } catch (h) {
  5033. return !1;
  5034. }
  5035. }
  5036. var c = "es3",
  5037. d = {
  5038. es3: !1
  5039. },
  5040. e = !1,
  5041. f = goog.global.navigator && goog.global.navigator.userAgent ? goog.global.navigator.userAgent : "";
  5042. a("es5", function () {
  5043. return b("[1,].length==1");
  5044. });
  5045. a("es6", function () {
  5046. return f.match(/Edge\/(\d+)(\.\d)*/i) ? !1 : b('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()');
  5047. });
  5048. a("es7", function () {
  5049. return b("2 ** 2 == 4");
  5050. });
  5051. a("es8", function () {
  5052. return b("async () => 1, true");
  5053. });
  5054. a("es9", function () {
  5055. return b("({...rest} = {}), true");
  5056. });
  5057. a("es_next", function () {
  5058. return !1;
  5059. });
  5060. return {
  5061. target: c,
  5062. map: d
  5063. };
  5064. }, goog.Transpiler.prototype.needsTranspile = function (a, b) {
  5065. if ("always" == goog.TRANSPILE) return !0;
  5066. if ("never" == goog.TRANSPILE) return !1;
  5067. if (!this.requiresTranspilation_) {
  5068. var c = this.createRequiresTranspilation_();
  5069. this.requiresTranspilation_ = c.map;
  5070. this.transpilationTarget_ = this.transpilationTarget_ || c.target;
  5071. }
  5072. if (a in this.requiresTranspilation_) return this.requiresTranspilation_[a] ? !0 : !goog.inHtmlDocument_() || "es6" != b || "noModule" in goog.global.document.createElement("script") ? !1 : !0;
  5073. throw Error("Unknown language mode: " + a);
  5074. }, goog.Transpiler.prototype.transpile = function (a, b) {
  5075. return goog.transpile_(a, b, this.transpilationTarget_);
  5076. }, goog.transpiler_ = new goog.Transpiler(), goog.protectScriptTag_ = function (a) {
  5077. return a.replace(/<\/(SCRIPT)/ig, "\\x3c/$1");
  5078. }, goog.DebugLoader_ = function () {
  5079. this.dependencies_ = {};
  5080. this.idToPath_ = {};
  5081. this.written_ = {};
  5082. this.loadingDeps_ = [];
  5083. this.depsToLoad_ = [];
  5084. this.paused_ = !1;
  5085. this.factory_ = new goog.DependencyFactory(goog.transpiler_);
  5086. this.deferredCallbacks_ = {};
  5087. this.deferredQueue_ = [];
  5088. }, goog.DebugLoader_.prototype.bootstrap = function (a, b) {
  5089. function c() {
  5090. d && (goog.global.setTimeout(d, 0), d = null);
  5091. }
  5092. var d = b;
  5093. if (a.length) {
  5094. b = [];
  5095. for (var e = 0; e < a.length; e++) {
  5096. var f = this.getPathFromDeps_(a[e]);
  5097. if (!f) throw Error("Unregonized namespace: " + a[e]);
  5098. b.push(this.dependencies_[f]);
  5099. }
  5100. f = goog.require;
  5101. var g = 0;
  5102. for (e = 0; e < a.length; e++) {
  5103. f(a[e]), b[e].onLoad(function () {
  5104. ++g == a.length && c();
  5105. });
  5106. }
  5107. } else c();
  5108. }, goog.DebugLoader_.prototype.loadClosureDeps = function () {
  5109. this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath + "deps.js"), "deps.js", [], [], {}, !1));
  5110. this.loadDeps_();
  5111. }, goog.DebugLoader_.prototype.requested = function (a, b) {
  5112. (a = this.getPathFromDeps_(a)) && (b || this.areDepsLoaded_(this.dependencies_[a].requires)) && (b = this.deferredCallbacks_[a]) && (delete this.deferredCallbacks_[a], b());
  5113. }, goog.DebugLoader_.prototype.setDependencyFactory = function (a) {
  5114. this.factory_ = a;
  5115. }, goog.DebugLoader_.prototype.load_ = function (a) {
  5116. if (this.getPathFromDeps_(a)) {
  5117. var b = this,
  5118. c = [],
  5119. d = function d(a) {
  5120. var e = b.getPathFromDeps_(a);
  5121. if (!e) throw Error("Bad dependency path or symbol: " + a);
  5122. if (!b.written_[e]) {
  5123. b.written_[e] = !0;
  5124. a = b.dependencies_[e];
  5125. for (e = 0; e < a.requires.length; e++) {
  5126. goog.isProvided_(a.requires[e]) || d(a.requires[e]);
  5127. }
  5128. c.push(a);
  5129. }
  5130. };
  5131. d(a);
  5132. a = !!this.depsToLoad_.length;
  5133. this.depsToLoad_ = this.depsToLoad_.concat(c);
  5134. this.paused_ || a || this.loadDeps_();
  5135. } else throw a = "goog.require could not find: " + a, goog.logToConsole_(a), Error(a);
  5136. }, goog.DebugLoader_.prototype.loadDeps_ = function () {
  5137. for (var a = this, b = this.paused_; this.depsToLoad_.length && !b;) {
  5138. (function () {
  5139. var c = !1,
  5140. d = a.depsToLoad_.shift(),
  5141. e = !1;
  5142. a.loading_(d);
  5143. var f = {
  5144. pause: function pause() {
  5145. if (c) throw Error("Cannot call pause after the call to load.");
  5146. b = !0;
  5147. },
  5148. resume: function resume() {
  5149. c ? a.resume_() : b = !1;
  5150. },
  5151. loaded: function loaded() {
  5152. if (e) throw Error("Double call to loaded.");
  5153. e = !0;
  5154. a.loaded_(d);
  5155. },
  5156. pending: function pending() {
  5157. for (var b = [], c = 0; c < a.loadingDeps_.length; c++) {
  5158. b.push(a.loadingDeps_[c]);
  5159. }
  5160. return b;
  5161. },
  5162. setModuleState: function setModuleState(a) {
  5163. goog.moduleLoaderState_ = {
  5164. type: a,
  5165. moduleName: "",
  5166. declareLegacyNamespace: !1
  5167. };
  5168. },
  5169. registerEs6ModuleExports: function registerEs6ModuleExports(a, b, c) {
  5170. c && (goog.loadedModules_[c] = {
  5171. exports: b,
  5172. type: goog.ModuleType.ES6,
  5173. moduleId: c || ""
  5174. });
  5175. },
  5176. registerGoogModuleExports: function registerGoogModuleExports(a, b) {
  5177. goog.loadedModules_[a] = {
  5178. exports: b,
  5179. type: goog.ModuleType.GOOG,
  5180. moduleId: a
  5181. };
  5182. },
  5183. clearModuleState: function clearModuleState() {
  5184. goog.moduleLoaderState_ = null;
  5185. },
  5186. defer: function defer(b) {
  5187. if (c) throw Error("Cannot register with defer after the call to load.");
  5188. a.defer_(d, b);
  5189. },
  5190. areDepsLoaded: function areDepsLoaded() {
  5191. return a.areDepsLoaded_(d.requires);
  5192. }
  5193. };
  5194. try {
  5195. d.load(f);
  5196. } finally {
  5197. c = !0;
  5198. }
  5199. })();
  5200. }
  5201. b && this.pause_();
  5202. }, goog.DebugLoader_.prototype.pause_ = function () {
  5203. this.paused_ = !0;
  5204. }, goog.DebugLoader_.prototype.resume_ = function () {
  5205. this.paused_ && (this.paused_ = !1, this.loadDeps_());
  5206. }, goog.DebugLoader_.prototype.loading_ = function (a) {
  5207. this.loadingDeps_.push(a);
  5208. }, goog.DebugLoader_.prototype.loaded_ = function (a) {
  5209. for (var b = 0; b < this.loadingDeps_.length; b++) {
  5210. if (this.loadingDeps_[b] == a) {
  5211. this.loadingDeps_.splice(b, 1);
  5212. break;
  5213. }
  5214. }
  5215. for (b = 0; b < this.deferredQueue_.length; b++) {
  5216. if (this.deferredQueue_[b] == a.path) {
  5217. this.deferredQueue_.splice(b, 1);
  5218. break;
  5219. }
  5220. }
  5221. if (this.loadingDeps_.length == this.deferredQueue_.length && !this.depsToLoad_.length) for (; this.deferredQueue_.length;) {
  5222. this.requested(this.deferredQueue_.shift(), !0);
  5223. }
  5224. a.loaded();
  5225. }, goog.DebugLoader_.prototype.areDepsLoaded_ = function (a) {
  5226. for (var b = 0; b < a.length; b++) {
  5227. var c = this.getPathFromDeps_(a[b]);
  5228. if (!c || !(c in this.deferredCallbacks_ || goog.isProvided_(a[b]))) return !1;
  5229. }
  5230. return !0;
  5231. }, goog.DebugLoader_.prototype.getPathFromDeps_ = function (a) {
  5232. return a in this.idToPath_ ? this.idToPath_[a] : a in this.dependencies_ ? a : null;
  5233. }, goog.DebugLoader_.prototype.defer_ = function (a, b) {
  5234. this.deferredCallbacks_[a.path] = b;
  5235. this.deferredQueue_.push(a.path);
  5236. }, goog.LoadController = function () {}, goog.LoadController.prototype.pause = function () {}, goog.LoadController.prototype.resume = function () {}, goog.LoadController.prototype.loaded = function () {}, goog.LoadController.prototype.pending = function () {}, goog.LoadController.prototype.registerEs6ModuleExports = function (a, b, c) {}, goog.LoadController.prototype.setModuleState = function (a) {}, goog.LoadController.prototype.clearModuleState = function () {}, goog.LoadController.prototype.defer = function (a) {}, goog.LoadController.prototype.areDepsLoaded = function () {}, goog.Dependency = function (a, b, c, d, e) {
  5237. this.path = a;
  5238. this.relativePath = b;
  5239. this.provides = c;
  5240. this.requires = d;
  5241. this.loadFlags = e;
  5242. this.loaded_ = !1;
  5243. this.loadCallbacks_ = [];
  5244. }, goog.Dependency.prototype.getPathName = function () {
  5245. var a = this.path,
  5246. b = a.indexOf("://");
  5247. 0 <= b && (a = a.substring(b + 3), b = a.indexOf("/"), 0 <= b && (a = a.substring(b + 1)));
  5248. return a;
  5249. }, goog.Dependency.prototype.onLoad = function (a) {
  5250. this.loaded_ ? a() : this.loadCallbacks_.push(a);
  5251. }, goog.Dependency.prototype.loaded = function () {
  5252. this.loaded_ = !0;
  5253. var a = this.loadCallbacks_;
  5254. this.loadCallbacks_ = [];
  5255. for (var b = 0; b < a.length; b++) {
  5256. a[b]();
  5257. }
  5258. }, goog.Dependency.defer_ = !1, goog.Dependency.callbackMap_ = {}, goog.Dependency.registerCallback_ = function (a) {
  5259. var b = Math.random().toString(32);
  5260. goog.Dependency.callbackMap_[b] = a;
  5261. return b;
  5262. }, goog.Dependency.unregisterCallback_ = function (a) {
  5263. delete goog.Dependency.callbackMap_[a];
  5264. }, goog.Dependency.callback_ = function (a, b) {
  5265. if (a in goog.Dependency.callbackMap_) {
  5266. for (var c = goog.Dependency.callbackMap_[a], d = [], e = 1; e < arguments.length; e++) {
  5267. d.push(arguments[e]);
  5268. }
  5269. c.apply(void 0, d);
  5270. } else throw Error("Callback key " + a + " does not exist (was base.js loaded more than once?).");
  5271. }, goog.Dependency.prototype.load = function (a) {
  5272. if (goog.global.CLOSURE_IMPORT_SCRIPT) goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause();else if (goog.inHtmlDocument_()) {
  5273. var b = goog.global.document;
  5274. if ("complete" == b.readyState && !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) {
  5275. if (/\bdeps.js$/.test(this.path)) {
  5276. a.loaded();
  5277. return;
  5278. }
  5279. throw Error('Cannot write "' + this.path + '" after document load');
  5280. }
  5281. if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && goog.isDocumentLoading_()) {
  5282. var c = goog.Dependency.registerCallback_(function (b) {
  5283. goog.DebugLoader_.IS_OLD_IE_ && "complete" != b.readyState || (goog.Dependency.unregisterCallback_(c), a.loaded());
  5284. }),
  5285. d = !goog.DebugLoader_.IS_OLD_IE_ && goog.getScriptNonce() ? ' nonce="' + goog.getScriptNonce() + '"' : "";
  5286. d = '<script src="' + this.path + '" ' + (goog.DebugLoader_.IS_OLD_IE_ ? "onreadystatechange" : "onload") + "=\"goog.Dependency.callback_('" + c + '\', this)" type="text/javascript" ' + (goog.Dependency.defer_ ? "defer" : "") + d + ">\x3c/script>";
  5287. b.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(d) : d);
  5288. } else {
  5289. var e = b.createElement("script");
  5290. e.defer = goog.Dependency.defer_;
  5291. e.async = !1;
  5292. e.type = "text/javascript";
  5293. (d = goog.getScriptNonce()) && e.setAttribute("nonce", d);
  5294. goog.DebugLoader_.IS_OLD_IE_ ? (a.pause(), e.onreadystatechange = function () {
  5295. if ("loaded" == e.readyState || "complete" == e.readyState) a.loaded(), a.resume();
  5296. }) : e.onload = function () {
  5297. e.onload = null;
  5298. a.loaded();
  5299. };
  5300. e.src = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path) : this.path;
  5301. b.head.appendChild(e);
  5302. }
  5303. } else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."), "deps.js" == this.relativePath ? (goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."), a.loaded()) : a.pause();
  5304. }, goog.Es6ModuleDependency = function (a, b, c, d, e) {
  5305. goog.Dependency.call(this, a, b, c, d, e);
  5306. }, goog.inherits(goog.Es6ModuleDependency, goog.Dependency), goog.Es6ModuleDependency.prototype.load = function (a) {
  5307. function b(a, b) {
  5308. a = b ? '<script type="module" crossorigin>' + b + "\x3c/script>" : '<script type="module" crossorigin src="' + a + '">\x3c/script>';
  5309. d.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(a) : a);
  5310. }
  5311. function c(a, b) {
  5312. var c = d.createElement("script");
  5313. c.defer = !0;
  5314. c.async = !1;
  5315. c.type = "module";
  5316. c.setAttribute("crossorigin", !0);
  5317. var e = goog.getScriptNonce();
  5318. e && c.setAttribute("nonce", e);
  5319. b ? c.textContent = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScript(b) : b : c.src = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScriptURL(a) : a;
  5320. d.head.appendChild(c);
  5321. }
  5322. if (goog.global.CLOSURE_IMPORT_SCRIPT) goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause();else if (goog.inHtmlDocument_()) {
  5323. var d = goog.global.document,
  5324. e = this;
  5325. if (goog.isDocumentLoading_()) {
  5326. var f = b;
  5327. goog.Dependency.defer_ = !0;
  5328. } else f = c;
  5329. var g = goog.Dependency.registerCallback_(function () {
  5330. goog.Dependency.unregisterCallback_(g);
  5331. a.setModuleState(goog.ModuleType.ES6);
  5332. });
  5333. f(void 0, 'goog.Dependency.callback_("' + g + '")');
  5334. f(this.path, void 0);
  5335. var h = goog.Dependency.registerCallback_(function (b) {
  5336. goog.Dependency.unregisterCallback_(h);
  5337. a.registerEs6ModuleExports(e.path, b, goog.moduleLoaderState_.moduleName);
  5338. });
  5339. f(void 0, 'import * as m from "' + this.path + '"; goog.Dependency.callback_("' + h + '", m)');
  5340. var k = goog.Dependency.registerCallback_(function () {
  5341. goog.Dependency.unregisterCallback_(k);
  5342. a.clearModuleState();
  5343. a.loaded();
  5344. });
  5345. f(void 0, 'goog.Dependency.callback_("' + k + '")');
  5346. } else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."), a.pause();
  5347. }, goog.TransformedDependency = function (a, b, c, d, e) {
  5348. goog.Dependency.call(this, a, b, c, d, e);
  5349. this.contents_ = null;
  5350. this.lazyFetch_ = !goog.inHtmlDocument_() || !("noModule" in goog.global.document.createElement("script"));
  5351. }, goog.inherits(goog.TransformedDependency, goog.Dependency), goog.TransformedDependency.prototype.load = function (a) {
  5352. function b() {
  5353. e.contents_ = goog.loadFileSync_(e.path);
  5354. e.contents_ && (e.contents_ = e.transform(e.contents_), e.contents_ && (e.contents_ += "\n//# sourceURL=" + e.path));
  5355. }
  5356. function c() {
  5357. e.lazyFetch_ && b();
  5358. if (e.contents_) {
  5359. f && a.setModuleState(goog.ModuleType.ES6);
  5360. try {
  5361. var c = e.contents_;
  5362. e.contents_ = null;
  5363. goog.globalEval(c);
  5364. if (f) var d = goog.moduleLoaderState_.moduleName;
  5365. } finally {
  5366. f && a.clearModuleState();
  5367. }
  5368. f && goog.global.$jscomp.require.ensure([e.getPathName()], function () {
  5369. a.registerEs6ModuleExports(e.path, goog.global.$jscomp.require(e.getPathName()), d);
  5370. });
  5371. a.loaded();
  5372. }
  5373. }
  5374. function d() {
  5375. var a = goog.global.document,
  5376. b = goog.Dependency.registerCallback_(function () {
  5377. goog.Dependency.unregisterCallback_(b);
  5378. c();
  5379. }),
  5380. d = '<script type="text/javascript">' + goog.protectScriptTag_('goog.Dependency.callback_("' + b + '");') + "\x3c/script>";
  5381. a.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(d) : d);
  5382. }
  5383. var e = this;
  5384. if (goog.global.CLOSURE_IMPORT_SCRIPT) b(), this.contents_ && goog.global.CLOSURE_IMPORT_SCRIPT("", this.contents_) ? (this.contents_ = null, a.loaded()) : a.pause();else {
  5385. var f = this.loadFlags.module == goog.ModuleType.ES6;
  5386. this.lazyFetch_ || b();
  5387. var g = 1 < a.pending().length,
  5388. h = g && goog.DebugLoader_.IS_OLD_IE_;
  5389. g = goog.Dependency.defer_ && (g || goog.isDocumentLoading_());
  5390. if (h || g) a.defer(function () {
  5391. c();
  5392. });else {
  5393. var k = goog.global.document;
  5394. h = goog.inHtmlDocument_() && "ActiveXObject" in goog.global;
  5395. if (f && goog.inHtmlDocument_() && goog.isDocumentLoading_() && !h) {
  5396. goog.Dependency.defer_ = !0;
  5397. a.pause();
  5398. var l = k.onreadystatechange;
  5399. k.onreadystatechange = function () {
  5400. "interactive" == k.readyState && (k.onreadystatechange = l, c(), a.resume());
  5401. goog.isFunction(l) && l.apply(void 0, arguments);
  5402. };
  5403. } else !goog.DebugLoader_.IS_OLD_IE_ && goog.inHtmlDocument_() && goog.isDocumentLoading_() ? d() : c();
  5404. }
  5405. }
  5406. }, goog.TransformedDependency.prototype.transform = function (a) {}, goog.TranspiledDependency = function (a, b, c, d, e, f) {
  5407. goog.TransformedDependency.call(this, a, b, c, d, e);
  5408. this.transpiler = f;
  5409. }, goog.inherits(goog.TranspiledDependency, goog.TransformedDependency), goog.TranspiledDependency.prototype.transform = function (a) {
  5410. return this.transpiler.transpile(a, this.getPathName());
  5411. }, goog.PreTranspiledEs6ModuleDependency = function (a, b, c, d, e) {
  5412. goog.TransformedDependency.call(this, a, b, c, d, e);
  5413. }, goog.inherits(goog.PreTranspiledEs6ModuleDependency, goog.TransformedDependency), goog.PreTranspiledEs6ModuleDependency.prototype.transform = function (a) {
  5414. return a;
  5415. }, goog.GoogModuleDependency = function (a, b, c, d, e, f, g) {
  5416. goog.TransformedDependency.call(this, a, b, c, d, e);
  5417. this.needsTranspile_ = f;
  5418. this.transpiler_ = g;
  5419. }, goog.inherits(goog.GoogModuleDependency, goog.TransformedDependency), goog.GoogModuleDependency.prototype.transform = function (a) {
  5420. this.needsTranspile_ && (a = this.transpiler_.transpile(a, this.getPathName()));
  5421. return goog.LOAD_MODULE_USING_EVAL && void 0 !== goog.global.JSON ? "goog.loadModule(" + goog.global.JSON.stringify(a + "\n//# sourceURL=" + this.path + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + a + "\n;return exports});\n//# sourceURL=" + this.path + "\n";
  5422. }, goog.DebugLoader_.IS_OLD_IE_ = !(goog.global.atob || !goog.global.document || !goog.global.document.all), goog.DebugLoader_.prototype.addDependency = function (a, b, c, d) {
  5423. b = b || [];
  5424. a = a.replace(/\\/g, "/");
  5425. var e = goog.normalizePath_(goog.basePath + a);
  5426. d && "boolean" !== typeof d || (d = d ? {
  5427. module: goog.ModuleType.GOOG
  5428. } : {});
  5429. c = this.factory_.createDependency(e, a, b, c, d, goog.transpiler_.needsTranspile(d.lang || "es3", d.module));
  5430. this.dependencies_[e] = c;
  5431. for (c = 0; c < b.length; c++) {
  5432. this.idToPath_[b[c]] = e;
  5433. }
  5434. this.idToPath_[a] = e;
  5435. }, goog.DependencyFactory = function (a) {
  5436. this.transpiler = a;
  5437. }, goog.DependencyFactory.prototype.createDependency = function (a, b, c, d, e, f) {
  5438. return e.module == goog.ModuleType.GOOG ? new goog.GoogModuleDependency(a, b, c, d, e, f, this.transpiler) : f ? new goog.TranspiledDependency(a, b, c, d, e, this.transpiler) : e.module == goog.ModuleType.ES6 ? "never" == goog.TRANSPILE && goog.ASSUME_ES_MODULES_TRANSPILED ? new goog.PreTranspiledEs6ModuleDependency(a, b, c, d, e) : new goog.Es6ModuleDependency(a, b, c, d, e) : new goog.Dependency(a, b, c, d, e);
  5439. }, goog.debugLoader_ = new goog.DebugLoader_(), goog.loadClosureDeps = function () {
  5440. goog.debugLoader_.loadClosureDeps();
  5441. }, goog.setDependencyFactory = function (a) {
  5442. goog.debugLoader_.setDependencyFactory(a);
  5443. }, goog.global.CLOSURE_NO_DEPS || goog.debugLoader_.loadClosureDeps(), goog.bootstrap = function (a, b) {
  5444. goog.debugLoader_.bootstrap(a, b);
  5445. });
  5446. goog.TRUSTED_TYPES_POLICY_NAME = "";
  5447. goog.identity_ = function (a) {
  5448. return a;
  5449. };
  5450. goog.createTrustedTypesPolicy = function (a) {
  5451. var b = null,
  5452. c = goog.global.trustedTypes || goog.global.TrustedTypes;
  5453. if (!c || !c.createPolicy) return b;
  5454. try {
  5455. b = c.createPolicy(a, {
  5456. createHTML: goog.identity_,
  5457. createScript: goog.identity_,
  5458. createScriptURL: goog.identity_,
  5459. createURL: goog.identity_
  5460. });
  5461. } catch (d) {
  5462. goog.logToConsole_(d.message);
  5463. }
  5464. return b;
  5465. };
  5466. goog.TRUSTED_TYPES_POLICY_ = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#base") : null;
  5467. goog.object = {};
  5468. goog.object.is = function (a, b) {
  5469. return a === b ? 0 !== a || 1 / a === 1 / b : a !== a && b !== b;
  5470. };
  5471. goog.object.forEach = function (a, b, c) {
  5472. for (var d in a) {
  5473. b.call(c, a[d], d, a);
  5474. }
  5475. };
  5476. goog.object.filter = function (a, b, c) {
  5477. var d = {},
  5478. e;
  5479. for (e in a) {
  5480. b.call(c, a[e], e, a) && (d[e] = a[e]);
  5481. }
  5482. return d;
  5483. };
  5484. goog.object.map = function (a, b, c) {
  5485. var d = {},
  5486. e;
  5487. for (e in a) {
  5488. d[e] = b.call(c, a[e], e, a);
  5489. }
  5490. return d;
  5491. };
  5492. goog.object.some = function (a, b, c) {
  5493. for (var d in a) {
  5494. if (b.call(c, a[d], d, a)) return !0;
  5495. }
  5496. return !1;
  5497. };
  5498. goog.object.every = function (a, b, c) {
  5499. for (var d in a) {
  5500. if (!b.call(c, a[d], d, a)) return !1;
  5501. }
  5502. return !0;
  5503. };
  5504. goog.object.getCount = function (a) {
  5505. var b = 0,
  5506. c;
  5507. for (c in a) {
  5508. b++;
  5509. }
  5510. return b;
  5511. };
  5512. goog.object.getAnyKey = function (a) {
  5513. for (var b in a) {
  5514. return b;
  5515. }
  5516. };
  5517. goog.object.getAnyValue = function (a) {
  5518. for (var b in a) {
  5519. return a[b];
  5520. }
  5521. };
  5522. goog.object.contains = function (a, b) {
  5523. return goog.object.containsValue(a, b);
  5524. };
  5525. goog.object.getValues = function (a) {
  5526. var b = [],
  5527. c = 0,
  5528. d;
  5529. for (d in a) {
  5530. b[c++] = a[d];
  5531. }
  5532. return b;
  5533. };
  5534. goog.object.getKeys = function (a) {
  5535. var b = [],
  5536. c = 0,
  5537. d;
  5538. for (d in a) {
  5539. b[c++] = d;
  5540. }
  5541. return b;
  5542. };
  5543. goog.object.getValueByKeys = function (a, b) {
  5544. var c = goog.isArrayLike(b),
  5545. d = c ? b : arguments;
  5546. for (c = c ? 0 : 1; c < d.length; c++) {
  5547. if (null == a) return;
  5548. a = a[d[c]];
  5549. }
  5550. return a;
  5551. };
  5552. goog.object.containsKey = function (a, b) {
  5553. return null !== a && b in a;
  5554. };
  5555. goog.object.containsValue = function (a, b) {
  5556. for (var c in a) {
  5557. if (a[c] == b) return !0;
  5558. }
  5559. return !1;
  5560. };
  5561. goog.object.findKey = function (a, b, c) {
  5562. for (var d in a) {
  5563. if (b.call(c, a[d], d, a)) return d;
  5564. }
  5565. };
  5566. goog.object.findValue = function (a, b, c) {
  5567. return (b = goog.object.findKey(a, b, c)) && a[b];
  5568. };
  5569. goog.object.isEmpty = function (a) {
  5570. for (var b in a) {
  5571. return !1;
  5572. }
  5573. return !0;
  5574. };
  5575. goog.object.clear = function (a) {
  5576. for (var b in a) {
  5577. delete a[b];
  5578. }
  5579. };
  5580. goog.object.remove = function (a, b) {
  5581. var c;
  5582. (c = b in a) && delete a[b];
  5583. return c;
  5584. };
  5585. goog.object.add = function (a, b, c) {
  5586. if (null !== a && b in a) throw Error('The object already contains the key "' + b + '"');
  5587. goog.object.set(a, b, c);
  5588. };
  5589. goog.object.get = function (a, b, c) {
  5590. return null !== a && b in a ? a[b] : c;
  5591. };
  5592. goog.object.set = function (a, b, c) {
  5593. a[b] = c;
  5594. };
  5595. goog.object.setIfUndefined = function (a, b, c) {
  5596. return b in a ? a[b] : a[b] = c;
  5597. };
  5598. goog.object.setWithReturnValueIfNotSet = function (a, b, c) {
  5599. if (b in a) return a[b];
  5600. c = c();
  5601. return a[b] = c;
  5602. };
  5603. goog.object.equals = function (a, b) {
  5604. for (var c in a) {
  5605. if (!(c in b) || a[c] !== b[c]) return !1;
  5606. }
  5607. for (var d in b) {
  5608. if (!(d in a)) return !1;
  5609. }
  5610. return !0;
  5611. };
  5612. goog.object.clone = function (a) {
  5613. var b = {},
  5614. c;
  5615. for (c in a) {
  5616. b[c] = a[c];
  5617. }
  5618. return b;
  5619. };
  5620. goog.object.unsafeClone = function (a) {
  5621. var b = goog.typeOf(a);
  5622. if ("object" == b || "array" == b) {
  5623. if (goog.isFunction(a.clone)) return a.clone();
  5624. b = "array" == b ? [] : {};
  5625. for (var c in a) {
  5626. b[c] = goog.object.unsafeClone(a[c]);
  5627. }
  5628. return b;
  5629. }
  5630. return a;
  5631. };
  5632. goog.object.transpose = function (a) {
  5633. var b = {},
  5634. c;
  5635. for (c in a) {
  5636. b[a[c]] = c;
  5637. }
  5638. return b;
  5639. };
  5640. goog.object.PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
  5641. goog.object.extend = function (a, b) {
  5642. for (var c, d, e = 1; e < arguments.length; e++) {
  5643. d = arguments[e];
  5644. for (c in d) {
  5645. a[c] = d[c];
  5646. }
  5647. for (var f = 0; f < goog.object.PROTOTYPE_FIELDS_.length; f++) {
  5648. c = goog.object.PROTOTYPE_FIELDS_[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]);
  5649. }
  5650. }
  5651. };
  5652. goog.object.create = function (a) {
  5653. var b = arguments.length;
  5654. if (1 == b && Array.isArray(arguments[0])) return goog.object.create.apply(null, arguments[0]);
  5655. if (b % 2) throw Error("Uneven number of arguments");
  5656. for (var c = {}, d = 0; d < b; d += 2) {
  5657. c[arguments[d]] = arguments[d + 1];
  5658. }
  5659. return c;
  5660. };
  5661. goog.object.createSet = function (a) {
  5662. var b = arguments.length;
  5663. if (1 == b && Array.isArray(arguments[0])) return goog.object.createSet.apply(null, arguments[0]);
  5664. for (var c = {}, d = 0; d < b; d++) {
  5665. c[arguments[d]] = !0;
  5666. }
  5667. return c;
  5668. };
  5669. goog.object.createImmutableView = function (a) {
  5670. var b = a;
  5671. Object.isFrozen && !Object.isFrozen(a) && (b = Object.create(a), Object.freeze(b));
  5672. return b;
  5673. };
  5674. goog.object.isImmutableView = function (a) {
  5675. return !!Object.isFrozen && Object.isFrozen(a);
  5676. };
  5677. goog.object.getAllPropertyNames = function (a, b, c) {
  5678. if (!a) return [];
  5679. if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) return goog.object.getKeys(a);
  5680. for (var d = {}; a && (a !== Object.prototype || b) && (a !== Function.prototype || c);) {
  5681. for (var e = Object.getOwnPropertyNames(a), f = 0; f < e.length; f++) {
  5682. d[e[f]] = !0;
  5683. }
  5684. a = Object.getPrototypeOf(a);
  5685. }
  5686. return goog.object.getKeys(d);
  5687. };
  5688. goog.object.getSuperClass = function (a) {
  5689. return (a = Object.getPrototypeOf(a.prototype)) && a.constructor;
  5690. };
  5691. var jspb = {
  5692. asserts: {}
  5693. };
  5694. jspb.asserts.doAssertFailure = function (a, b, c, d) {
  5695. var e = "Assertion failed";
  5696. if (c) {
  5697. e += ": " + c;
  5698. var f = d;
  5699. } else a && (e += ": " + a, f = b);
  5700. throw Error("" + e, f || []);
  5701. };
  5702. jspb.asserts.assert = function (a, b, c) {
  5703. for (var d = [], e = 2; e < arguments.length; ++e) {
  5704. d[e - 2] = arguments[e];
  5705. }
  5706. a || jspb.asserts.doAssertFailure("", null, b, d);
  5707. return a;
  5708. };
  5709. jspb.asserts.assertString = function (a, b, c) {
  5710. for (var d = [], e = 2; e < arguments.length; ++e) {
  5711. d[e - 2] = arguments[e];
  5712. }
  5713. "string" !== typeof a && jspb.asserts.doAssertFailure("Expected string but got %s: %s.", [goog.typeOf(a), a], b, d);
  5714. return a;
  5715. };
  5716. jspb.asserts.assertArray = function (a, b, c) {
  5717. for (var d = [], e = 2; e < arguments.length; ++e) {
  5718. d[e - 2] = arguments[e];
  5719. }
  5720. Array.isArray(a) || jspb.asserts.doAssertFailure("Expected array but got %s: %s.", [goog.typeOf(a), a], b, d);
  5721. return a;
  5722. };
  5723. jspb.asserts.fail = function (a, b) {
  5724. for (var c = [], d = 1; d < arguments.length; ++d) {
  5725. c[d - 1] = arguments[d];
  5726. }
  5727. throw Error("Failure" + (a ? ": " + a : ""), c);
  5728. };
  5729. jspb.asserts.assertInstanceof = function (a, b, c, d) {
  5730. for (var e = [], f = 3; f < arguments.length; ++f) {
  5731. e[f - 3] = arguments[f];
  5732. }
  5733. a instanceof b || jspb.asserts.doAssertFailure("Expected instanceof %s but got %s.", [jspb.asserts.getType(b), jspb.asserts.getType(a)], c, e);
  5734. return a;
  5735. };
  5736. jspb.asserts.getType = function (a) {
  5737. return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : _typeof(a);
  5738. };
  5739. jspb.BinaryConstants = {};
  5740. jspb.ConstBinaryMessage = function () {};
  5741. jspb.BinaryMessage = function () {};
  5742. jspb.BinaryConstants.FieldType = {
  5743. INVALID: -1,
  5744. DOUBLE: 1,
  5745. FLOAT: 2,
  5746. INT64: 3,
  5747. UINT64: 4,
  5748. INT32: 5,
  5749. FIXED64: 6,
  5750. FIXED32: 7,
  5751. BOOL: 8,
  5752. STRING: 9,
  5753. GROUP: 10,
  5754. MESSAGE: 11,
  5755. BYTES: 12,
  5756. UINT32: 13,
  5757. ENUM: 14,
  5758. SFIXED32: 15,
  5759. SFIXED64: 16,
  5760. SINT32: 17,
  5761. SINT64: 18,
  5762. FHASH64: 30,
  5763. VHASH64: 31
  5764. };
  5765. jspb.BinaryConstants.WireType = {
  5766. INVALID: -1,
  5767. VARINT: 0,
  5768. FIXED64: 1,
  5769. DELIMITED: 2,
  5770. START_GROUP: 3,
  5771. END_GROUP: 4,
  5772. FIXED32: 5
  5773. };
  5774. jspb.BinaryConstants.FieldTypeToWireType = function (a) {
  5775. var b = jspb.BinaryConstants.FieldType,
  5776. c = jspb.BinaryConstants.WireType;
  5777. switch (a) {
  5778. case b.INT32:
  5779. case b.INT64:
  5780. case b.UINT32:
  5781. case b.UINT64:
  5782. case b.SINT32:
  5783. case b.SINT64:
  5784. case b.BOOL:
  5785. case b.ENUM:
  5786. case b.VHASH64:
  5787. return c.VARINT;
  5788. case b.DOUBLE:
  5789. case b.FIXED64:
  5790. case b.SFIXED64:
  5791. case b.FHASH64:
  5792. return c.FIXED64;
  5793. case b.STRING:
  5794. case b.MESSAGE:
  5795. case b.BYTES:
  5796. return c.DELIMITED;
  5797. case b.FLOAT:
  5798. case b.FIXED32:
  5799. case b.SFIXED32:
  5800. return c.FIXED32;
  5801. default:
  5802. return c.INVALID;
  5803. }
  5804. };
  5805. jspb.BinaryConstants.INVALID_FIELD_NUMBER = -1;
  5806. jspb.BinaryConstants.FLOAT32_EPS = 1.401298464324817E-45;
  5807. jspb.BinaryConstants.FLOAT32_MIN = 1.1754943508222875E-38;
  5808. jspb.BinaryConstants.FLOAT32_MAX = 3.4028234663852886E38;
  5809. jspb.BinaryConstants.FLOAT64_EPS = 4.9E-324;
  5810. jspb.BinaryConstants.FLOAT64_MIN = 2.2250738585072014E-308;
  5811. jspb.BinaryConstants.FLOAT64_MAX = 1.7976931348623157E308;
  5812. jspb.BinaryConstants.TWO_TO_20 = 1048576;
  5813. jspb.BinaryConstants.TWO_TO_23 = 8388608;
  5814. jspb.BinaryConstants.TWO_TO_31 = 2147483648;
  5815. jspb.BinaryConstants.TWO_TO_32 = 4294967296;
  5816. jspb.BinaryConstants.TWO_TO_52 = 4503599627370496;
  5817. jspb.BinaryConstants.TWO_TO_63 = 0x7fffffffffffffff;
  5818. jspb.BinaryConstants.TWO_TO_64 = 1.8446744073709552E19;
  5819. jspb.BinaryConstants.ZERO_HASH = "\x00\x00\x00\x00\x00\x00\x00\x00";
  5820. goog.debug = {};
  5821. goog.debug.Error = function (a) {
  5822. if (Error.captureStackTrace) Error.captureStackTrace(this, goog.debug.Error);else {
  5823. var b = Error().stack;
  5824. b && (this.stack = b);
  5825. }
  5826. a && (this.message = String(a));
  5827. this.reportErrorToServer = !0;
  5828. };
  5829. goog.inherits(goog.debug.Error, Error);
  5830. goog.debug.Error.prototype.name = "CustomError";
  5831. goog.dom = {};
  5832. goog.dom.NodeType = {
  5833. ELEMENT: 1,
  5834. ATTRIBUTE: 2,
  5835. TEXT: 3,
  5836. CDATA_SECTION: 4,
  5837. ENTITY_REFERENCE: 5,
  5838. ENTITY: 6,
  5839. PROCESSING_INSTRUCTION: 7,
  5840. COMMENT: 8,
  5841. DOCUMENT: 9,
  5842. DOCUMENT_TYPE: 10,
  5843. DOCUMENT_FRAGMENT: 11,
  5844. NOTATION: 12
  5845. };
  5846. goog.asserts = {};
  5847. goog.asserts.ENABLE_ASSERTS = goog.DEBUG;
  5848. goog.asserts.AssertionError = function (a, b) {
  5849. goog.debug.Error.call(this, goog.asserts.subs_(a, b));
  5850. this.messagePattern = a;
  5851. };
  5852. goog.inherits(goog.asserts.AssertionError, goog.debug.Error);
  5853. goog.asserts.AssertionError.prototype.name = "AssertionError";
  5854. goog.asserts.DEFAULT_ERROR_HANDLER = function (a) {
  5855. throw a;
  5856. };
  5857. goog.asserts.errorHandler_ = goog.asserts.DEFAULT_ERROR_HANDLER;
  5858. goog.asserts.subs_ = function (a, b) {
  5859. a = a.split("%s");
  5860. for (var c = "", d = a.length - 1, e = 0; e < d; e++) {
  5861. c += a[e] + (e < b.length ? b[e] : "%s");
  5862. }
  5863. return c + a[d];
  5864. };
  5865. goog.asserts.doAssertFailure_ = function (a, b, c, d) {
  5866. var e = "Assertion failed";
  5867. if (c) {
  5868. e += ": " + c;
  5869. var f = d;
  5870. } else a && (e += ": " + a, f = b);
  5871. a = new goog.asserts.AssertionError("" + e, f || []);
  5872. goog.asserts.errorHandler_(a);
  5873. };
  5874. goog.asserts.setErrorHandler = function (a) {
  5875. goog.asserts.ENABLE_ASSERTS && (goog.asserts.errorHandler_ = a);
  5876. };
  5877. goog.asserts.assert = function (a, b, c) {
  5878. goog.asserts.ENABLE_ASSERTS && !a && goog.asserts.doAssertFailure_("", null, b, Array.prototype.slice.call(arguments, 2));
  5879. return a;
  5880. };
  5881. goog.asserts.assertExists = function (a, b, c) {
  5882. goog.asserts.ENABLE_ASSERTS && null == a && goog.asserts.doAssertFailure_("Expected to exist: %s.", [a], b, Array.prototype.slice.call(arguments, 2));
  5883. return a;
  5884. };
  5885. goog.asserts.fail = function (a, b) {
  5886. goog.asserts.ENABLE_ASSERTS && goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1)));
  5887. };
  5888. goog.asserts.assertNumber = function (a, b, c) {
  5889. goog.asserts.ENABLE_ASSERTS && "number" !== typeof a && goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5890. return a;
  5891. };
  5892. goog.asserts.assertString = function (a, b, c) {
  5893. goog.asserts.ENABLE_ASSERTS && "string" !== typeof a && goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5894. return a;
  5895. };
  5896. goog.asserts.assertFunction = function (a, b, c) {
  5897. goog.asserts.ENABLE_ASSERTS && !goog.isFunction(a) && goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5898. return a;
  5899. };
  5900. goog.asserts.assertObject = function (a, b, c) {
  5901. goog.asserts.ENABLE_ASSERTS && !goog.isObject(a) && goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5902. return a;
  5903. };
  5904. goog.asserts.assertArray = function (a, b, c) {
  5905. goog.asserts.ENABLE_ASSERTS && !Array.isArray(a) && goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5906. return a;
  5907. };
  5908. goog.asserts.assertBoolean = function (a, b, c) {
  5909. goog.asserts.ENABLE_ASSERTS && "boolean" !== typeof a && goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5910. return a;
  5911. };
  5912. goog.asserts.assertElement = function (a, b, c) {
  5913. !goog.asserts.ENABLE_ASSERTS || goog.isObject(a) && a.nodeType == goog.dom.NodeType.ELEMENT || goog.asserts.doAssertFailure_("Expected Element but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
  5914. return a;
  5915. };
  5916. goog.asserts.assertInstanceof = function (a, b, c, d) {
  5917. !goog.asserts.ENABLE_ASSERTS || a instanceof b || goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.", [goog.asserts.getType_(b), goog.asserts.getType_(a)], c, Array.prototype.slice.call(arguments, 3));
  5918. return a;
  5919. };
  5920. goog.asserts.assertFinite = function (a, b, c) {
  5921. !goog.asserts.ENABLE_ASSERTS || "number" == typeof a && isFinite(a) || goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.", [a], b, Array.prototype.slice.call(arguments, 2));
  5922. return a;
  5923. };
  5924. goog.asserts.assertObjectPrototypeIsIntact = function () {
  5925. for (var a in Object.prototype) {
  5926. goog.asserts.fail(a + " should not be enumerable in Object.prototype.");
  5927. }
  5928. };
  5929. goog.asserts.getType_ = function (a) {
  5930. return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : _typeof(a);
  5931. };
  5932. goog.array = {};
  5933. goog.NATIVE_ARRAY_PROTOTYPES = goog.TRUSTED_SITE;
  5934. goog.array.ASSUME_NATIVE_FUNCTIONS = 2012 < goog.FEATURESET_YEAR;
  5935. goog.array.peek = function (a) {
  5936. return a[a.length - 1];
  5937. };
  5938. goog.array.last = goog.array.peek;
  5939. goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.indexOf) ? function (a, b, c) {
  5940. goog.asserts.assert(null != a.length);
  5941. return Array.prototype.indexOf.call(a, b, c);
  5942. } : function (a, b, c) {
  5943. c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
  5944. if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, c);
  5945. for (; c < a.length; c++) {
  5946. if (c in a && a[c] === b) return c;
  5947. }
  5948. return -1;
  5949. };
  5950. goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.lastIndexOf) ? function (a, b, c) {
  5951. goog.asserts.assert(null != a.length);
  5952. return Array.prototype.lastIndexOf.call(a, b, null == c ? a.length - 1 : c);
  5953. } : function (a, b, c) {
  5954. c = null == c ? a.length - 1 : c;
  5955. 0 > c && (c = Math.max(0, a.length + c));
  5956. if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.lastIndexOf(b, c);
  5957. for (; 0 <= c; c--) {
  5958. if (c in a && a[c] === b) return c;
  5959. }
  5960. return -1;
  5961. };
  5962. goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.forEach) ? function (a, b, c) {
  5963. goog.asserts.assert(null != a.length);
  5964. Array.prototype.forEach.call(a, b, c);
  5965. } : function (a, b, c) {
  5966. for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
  5967. f in e && b.call(c, e[f], f, a);
  5968. }
  5969. };
  5970. goog.array.forEachRight = function (a, b, c) {
  5971. var d = a.length,
  5972. e = "string" === typeof a ? a.split("") : a;
  5973. for (--d; 0 <= d; --d) {
  5974. d in e && b.call(c, e[d], d, a);
  5975. }
  5976. };
  5977. goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.filter) ? function (a, b, c) {
  5978. goog.asserts.assert(null != a.length);
  5979. return Array.prototype.filter.call(a, b, c);
  5980. } : function (a, b, c) {
  5981. for (var d = a.length, e = [], f = 0, g = "string" === typeof a ? a.split("") : a, h = 0; h < d; h++) {
  5982. if (h in g) {
  5983. var k = g[h];
  5984. b.call(c, k, h, a) && (e[f++] = k);
  5985. }
  5986. }
  5987. return e;
  5988. };
  5989. goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.map) ? function (a, b, c) {
  5990. goog.asserts.assert(null != a.length);
  5991. return Array.prototype.map.call(a, b, c);
  5992. } : function (a, b, c) {
  5993. for (var d = a.length, e = Array(d), f = "string" === typeof a ? a.split("") : a, g = 0; g < d; g++) {
  5994. g in f && (e[g] = b.call(c, f[g], g, a));
  5995. }
  5996. return e;
  5997. };
  5998. goog.array.reduce = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduce) ? function (a, b, c, d) {
  5999. goog.asserts.assert(null != a.length);
  6000. d && (b = goog.bind(b, d));
  6001. return Array.prototype.reduce.call(a, b, c);
  6002. } : function (a, b, c, d) {
  6003. var e = c;
  6004. goog.array.forEach(a, function (c, g) {
  6005. e = b.call(d, e, c, g, a);
  6006. });
  6007. return e;
  6008. };
  6009. goog.array.reduceRight = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduceRight) ? function (a, b, c, d) {
  6010. goog.asserts.assert(null != a.length);
  6011. goog.asserts.assert(null != b);
  6012. d && (b = goog.bind(b, d));
  6013. return Array.prototype.reduceRight.call(a, b, c);
  6014. } : function (a, b, c, d) {
  6015. var e = c;
  6016. goog.array.forEachRight(a, function (c, g) {
  6017. e = b.call(d, e, c, g, a);
  6018. });
  6019. return e;
  6020. };
  6021. goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.some) ? function (a, b, c) {
  6022. goog.asserts.assert(null != a.length);
  6023. return Array.prototype.some.call(a, b, c);
  6024. } : function (a, b, c) {
  6025. for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
  6026. if (f in e && b.call(c, e[f], f, a)) return !0;
  6027. }
  6028. return !1;
  6029. };
  6030. goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.every) ? function (a, b, c) {
  6031. goog.asserts.assert(null != a.length);
  6032. return Array.prototype.every.call(a, b, c);
  6033. } : function (a, b, c) {
  6034. for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
  6035. if (f in e && !b.call(c, e[f], f, a)) return !1;
  6036. }
  6037. return !0;
  6038. };
  6039. goog.array.count = function (a, b, c) {
  6040. var d = 0;
  6041. goog.array.forEach(a, function (a, f, g) {
  6042. b.call(c, a, f, g) && ++d;
  6043. }, c);
  6044. return d;
  6045. };
  6046. goog.array.find = function (a, b, c) {
  6047. b = goog.array.findIndex(a, b, c);
  6048. return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b];
  6049. };
  6050. goog.array.findIndex = function (a, b, c) {
  6051. for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
  6052. if (f in e && b.call(c, e[f], f, a)) return f;
  6053. }
  6054. return -1;
  6055. };
  6056. goog.array.findRight = function (a, b, c) {
  6057. b = goog.array.findIndexRight(a, b, c);
  6058. return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b];
  6059. };
  6060. goog.array.findIndexRight = function (a, b, c) {
  6061. var d = a.length,
  6062. e = "string" === typeof a ? a.split("") : a;
  6063. for (--d; 0 <= d; d--) {
  6064. if (d in e && b.call(c, e[d], d, a)) return d;
  6065. }
  6066. return -1;
  6067. };
  6068. goog.array.contains = function (a, b) {
  6069. return 0 <= goog.array.indexOf(a, b);
  6070. };
  6071. goog.array.isEmpty = function (a) {
  6072. return 0 == a.length;
  6073. };
  6074. goog.array.clear = function (a) {
  6075. if (!Array.isArray(a)) for (var b = a.length - 1; 0 <= b; b--) {
  6076. delete a[b];
  6077. }
  6078. a.length = 0;
  6079. };
  6080. goog.array.insert = function (a, b) {
  6081. goog.array.contains(a, b) || a.push(b);
  6082. };
  6083. goog.array.insertAt = function (a, b, c) {
  6084. goog.array.splice(a, c, 0, b);
  6085. };
  6086. goog.array.insertArrayAt = function (a, b, c) {
  6087. goog.partial(goog.array.splice, a, c, 0).apply(null, b);
  6088. };
  6089. goog.array.insertBefore = function (a, b, c) {
  6090. var d;
  6091. 2 == arguments.length || 0 > (d = goog.array.indexOf(a, c)) ? a.push(b) : goog.array.insertAt(a, b, d);
  6092. };
  6093. goog.array.remove = function (a, b) {
  6094. b = goog.array.indexOf(a, b);
  6095. var c;
  6096. (c = 0 <= b) && goog.array.removeAt(a, b);
  6097. return c;
  6098. };
  6099. goog.array.removeLast = function (a, b) {
  6100. b = goog.array.lastIndexOf(a, b);
  6101. return 0 <= b ? (goog.array.removeAt(a, b), !0) : !1;
  6102. };
  6103. goog.array.removeAt = function (a, b) {
  6104. goog.asserts.assert(null != a.length);
  6105. return 1 == Array.prototype.splice.call(a, b, 1).length;
  6106. };
  6107. goog.array.removeIf = function (a, b, c) {
  6108. b = goog.array.findIndex(a, b, c);
  6109. return 0 <= b ? (goog.array.removeAt(a, b), !0) : !1;
  6110. };
  6111. goog.array.removeAllIf = function (a, b, c) {
  6112. var d = 0;
  6113. goog.array.forEachRight(a, function (e, f) {
  6114. b.call(c, e, f, a) && goog.array.removeAt(a, f) && d++;
  6115. });
  6116. return d;
  6117. };
  6118. goog.array.concat = function (a) {
  6119. return Array.prototype.concat.apply([], arguments);
  6120. };
  6121. goog.array.join = function (a) {
  6122. return Array.prototype.concat.apply([], arguments);
  6123. };
  6124. goog.array.toArray = function (a) {
  6125. var b = a.length;
  6126. if (0 < b) {
  6127. for (var c = Array(b), d = 0; d < b; d++) {
  6128. c[d] = a[d];
  6129. }
  6130. return c;
  6131. }
  6132. return [];
  6133. };
  6134. goog.array.clone = goog.array.toArray;
  6135. goog.array.extend = function (a, b) {
  6136. for (var c = 1; c < arguments.length; c++) {
  6137. var d = arguments[c];
  6138. if (goog.isArrayLike(d)) {
  6139. var e = a.length || 0,
  6140. f = d.length || 0;
  6141. a.length = e + f;
  6142. for (var g = 0; g < f; g++) {
  6143. a[e + g] = d[g];
  6144. }
  6145. } else a.push(d);
  6146. }
  6147. };
  6148. goog.array.splice = function (a, b, c, d) {
  6149. goog.asserts.assert(null != a.length);
  6150. return Array.prototype.splice.apply(a, goog.array.slice(arguments, 1));
  6151. };
  6152. goog.array.slice = function (a, b, c) {
  6153. goog.asserts.assert(null != a.length);
  6154. return 2 >= arguments.length ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a, b, c);
  6155. };
  6156. goog.array.removeDuplicates = function (a, b, c) {
  6157. b = b || a;
  6158. var d = function d(a) {
  6159. return goog.isObject(a) ? "o" + goog.getUid(a) : _typeof(a).charAt(0) + a;
  6160. };
  6161. c = c || d;
  6162. d = {};
  6163. for (var e = 0, f = 0; f < a.length;) {
  6164. var g = a[f++],
  6165. h = c(g);
  6166. Object.prototype.hasOwnProperty.call(d, h) || (d[h] = !0, b[e++] = g);
  6167. }
  6168. b.length = e;
  6169. };
  6170. goog.array.binarySearch = function (a, b, c) {
  6171. return goog.array.binarySearch_(a, c || goog.array.defaultCompare, !1, b);
  6172. };
  6173. goog.array.binarySelect = function (a, b, c) {
  6174. return goog.array.binarySearch_(a, b, !0, void 0, c);
  6175. };
  6176. goog.array.binarySearch_ = function (a, b, c, d, e) {
  6177. for (var f = 0, g = a.length, h; f < g;) {
  6178. var k = f + (g - f >>> 1);
  6179. var l = c ? b.call(e, a[k], k, a) : b(d, a[k]);
  6180. 0 < l ? f = k + 1 : (g = k, h = !l);
  6181. }
  6182. return h ? f : -f - 1;
  6183. };
  6184. goog.array.sort = function (a, b) {
  6185. a.sort(b || goog.array.defaultCompare);
  6186. };
  6187. goog.array.stableSort = function (a, b) {
  6188. for (var c = Array(a.length), d = 0; d < a.length; d++) {
  6189. c[d] = {
  6190. index: d,
  6191. value: a[d]
  6192. };
  6193. }
  6194. var e = b || goog.array.defaultCompare;
  6195. goog.array.sort(c, function (a, b) {
  6196. return e(a.value, b.value) || a.index - b.index;
  6197. });
  6198. for (d = 0; d < a.length; d++) {
  6199. a[d] = c[d].value;
  6200. }
  6201. };
  6202. goog.array.sortByKey = function (a, b, c) {
  6203. var d = c || goog.array.defaultCompare;
  6204. goog.array.sort(a, function (a, c) {
  6205. return d(b(a), b(c));
  6206. });
  6207. };
  6208. goog.array.sortObjectsByKey = function (a, b, c) {
  6209. goog.array.sortByKey(a, function (a) {
  6210. return a[b];
  6211. }, c);
  6212. };
  6213. goog.array.isSorted = function (a, b, c) {
  6214. b = b || goog.array.defaultCompare;
  6215. for (var d = 1; d < a.length; d++) {
  6216. var e = b(a[d - 1], a[d]);
  6217. if (0 < e || 0 == e && c) return !1;
  6218. }
  6219. return !0;
  6220. };
  6221. goog.array.equals = function (a, b, c) {
  6222. if (!goog.isArrayLike(a) || !goog.isArrayLike(b) || a.length != b.length) return !1;
  6223. var d = a.length;
  6224. c = c || goog.array.defaultCompareEquality;
  6225. for (var e = 0; e < d; e++) {
  6226. if (!c(a[e], b[e])) return !1;
  6227. }
  6228. return !0;
  6229. };
  6230. goog.array.compare3 = function (a, b, c) {
  6231. c = c || goog.array.defaultCompare;
  6232. for (var d = Math.min(a.length, b.length), e = 0; e < d; e++) {
  6233. var f = c(a[e], b[e]);
  6234. if (0 != f) return f;
  6235. }
  6236. return goog.array.defaultCompare(a.length, b.length);
  6237. };
  6238. goog.array.defaultCompare = function (a, b) {
  6239. return a > b ? 1 : a < b ? -1 : 0;
  6240. };
  6241. goog.array.inverseDefaultCompare = function (a, b) {
  6242. return -goog.array.defaultCompare(a, b);
  6243. };
  6244. goog.array.defaultCompareEquality = function (a, b) {
  6245. return a === b;
  6246. };
  6247. goog.array.binaryInsert = function (a, b, c) {
  6248. c = goog.array.binarySearch(a, b, c);
  6249. return 0 > c ? (goog.array.insertAt(a, b, -(c + 1)), !0) : !1;
  6250. };
  6251. goog.array.binaryRemove = function (a, b, c) {
  6252. b = goog.array.binarySearch(a, b, c);
  6253. return 0 <= b ? goog.array.removeAt(a, b) : !1;
  6254. };
  6255. goog.array.bucket = function (a, b, c) {
  6256. for (var d = {}, e = 0; e < a.length; e++) {
  6257. var f = a[e],
  6258. g = b.call(c, f, e, a);
  6259. void 0 !== g && (d[g] || (d[g] = [])).push(f);
  6260. }
  6261. return d;
  6262. };
  6263. goog.array.toObject = function (a, b, c) {
  6264. var d = {};
  6265. goog.array.forEach(a, function (e, f) {
  6266. d[b.call(c, e, f, a)] = e;
  6267. });
  6268. return d;
  6269. };
  6270. goog.array.range = function (a, b, c) {
  6271. var d = [],
  6272. e = 0,
  6273. f = a;
  6274. c = c || 1;
  6275. void 0 !== b && (e = a, f = b);
  6276. if (0 > c * (f - e)) return [];
  6277. if (0 < c) for (a = e; a < f; a += c) {
  6278. d.push(a);
  6279. } else for (a = e; a > f; a += c) {
  6280. d.push(a);
  6281. }
  6282. return d;
  6283. };
  6284. goog.array.repeat = function (a, b) {
  6285. for (var c = [], d = 0; d < b; d++) {
  6286. c[d] = a;
  6287. }
  6288. return c;
  6289. };
  6290. goog.array.flatten = function (a) {
  6291. for (var b = [], c = 0; c < arguments.length; c++) {
  6292. var d = arguments[c];
  6293. if (Array.isArray(d)) for (var e = 0; e < d.length; e += 8192) {
  6294. var f = goog.array.slice(d, e, e + 8192);
  6295. f = goog.array.flatten.apply(null, f);
  6296. for (var g = 0; g < f.length; g++) {
  6297. b.push(f[g]);
  6298. }
  6299. } else b.push(d);
  6300. }
  6301. return b;
  6302. };
  6303. goog.array.rotate = function (a, b) {
  6304. goog.asserts.assert(null != a.length);
  6305. a.length && (b %= a.length, 0 < b ? Array.prototype.unshift.apply(a, a.splice(-b, b)) : 0 > b && Array.prototype.push.apply(a, a.splice(0, -b)));
  6306. return a;
  6307. };
  6308. goog.array.moveItem = function (a, b, c) {
  6309. goog.asserts.assert(0 <= b && b < a.length);
  6310. goog.asserts.assert(0 <= c && c < a.length);
  6311. b = Array.prototype.splice.call(a, b, 1);
  6312. Array.prototype.splice.call(a, c, 0, b[0]);
  6313. };
  6314. goog.array.zip = function (a) {
  6315. if (!arguments.length) return [];
  6316. for (var b = [], c = arguments[0].length, d = 1; d < arguments.length; d++) {
  6317. arguments[d].length < c && (c = arguments[d].length);
  6318. }
  6319. for (d = 0; d < c; d++) {
  6320. for (var e = [], f = 0; f < arguments.length; f++) {
  6321. e.push(arguments[f][d]);
  6322. }
  6323. b.push(e);
  6324. }
  6325. return b;
  6326. };
  6327. goog.array.shuffle = function (a, b) {
  6328. b = b || Math.random;
  6329. for (var c = a.length - 1; 0 < c; c--) {
  6330. var d = Math.floor(b() * (c + 1)),
  6331. e = a[c];
  6332. a[c] = a[d];
  6333. a[d] = e;
  6334. }
  6335. };
  6336. goog.array.copyByIndex = function (a, b) {
  6337. var c = [];
  6338. goog.array.forEach(b, function (b) {
  6339. c.push(a[b]);
  6340. });
  6341. return c;
  6342. };
  6343. goog.array.concatMap = function (a, b, c) {
  6344. return goog.array.concat.apply([], goog.array.map(a, b, c));
  6345. };
  6346. goog.crypt = {};
  6347. goog.crypt.stringToByteArray = function (a) {
  6348. for (var b = [], c = 0, d = 0; d < a.length; d++) {
  6349. var e = a.charCodeAt(d);
  6350. 255 < e && (b[c++] = e & 255, e >>= 8);
  6351. b[c++] = e;
  6352. }
  6353. return b;
  6354. };
  6355. goog.crypt.byteArrayToString = function (a) {
  6356. if (8192 >= a.length) return String.fromCharCode.apply(null, a);
  6357. for (var b = "", c = 0; c < a.length; c += 8192) {
  6358. var d = goog.array.slice(a, c, c + 8192);
  6359. b += String.fromCharCode.apply(null, d);
  6360. }
  6361. return b;
  6362. };
  6363. goog.crypt.byteArrayToHex = function (a, b) {
  6364. return goog.array.map(a, function (a) {
  6365. a = a.toString(16);
  6366. return 1 < a.length ? a : "0" + a;
  6367. }).join(b || "");
  6368. };
  6369. goog.crypt.hexToByteArray = function (a) {
  6370. goog.asserts.assert(0 == a.length % 2, "Key string length must be multiple of 2");
  6371. for (var b = [], c = 0; c < a.length; c += 2) {
  6372. b.push(parseInt(a.substring(c, c + 2), 16));
  6373. }
  6374. return b;
  6375. };
  6376. goog.crypt.stringToUtf8ByteArray = function (a) {
  6377. for (var b = [], c = 0, d = 0; d < a.length; d++) {
  6378. var e = a.charCodeAt(d);
  6379. 128 > e ? b[c++] = e : (2048 > e ? b[c++] = e >> 6 | 192 : (55296 == (e & 64512) && d + 1 < a.length && 56320 == (a.charCodeAt(d + 1) & 64512) ? (e = 65536 + ((e & 1023) << 10) + (a.charCodeAt(++d) & 1023), b[c++] = e >> 18 | 240, b[c++] = e >> 12 & 63 | 128) : b[c++] = e >> 12 | 224, b[c++] = e >> 6 & 63 | 128), b[c++] = e & 63 | 128);
  6380. }
  6381. return b;
  6382. };
  6383. goog.crypt.utf8ByteArrayToString = function (a) {
  6384. for (var b = [], c = 0, d = 0; c < a.length;) {
  6385. var e = a[c++];
  6386. if (128 > e) b[d++] = String.fromCharCode(e);else if (191 < e && 224 > e) {
  6387. var f = a[c++];
  6388. b[d++] = String.fromCharCode((e & 31) << 6 | f & 63);
  6389. } else if (239 < e && 365 > e) {
  6390. f = a[c++];
  6391. var g = a[c++],
  6392. h = a[c++];
  6393. e = ((e & 7) << 18 | (f & 63) << 12 | (g & 63) << 6 | h & 63) - 65536;
  6394. b[d++] = String.fromCharCode(55296 + (e >> 10));
  6395. b[d++] = String.fromCharCode(56320 + (e & 1023));
  6396. } else f = a[c++], g = a[c++], b[d++] = String.fromCharCode((e & 15) << 12 | (f & 63) << 6 | g & 63);
  6397. }
  6398. return b.join("");
  6399. };
  6400. goog.crypt.xorByteArray = function (a, b) {
  6401. goog.asserts.assert(a.length == b.length, "XOR array lengths must match");
  6402. for (var c = [], d = 0; d < a.length; d++) {
  6403. c.push(a[d] ^ b[d]);
  6404. }
  6405. return c;
  6406. };
  6407. goog.dom.asserts = {};
  6408. goog.dom.asserts.assertIsLocation = function (a) {
  6409. if (goog.asserts.ENABLE_ASSERTS) {
  6410. var b = goog.dom.asserts.getWindow_(a);
  6411. b && (!a || !(a instanceof b.Location) && a instanceof b.Element) && goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s", goog.dom.asserts.debugStringForType_(a));
  6412. }
  6413. return a;
  6414. };
  6415. goog.dom.asserts.assertIsElementType_ = function (a, b) {
  6416. if (goog.asserts.ENABLE_ASSERTS) {
  6417. var c = goog.dom.asserts.getWindow_(a);
  6418. c && "undefined" != typeof c[b] && (a && (a instanceof c[b] || !(a instanceof c.Location || a instanceof c.Element)) || goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s", b, goog.dom.asserts.debugStringForType_(a)));
  6419. }
  6420. return a;
  6421. };
  6422. goog.dom.asserts.assertIsHTMLAnchorElement = function (a) {
  6423. return goog.dom.asserts.assertIsElementType_(a, "HTMLAnchorElement");
  6424. };
  6425. goog.dom.asserts.assertIsHTMLButtonElement = function (a) {
  6426. return goog.dom.asserts.assertIsElementType_(a, "HTMLButtonElement");
  6427. };
  6428. goog.dom.asserts.assertIsHTMLLinkElement = function (a) {
  6429. return goog.dom.asserts.assertIsElementType_(a, "HTMLLinkElement");
  6430. };
  6431. goog.dom.asserts.assertIsHTMLImageElement = function (a) {
  6432. return goog.dom.asserts.assertIsElementType_(a, "HTMLImageElement");
  6433. };
  6434. goog.dom.asserts.assertIsHTMLAudioElement = function (a) {
  6435. return goog.dom.asserts.assertIsElementType_(a, "HTMLAudioElement");
  6436. };
  6437. goog.dom.asserts.assertIsHTMLVideoElement = function (a) {
  6438. return goog.dom.asserts.assertIsElementType_(a, "HTMLVideoElement");
  6439. };
  6440. goog.dom.asserts.assertIsHTMLInputElement = function (a) {
  6441. return goog.dom.asserts.assertIsElementType_(a, "HTMLInputElement");
  6442. };
  6443. goog.dom.asserts.assertIsHTMLTextAreaElement = function (a) {
  6444. return goog.dom.asserts.assertIsElementType_(a, "HTMLTextAreaElement");
  6445. };
  6446. goog.dom.asserts.assertIsHTMLCanvasElement = function (a) {
  6447. return goog.dom.asserts.assertIsElementType_(a, "HTMLCanvasElement");
  6448. };
  6449. goog.dom.asserts.assertIsHTMLEmbedElement = function (a) {
  6450. return goog.dom.asserts.assertIsElementType_(a, "HTMLEmbedElement");
  6451. };
  6452. goog.dom.asserts.assertIsHTMLFormElement = function (a) {
  6453. return goog.dom.asserts.assertIsElementType_(a, "HTMLFormElement");
  6454. };
  6455. goog.dom.asserts.assertIsHTMLFrameElement = function (a) {
  6456. return goog.dom.asserts.assertIsElementType_(a, "HTMLFrameElement");
  6457. };
  6458. goog.dom.asserts.assertIsHTMLIFrameElement = function (a) {
  6459. return goog.dom.asserts.assertIsElementType_(a, "HTMLIFrameElement");
  6460. };
  6461. goog.dom.asserts.assertIsHTMLObjectElement = function (a) {
  6462. return goog.dom.asserts.assertIsElementType_(a, "HTMLObjectElement");
  6463. };
  6464. goog.dom.asserts.assertIsHTMLScriptElement = function (a) {
  6465. return goog.dom.asserts.assertIsElementType_(a, "HTMLScriptElement");
  6466. };
  6467. goog.dom.asserts.debugStringForType_ = function (a) {
  6468. if (goog.isObject(a)) try {
  6469. return a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a);
  6470. } catch (b) {
  6471. return "<object could not be stringified>";
  6472. } else return void 0 === a ? "undefined" : null === a ? "null" : _typeof(a);
  6473. };
  6474. goog.dom.asserts.getWindow_ = function (a) {
  6475. try {
  6476. var b = a && a.ownerDocument,
  6477. c = b && (b.defaultView || b.parentWindow);
  6478. c = c || goog.global;
  6479. if (c.Element && c.Location) return c;
  6480. } catch (d) {}
  6481. return null;
  6482. };
  6483. goog.functions = {};
  6484. goog.functions.constant = function (a) {
  6485. return function () {
  6486. return a;
  6487. };
  6488. };
  6489. goog.functions.FALSE = function () {
  6490. return !1;
  6491. };
  6492. goog.functions.TRUE = function () {
  6493. return !0;
  6494. };
  6495. goog.functions.NULL = function () {
  6496. return null;
  6497. };
  6498. goog.functions.identity = function (a, b) {
  6499. return a;
  6500. };
  6501. goog.functions.error = function (a) {
  6502. return function () {
  6503. throw Error(a);
  6504. };
  6505. };
  6506. goog.functions.fail = function (a) {
  6507. return function () {
  6508. throw a;
  6509. };
  6510. };
  6511. goog.functions.lock = function (a, b) {
  6512. b = b || 0;
  6513. return function () {
  6514. return a.apply(this, Array.prototype.slice.call(arguments, 0, b));
  6515. };
  6516. };
  6517. goog.functions.nth = function (a) {
  6518. return function () {
  6519. return arguments[a];
  6520. };
  6521. };
  6522. goog.functions.partialRight = function (a, b) {
  6523. var c = Array.prototype.slice.call(arguments, 1);
  6524. return function () {
  6525. var b = Array.prototype.slice.call(arguments);
  6526. b.push.apply(b, c);
  6527. return a.apply(this, b);
  6528. };
  6529. };
  6530. goog.functions.withReturnValue = function (a, b) {
  6531. return goog.functions.sequence(a, goog.functions.constant(b));
  6532. };
  6533. goog.functions.equalTo = function (a, b) {
  6534. return function (c) {
  6535. return b ? a == c : a === c;
  6536. };
  6537. };
  6538. goog.functions.compose = function (a, b) {
  6539. var c = arguments,
  6540. d = c.length;
  6541. return function () {
  6542. var a;
  6543. d && (a = c[d - 1].apply(this, arguments));
  6544. for (var b = d - 2; 0 <= b; b--) {
  6545. a = c[b].call(this, a);
  6546. }
  6547. return a;
  6548. };
  6549. };
  6550. goog.functions.sequence = function (a) {
  6551. var b = arguments,
  6552. c = b.length;
  6553. return function () {
  6554. for (var a, e = 0; e < c; e++) {
  6555. a = b[e].apply(this, arguments);
  6556. }
  6557. return a;
  6558. };
  6559. };
  6560. goog.functions.and = function (a) {
  6561. var b = arguments,
  6562. c = b.length;
  6563. return function () {
  6564. for (var a = 0; a < c; a++) {
  6565. if (!b[a].apply(this, arguments)) return !1;
  6566. }
  6567. return !0;
  6568. };
  6569. };
  6570. goog.functions.or = function (a) {
  6571. var b = arguments,
  6572. c = b.length;
  6573. return function () {
  6574. for (var a = 0; a < c; a++) {
  6575. if (b[a].apply(this, arguments)) return !0;
  6576. }
  6577. return !1;
  6578. };
  6579. };
  6580. goog.functions.not = function (a) {
  6581. return function () {
  6582. return !a.apply(this, arguments);
  6583. };
  6584. };
  6585. goog.functions.create = function (a, b) {
  6586. var c = function c() {};
  6587. c.prototype = a.prototype;
  6588. c = new c();
  6589. a.apply(c, Array.prototype.slice.call(arguments, 1));
  6590. return c;
  6591. };
  6592. goog.functions.CACHE_RETURN_VALUE = !0;
  6593. goog.functions.cacheReturnValue = function (a) {
  6594. var b = !1,
  6595. c;
  6596. return function () {
  6597. if (!goog.functions.CACHE_RETURN_VALUE) return a();
  6598. b || (c = a(), b = !0);
  6599. return c;
  6600. };
  6601. };
  6602. goog.functions.once = function (a) {
  6603. var b = a;
  6604. return function () {
  6605. if (b) {
  6606. var a = b;
  6607. b = null;
  6608. a();
  6609. }
  6610. };
  6611. };
  6612. goog.functions.debounce = function (a, b, c) {
  6613. var d = 0;
  6614. return function (e) {
  6615. goog.global.clearTimeout(d);
  6616. var f = arguments;
  6617. d = goog.global.setTimeout(function () {
  6618. a.apply(c, f);
  6619. }, b);
  6620. };
  6621. };
  6622. goog.functions.throttle = function (a, b, c) {
  6623. var d = 0,
  6624. e = !1,
  6625. f = [],
  6626. g = function g() {
  6627. d = 0;
  6628. e && (e = !1, h());
  6629. },
  6630. h = function h() {
  6631. d = goog.global.setTimeout(g, b);
  6632. a.apply(c, f);
  6633. };
  6634. return function (a) {
  6635. f = arguments;
  6636. d ? e = !0 : h();
  6637. };
  6638. };
  6639. goog.functions.rateLimit = function (a, b, c) {
  6640. var d = 0,
  6641. e = function e() {
  6642. d = 0;
  6643. };
  6644. return function (f) {
  6645. d || (d = goog.global.setTimeout(e, b), a.apply(c, arguments));
  6646. };
  6647. };
  6648. goog.dom.HtmlElement = function () {};
  6649. goog.dom.TagName = function (a) {
  6650. this.tagName_ = a;
  6651. };
  6652. goog.dom.TagName.prototype.toString = function () {
  6653. return this.tagName_;
  6654. };
  6655. goog.dom.TagName.A = new goog.dom.TagName("A");
  6656. goog.dom.TagName.ABBR = new goog.dom.TagName("ABBR");
  6657. goog.dom.TagName.ACRONYM = new goog.dom.TagName("ACRONYM");
  6658. goog.dom.TagName.ADDRESS = new goog.dom.TagName("ADDRESS");
  6659. goog.dom.TagName.APPLET = new goog.dom.TagName("APPLET");
  6660. goog.dom.TagName.AREA = new goog.dom.TagName("AREA");
  6661. goog.dom.TagName.ARTICLE = new goog.dom.TagName("ARTICLE");
  6662. goog.dom.TagName.ASIDE = new goog.dom.TagName("ASIDE");
  6663. goog.dom.TagName.AUDIO = new goog.dom.TagName("AUDIO");
  6664. goog.dom.TagName.B = new goog.dom.TagName("B");
  6665. goog.dom.TagName.BASE = new goog.dom.TagName("BASE");
  6666. goog.dom.TagName.BASEFONT = new goog.dom.TagName("BASEFONT");
  6667. goog.dom.TagName.BDI = new goog.dom.TagName("BDI");
  6668. goog.dom.TagName.BDO = new goog.dom.TagName("BDO");
  6669. goog.dom.TagName.BIG = new goog.dom.TagName("BIG");
  6670. goog.dom.TagName.BLOCKQUOTE = new goog.dom.TagName("BLOCKQUOTE");
  6671. goog.dom.TagName.BODY = new goog.dom.TagName("BODY");
  6672. goog.dom.TagName.BR = new goog.dom.TagName("BR");
  6673. goog.dom.TagName.BUTTON = new goog.dom.TagName("BUTTON");
  6674. goog.dom.TagName.CANVAS = new goog.dom.TagName("CANVAS");
  6675. goog.dom.TagName.CAPTION = new goog.dom.TagName("CAPTION");
  6676. goog.dom.TagName.CENTER = new goog.dom.TagName("CENTER");
  6677. goog.dom.TagName.CITE = new goog.dom.TagName("CITE");
  6678. goog.dom.TagName.CODE = new goog.dom.TagName("CODE");
  6679. goog.dom.TagName.COL = new goog.dom.TagName("COL");
  6680. goog.dom.TagName.COLGROUP = new goog.dom.TagName("COLGROUP");
  6681. goog.dom.TagName.COMMAND = new goog.dom.TagName("COMMAND");
  6682. goog.dom.TagName.DATA = new goog.dom.TagName("DATA");
  6683. goog.dom.TagName.DATALIST = new goog.dom.TagName("DATALIST");
  6684. goog.dom.TagName.DD = new goog.dom.TagName("DD");
  6685. goog.dom.TagName.DEL = new goog.dom.TagName("DEL");
  6686. goog.dom.TagName.DETAILS = new goog.dom.TagName("DETAILS");
  6687. goog.dom.TagName.DFN = new goog.dom.TagName("DFN");
  6688. goog.dom.TagName.DIALOG = new goog.dom.TagName("DIALOG");
  6689. goog.dom.TagName.DIR = new goog.dom.TagName("DIR");
  6690. goog.dom.TagName.DIV = new goog.dom.TagName("DIV");
  6691. goog.dom.TagName.DL = new goog.dom.TagName("DL");
  6692. goog.dom.TagName.DT = new goog.dom.TagName("DT");
  6693. goog.dom.TagName.EM = new goog.dom.TagName("EM");
  6694. goog.dom.TagName.EMBED = new goog.dom.TagName("EMBED");
  6695. goog.dom.TagName.FIELDSET = new goog.dom.TagName("FIELDSET");
  6696. goog.dom.TagName.FIGCAPTION = new goog.dom.TagName("FIGCAPTION");
  6697. goog.dom.TagName.FIGURE = new goog.dom.TagName("FIGURE");
  6698. goog.dom.TagName.FONT = new goog.dom.TagName("FONT");
  6699. goog.dom.TagName.FOOTER = new goog.dom.TagName("FOOTER");
  6700. goog.dom.TagName.FORM = new goog.dom.TagName("FORM");
  6701. goog.dom.TagName.FRAME = new goog.dom.TagName("FRAME");
  6702. goog.dom.TagName.FRAMESET = new goog.dom.TagName("FRAMESET");
  6703. goog.dom.TagName.H1 = new goog.dom.TagName("H1");
  6704. goog.dom.TagName.H2 = new goog.dom.TagName("H2");
  6705. goog.dom.TagName.H3 = new goog.dom.TagName("H3");
  6706. goog.dom.TagName.H4 = new goog.dom.TagName("H4");
  6707. goog.dom.TagName.H5 = new goog.dom.TagName("H5");
  6708. goog.dom.TagName.H6 = new goog.dom.TagName("H6");
  6709. goog.dom.TagName.HEAD = new goog.dom.TagName("HEAD");
  6710. goog.dom.TagName.HEADER = new goog.dom.TagName("HEADER");
  6711. goog.dom.TagName.HGROUP = new goog.dom.TagName("HGROUP");
  6712. goog.dom.TagName.HR = new goog.dom.TagName("HR");
  6713. goog.dom.TagName.HTML = new goog.dom.TagName("HTML");
  6714. goog.dom.TagName.I = new goog.dom.TagName("I");
  6715. goog.dom.TagName.IFRAME = new goog.dom.TagName("IFRAME");
  6716. goog.dom.TagName.IMG = new goog.dom.TagName("IMG");
  6717. goog.dom.TagName.INPUT = new goog.dom.TagName("INPUT");
  6718. goog.dom.TagName.INS = new goog.dom.TagName("INS");
  6719. goog.dom.TagName.ISINDEX = new goog.dom.TagName("ISINDEX");
  6720. goog.dom.TagName.KBD = new goog.dom.TagName("KBD");
  6721. goog.dom.TagName.KEYGEN = new goog.dom.TagName("KEYGEN");
  6722. goog.dom.TagName.LABEL = new goog.dom.TagName("LABEL");
  6723. goog.dom.TagName.LEGEND = new goog.dom.TagName("LEGEND");
  6724. goog.dom.TagName.LI = new goog.dom.TagName("LI");
  6725. goog.dom.TagName.LINK = new goog.dom.TagName("LINK");
  6726. goog.dom.TagName.MAIN = new goog.dom.TagName("MAIN");
  6727. goog.dom.TagName.MAP = new goog.dom.TagName("MAP");
  6728. goog.dom.TagName.MARK = new goog.dom.TagName("MARK");
  6729. goog.dom.TagName.MATH = new goog.dom.TagName("MATH");
  6730. goog.dom.TagName.MENU = new goog.dom.TagName("MENU");
  6731. goog.dom.TagName.MENUITEM = new goog.dom.TagName("MENUITEM");
  6732. goog.dom.TagName.META = new goog.dom.TagName("META");
  6733. goog.dom.TagName.METER = new goog.dom.TagName("METER");
  6734. goog.dom.TagName.NAV = new goog.dom.TagName("NAV");
  6735. goog.dom.TagName.NOFRAMES = new goog.dom.TagName("NOFRAMES");
  6736. goog.dom.TagName.NOSCRIPT = new goog.dom.TagName("NOSCRIPT");
  6737. goog.dom.TagName.OBJECT = new goog.dom.TagName("OBJECT");
  6738. goog.dom.TagName.OL = new goog.dom.TagName("OL");
  6739. goog.dom.TagName.OPTGROUP = new goog.dom.TagName("OPTGROUP");
  6740. goog.dom.TagName.OPTION = new goog.dom.TagName("OPTION");
  6741. goog.dom.TagName.OUTPUT = new goog.dom.TagName("OUTPUT");
  6742. goog.dom.TagName.P = new goog.dom.TagName("P");
  6743. goog.dom.TagName.PARAM = new goog.dom.TagName("PARAM");
  6744. goog.dom.TagName.PICTURE = new goog.dom.TagName("PICTURE");
  6745. goog.dom.TagName.PRE = new goog.dom.TagName("PRE");
  6746. goog.dom.TagName.PROGRESS = new goog.dom.TagName("PROGRESS");
  6747. goog.dom.TagName.Q = new goog.dom.TagName("Q");
  6748. goog.dom.TagName.RP = new goog.dom.TagName("RP");
  6749. goog.dom.TagName.RT = new goog.dom.TagName("RT");
  6750. goog.dom.TagName.RTC = new goog.dom.TagName("RTC");
  6751. goog.dom.TagName.RUBY = new goog.dom.TagName("RUBY");
  6752. goog.dom.TagName.S = new goog.dom.TagName("S");
  6753. goog.dom.TagName.SAMP = new goog.dom.TagName("SAMP");
  6754. goog.dom.TagName.SCRIPT = new goog.dom.TagName("SCRIPT");
  6755. goog.dom.TagName.SECTION = new goog.dom.TagName("SECTION");
  6756. goog.dom.TagName.SELECT = new goog.dom.TagName("SELECT");
  6757. goog.dom.TagName.SMALL = new goog.dom.TagName("SMALL");
  6758. goog.dom.TagName.SOURCE = new goog.dom.TagName("SOURCE");
  6759. goog.dom.TagName.SPAN = new goog.dom.TagName("SPAN");
  6760. goog.dom.TagName.STRIKE = new goog.dom.TagName("STRIKE");
  6761. goog.dom.TagName.STRONG = new goog.dom.TagName("STRONG");
  6762. goog.dom.TagName.STYLE = new goog.dom.TagName("STYLE");
  6763. goog.dom.TagName.SUB = new goog.dom.TagName("SUB");
  6764. goog.dom.TagName.SUMMARY = new goog.dom.TagName("SUMMARY");
  6765. goog.dom.TagName.SUP = new goog.dom.TagName("SUP");
  6766. goog.dom.TagName.SVG = new goog.dom.TagName("SVG");
  6767. goog.dom.TagName.TABLE = new goog.dom.TagName("TABLE");
  6768. goog.dom.TagName.TBODY = new goog.dom.TagName("TBODY");
  6769. goog.dom.TagName.TD = new goog.dom.TagName("TD");
  6770. goog.dom.TagName.TEMPLATE = new goog.dom.TagName("TEMPLATE");
  6771. goog.dom.TagName.TEXTAREA = new goog.dom.TagName("TEXTAREA");
  6772. goog.dom.TagName.TFOOT = new goog.dom.TagName("TFOOT");
  6773. goog.dom.TagName.TH = new goog.dom.TagName("TH");
  6774. goog.dom.TagName.THEAD = new goog.dom.TagName("THEAD");
  6775. goog.dom.TagName.TIME = new goog.dom.TagName("TIME");
  6776. goog.dom.TagName.TITLE = new goog.dom.TagName("TITLE");
  6777. goog.dom.TagName.TR = new goog.dom.TagName("TR");
  6778. goog.dom.TagName.TRACK = new goog.dom.TagName("TRACK");
  6779. goog.dom.TagName.TT = new goog.dom.TagName("TT");
  6780. goog.dom.TagName.U = new goog.dom.TagName("U");
  6781. goog.dom.TagName.UL = new goog.dom.TagName("UL");
  6782. goog.dom.TagName.VAR = new goog.dom.TagName("VAR");
  6783. goog.dom.TagName.VIDEO = new goog.dom.TagName("VIDEO");
  6784. goog.dom.TagName.WBR = new goog.dom.TagName("WBR");
  6785. goog.dom.tags = {};
  6786. goog.dom.tags.VOID_TAGS_ = {
  6787. area: !0,
  6788. base: !0,
  6789. br: !0,
  6790. col: !0,
  6791. command: !0,
  6792. embed: !0,
  6793. hr: !0,
  6794. img: !0,
  6795. input: !0,
  6796. keygen: !0,
  6797. link: !0,
  6798. meta: !0,
  6799. param: !0,
  6800. source: !0,
  6801. track: !0,
  6802. wbr: !0
  6803. };
  6804. goog.dom.tags.isVoidTag = function (a) {
  6805. return !0 === goog.dom.tags.VOID_TAGS_[a];
  6806. };
  6807. goog.html = {};
  6808. goog.html.trustedtypes = {};
  6809. goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#html") : null;
  6810. goog.string = {};
  6811. goog.string.TypedString = function () {};
  6812. goog.string.Const = function (a, b) {
  6813. this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = a === goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
  6814. this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ = goog.string.Const.TYPE_MARKER_;
  6815. };
  6816. goog.string.Const.prototype.implementsGoogStringTypedString = !0;
  6817. goog.string.Const.prototype.getTypedStringValue = function () {
  6818. return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
  6819. };
  6820. goog.DEBUG && (goog.string.Const.prototype.toString = function () {
  6821. return "Const{" + this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ + "}";
  6822. });
  6823. goog.string.Const.unwrap = function (a) {
  6824. if (a instanceof goog.string.Const && a.constructor === goog.string.Const && a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ === goog.string.Const.TYPE_MARKER_) return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
  6825. goog.asserts.fail("expected object of type Const, got '" + a + "'");
  6826. return "type_error:Const";
  6827. };
  6828. goog.string.Const.from = function (a) {
  6829. return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_, a);
  6830. };
  6831. goog.string.Const.TYPE_MARKER_ = {};
  6832. goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ = {};
  6833. goog.string.Const.EMPTY = goog.string.Const.from("");
  6834. goog.html.SafeScript = function () {
  6835. this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = "";
  6836. this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
  6837. };
  6838. goog.html.SafeScript.prototype.implementsGoogStringTypedString = !0;
  6839. goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
  6840. goog.html.SafeScript.fromConstant = function (a) {
  6841. a = goog.string.Const.unwrap(a);
  6842. return 0 === a.length ? goog.html.SafeScript.EMPTY : goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a);
  6843. };
  6844. goog.html.SafeScript.fromConstantAndArgs = function (a, b) {
  6845. for (var c = [], d = 1; d < arguments.length; d++) {
  6846. c.push(goog.html.SafeScript.stringify_(arguments[d]));
  6847. }
  6848. return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("(" + goog.string.Const.unwrap(a) + ")(" + c.join(", ") + ");");
  6849. };
  6850. goog.html.SafeScript.fromJson = function (a) {
  6851. return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(a));
  6852. };
  6853. goog.html.SafeScript.prototype.getTypedStringValue = function () {
  6854. return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString();
  6855. };
  6856. goog.DEBUG && (goog.html.SafeScript.prototype.toString = function () {
  6857. return "SafeScript{" + this.privateDoNotAccessOrElseSafeScriptWrappedValue_ + "}";
  6858. });
  6859. goog.html.SafeScript.unwrap = function (a) {
  6860. return goog.html.SafeScript.unwrapTrustedScript(a).toString();
  6861. };
  6862. goog.html.SafeScript.unwrapTrustedScript = function (a) {
  6863. if (a instanceof goog.html.SafeScript && a.constructor === goog.html.SafeScript && a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;
  6864. goog.asserts.fail("expected object of type SafeScript, got '" + a + "' of type " + goog.typeOf(a));
  6865. return "type_error:SafeScript";
  6866. };
  6867. goog.html.SafeScript.stringify_ = function (a) {
  6868. return JSON.stringify(a).replace(/</g, "\\x3c");
  6869. };
  6870. goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse = function (a) {
  6871. return new goog.html.SafeScript().initSecurityPrivateDoNotAccessOrElse_(a);
  6872. };
  6873. goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
  6874. this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(a) : a;
  6875. return this;
  6876. };
  6877. goog.html.SafeScript.EMPTY = goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("");
  6878. goog.fs = {};
  6879. goog.fs.url = {};
  6880. goog.fs.url.createObjectUrl = function (a) {
  6881. return goog.fs.url.getUrlObject_().createObjectURL(a);
  6882. };
  6883. goog.fs.url.revokeObjectUrl = function (a) {
  6884. goog.fs.url.getUrlObject_().revokeObjectURL(a);
  6885. };
  6886. goog.fs.url.UrlObject_ = function () {};
  6887. goog.fs.url.UrlObject_.prototype.createObjectURL = function (a) {};
  6888. goog.fs.url.UrlObject_.prototype.revokeObjectURL = function (a) {};
  6889. goog.fs.url.getUrlObject_ = function () {
  6890. var a = goog.fs.url.findUrlObject_();
  6891. if (null != a) return a;
  6892. throw Error("This browser doesn't seem to support blob URLs");
  6893. };
  6894. goog.fs.url.findUrlObject_ = function () {
  6895. return void 0 !== goog.global.URL && void 0 !== goog.global.URL.createObjectURL ? goog.global.URL : void 0 !== goog.global.webkitURL && void 0 !== goog.global.webkitURL.createObjectURL ? goog.global.webkitURL : void 0 !== goog.global.createObjectURL ? goog.global : null;
  6896. };
  6897. goog.fs.url.browserSupportsObjectUrls = function () {
  6898. return null != goog.fs.url.findUrlObject_();
  6899. };
  6900. goog.fs.blob = {};
  6901. goog.fs.blob.getBlob = function (a) {
  6902. var b = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder;
  6903. if (void 0 !== b) {
  6904. b = new b();
  6905. for (var c = 0; c < arguments.length; c++) {
  6906. b.append(arguments[c]);
  6907. }
  6908. return b.getBlob();
  6909. }
  6910. return goog.fs.blob.getBlobWithProperties(goog.array.toArray(arguments));
  6911. };
  6912. goog.fs.blob.getBlobWithProperties = function (a, b, c) {
  6913. var d = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder;
  6914. if (void 0 !== d) {
  6915. d = new d();
  6916. for (var e = 0; e < a.length; e++) {
  6917. d.append(a[e], c);
  6918. }
  6919. return d.getBlob(b);
  6920. }
  6921. if (void 0 !== goog.global.Blob) return d = {}, b && (d.type = b), c && (d.endings = c), new Blob(a, d);
  6922. throw Error("This browser doesn't seem to support creating Blobs");
  6923. };
  6924. goog.i18n = {};
  6925. goog.i18n.bidi = {};
  6926. goog.i18n.bidi.FORCE_RTL = !1;
  6927. goog.i18n.bidi.IS_RTL = goog.i18n.bidi.FORCE_RTL || ("ar" == goog.LOCALE.substring(0, 2).toLowerCase() || "fa" == goog.LOCALE.substring(0, 2).toLowerCase() || "he" == goog.LOCALE.substring(0, 2).toLowerCase() || "iw" == goog.LOCALE.substring(0, 2).toLowerCase() || "ps" == goog.LOCALE.substring(0, 2).toLowerCase() || "sd" == goog.LOCALE.substring(0, 2).toLowerCase() || "ug" == goog.LOCALE.substring(0, 2).toLowerCase() || "ur" == goog.LOCALE.substring(0, 2).toLowerCase() || "yi" == goog.LOCALE.substring(0, 2).toLowerCase()) && (2 == goog.LOCALE.length || "-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) || 3 <= goog.LOCALE.length && "ckb" == goog.LOCALE.substring(0, 3).toLowerCase() && (3 == goog.LOCALE.length || "-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) || 7 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) && ("adlm" == goog.LOCALE.substring(3, 7).toLowerCase() || "arab" == goog.LOCALE.substring(3, 7).toLowerCase() || "hebr" == goog.LOCALE.substring(3, 7).toLowerCase() || "nkoo" == goog.LOCALE.substring(3, 7).toLowerCase() || "rohg" == goog.LOCALE.substring(3, 7).toLowerCase() || "thaa" == goog.LOCALE.substring(3, 7).toLowerCase()) || 8 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) && ("adlm" == goog.LOCALE.substring(4, 8).toLowerCase() || "arab" == goog.LOCALE.substring(4, 8).toLowerCase() || "hebr" == goog.LOCALE.substring(4, 8).toLowerCase() || "nkoo" == goog.LOCALE.substring(4, 8).toLowerCase() || "rohg" == goog.LOCALE.substring(4, 8).toLowerCase() || "thaa" == goog.LOCALE.substring(4, 8).toLowerCase());
  6928. goog.i18n.bidi.Format = {
  6929. LRE: "\u202A",
  6930. RLE: "\u202B",
  6931. PDF: "\u202C",
  6932. LRM: "\u200E",
  6933. RLM: "\u200F"
  6934. };
  6935. goog.i18n.bidi.Dir = {
  6936. LTR: 1,
  6937. RTL: -1,
  6938. NEUTRAL: 0
  6939. };
  6940. goog.i18n.bidi.RIGHT = "right";
  6941. goog.i18n.bidi.LEFT = "left";
  6942. goog.i18n.bidi.I18N_RIGHT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.LEFT : goog.i18n.bidi.RIGHT;
  6943. goog.i18n.bidi.I18N_LEFT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT;
  6944. goog.i18n.bidi.toDir = function (a, b) {
  6945. return "number" == typeof a ? 0 < a ? goog.i18n.bidi.Dir.LTR : 0 > a ? goog.i18n.bidi.Dir.RTL : b ? null : goog.i18n.bidi.Dir.NEUTRAL : null == a ? null : a ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
  6946. };
  6947. goog.i18n.bidi.ltrChars_ = "A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0900-\u1FFF\u200E\u2C00-\uD801\uD804-\uD839\uD83C-\uDBFF\uF900-\uFB1C\uFE00-\uFE6F\uFEFD-\uFFFF";
  6948. goog.i18n.bidi.rtlChars_ = "\u0591-\u06EF\u06FA-\u08FF\u200F\uD802-\uD803\uD83A-\uD83B\uFB1D-\uFDFF\uFE70-\uFEFC";
  6949. goog.i18n.bidi.htmlSkipReg_ = /<[^>]*>|&[^;]+;/g;
  6950. goog.i18n.bidi.stripHtmlIfNeeded_ = function (a, b) {
  6951. return b ? a.replace(goog.i18n.bidi.htmlSkipReg_, "") : a;
  6952. };
  6953. goog.i18n.bidi.rtlCharReg_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "]");
  6954. goog.i18n.bidi.ltrCharReg_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "]");
  6955. goog.i18n.bidi.hasAnyRtl = function (a, b) {
  6956. return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
  6957. };
  6958. goog.i18n.bidi.hasRtlChar = goog.i18n.bidi.hasAnyRtl;
  6959. goog.i18n.bidi.hasAnyLtr = function (a, b) {
  6960. return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
  6961. };
  6962. goog.i18n.bidi.ltrRe_ = new RegExp("^[" + goog.i18n.bidi.ltrChars_ + "]");
  6963. goog.i18n.bidi.rtlRe_ = new RegExp("^[" + goog.i18n.bidi.rtlChars_ + "]");
  6964. goog.i18n.bidi.isRtlChar = function (a) {
  6965. return goog.i18n.bidi.rtlRe_.test(a);
  6966. };
  6967. goog.i18n.bidi.isLtrChar = function (a) {
  6968. return goog.i18n.bidi.ltrRe_.test(a);
  6969. };
  6970. goog.i18n.bidi.isNeutralChar = function (a) {
  6971. return !goog.i18n.bidi.isLtrChar(a) && !goog.i18n.bidi.isRtlChar(a);
  6972. };
  6973. goog.i18n.bidi.ltrDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.rtlChars_ + "]*[" + goog.i18n.bidi.ltrChars_ + "]");
  6974. goog.i18n.bidi.rtlDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.ltrChars_ + "]*[" + goog.i18n.bidi.rtlChars_ + "]");
  6975. goog.i18n.bidi.startsWithRtl = function (a, b) {
  6976. return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
  6977. };
  6978. goog.i18n.bidi.isRtlText = goog.i18n.bidi.startsWithRtl;
  6979. goog.i18n.bidi.startsWithLtr = function (a, b) {
  6980. return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
  6981. };
  6982. goog.i18n.bidi.isLtrText = goog.i18n.bidi.startsWithLtr;
  6983. goog.i18n.bidi.isRequiredLtrRe_ = /^http:\/\/.*/;
  6984. goog.i18n.bidi.isNeutralText = function (a, b) {
  6985. a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b);
  6986. return goog.i18n.bidi.isRequiredLtrRe_.test(a) || !goog.i18n.bidi.hasAnyLtr(a) && !goog.i18n.bidi.hasAnyRtl(a);
  6987. };
  6988. goog.i18n.bidi.ltrExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "][^" + goog.i18n.bidi.rtlChars_ + "]*$");
  6989. goog.i18n.bidi.rtlExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "][^" + goog.i18n.bidi.ltrChars_ + "]*$");
  6990. goog.i18n.bidi.endsWithLtr = function (a, b) {
  6991. return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
  6992. };
  6993. goog.i18n.bidi.isLtrExitText = goog.i18n.bidi.endsWithLtr;
  6994. goog.i18n.bidi.endsWithRtl = function (a, b) {
  6995. return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
  6996. };
  6997. goog.i18n.bidi.isRtlExitText = goog.i18n.bidi.endsWithRtl;
  6998. goog.i18n.bidi.rtlLocalesRe_ = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;
  6999. goog.i18n.bidi.isRtlLanguage = function (a) {
  7000. return goog.i18n.bidi.rtlLocalesRe_.test(a);
  7001. };
  7002. goog.i18n.bidi.bracketGuardTextRe_ = /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g;
  7003. goog.i18n.bidi.guardBracketInText = function (a, b) {
  7004. b = (void 0 === b ? goog.i18n.bidi.hasAnyRtl(a) : b) ? goog.i18n.bidi.Format.RLM : goog.i18n.bidi.Format.LRM;
  7005. return a.replace(goog.i18n.bidi.bracketGuardTextRe_, b + "$&" + b);
  7006. };
  7007. goog.i18n.bidi.enforceRtlInHtml = function (a) {
  7008. return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=rtl") : "\n<span dir=rtl>" + a + "</span>";
  7009. };
  7010. goog.i18n.bidi.enforceRtlInText = function (a) {
  7011. return goog.i18n.bidi.Format.RLE + a + goog.i18n.bidi.Format.PDF;
  7012. };
  7013. goog.i18n.bidi.enforceLtrInHtml = function (a) {
  7014. return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=ltr") : "\n<span dir=ltr>" + a + "</span>";
  7015. };
  7016. goog.i18n.bidi.enforceLtrInText = function (a) {
  7017. return goog.i18n.bidi.Format.LRE + a + goog.i18n.bidi.Format.PDF;
  7018. };
  7019. goog.i18n.bidi.dimensionsRe_ = /:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g;
  7020. goog.i18n.bidi.leftRe_ = /left/gi;
  7021. goog.i18n.bidi.rightRe_ = /right/gi;
  7022. goog.i18n.bidi.tempRe_ = /%%%%/g;
  7023. goog.i18n.bidi.mirrorCSS = function (a) {
  7024. return a.replace(goog.i18n.bidi.dimensionsRe_, ":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_, "%%%%").replace(goog.i18n.bidi.rightRe_, goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_, goog.i18n.bidi.RIGHT);
  7025. };
  7026. goog.i18n.bidi.doubleQuoteSubstituteRe_ = /([\u0591-\u05f2])"/g;
  7027. goog.i18n.bidi.singleQuoteSubstituteRe_ = /([\u0591-\u05f2])'/g;
  7028. goog.i18n.bidi.normalizeHebrewQuote = function (a) {
  7029. return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_, "$1\u05F4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_, "$1\u05F3");
  7030. };
  7031. goog.i18n.bidi.wordSeparatorRe_ = /\s+/;
  7032. goog.i18n.bidi.hasNumeralsRe_ = /[\d\u06f0-\u06f9]/;
  7033. goog.i18n.bidi.rtlDetectionThreshold_ = .4;
  7034. goog.i18n.bidi.estimateDirection = function (a, b) {
  7035. var c = 0,
  7036. d = 0,
  7037. e = !1;
  7038. a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b).split(goog.i18n.bidi.wordSeparatorRe_);
  7039. for (b = 0; b < a.length; b++) {
  7040. var f = a[b];
  7041. goog.i18n.bidi.startsWithRtl(f) ? (c++, d++) : goog.i18n.bidi.isRequiredLtrRe_.test(f) ? e = !0 : goog.i18n.bidi.hasAnyLtr(f) ? d++ : goog.i18n.bidi.hasNumeralsRe_.test(f) && (e = !0);
  7042. }
  7043. return 0 == d ? e ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL : c / d > goog.i18n.bidi.rtlDetectionThreshold_ ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
  7044. };
  7045. goog.i18n.bidi.detectRtlDirectionality = function (a, b) {
  7046. return goog.i18n.bidi.estimateDirection(a, b) == goog.i18n.bidi.Dir.RTL;
  7047. };
  7048. goog.i18n.bidi.setElementDirAndAlign = function (a, b) {
  7049. a && (b = goog.i18n.bidi.toDir(b)) && (a.style.textAlign = b == goog.i18n.bidi.Dir.RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT, a.dir = b == goog.i18n.bidi.Dir.RTL ? "rtl" : "ltr");
  7050. };
  7051. goog.i18n.bidi.setElementDirByTextDirectionality = function (a, b) {
  7052. switch (goog.i18n.bidi.estimateDirection(b)) {
  7053. case goog.i18n.bidi.Dir.LTR:
  7054. a.dir = "ltr";
  7055. break;
  7056. case goog.i18n.bidi.Dir.RTL:
  7057. a.dir = "rtl";
  7058. break;
  7059. default:
  7060. a.removeAttribute("dir");
  7061. }
  7062. };
  7063. goog.i18n.bidi.DirectionalString = function () {};
  7064. goog.html.TrustedResourceUrl = function (a, b) {
  7065. this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = a === goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
  7066. this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
  7067. };
  7068. goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = !0;
  7069. goog.html.TrustedResourceUrl.prototype.getTypedStringValue = function () {
  7070. return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString();
  7071. };
  7072. goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
  7073. goog.html.TrustedResourceUrl.prototype.getDirection = function () {
  7074. return goog.i18n.bidi.Dir.LTR;
  7075. };
  7076. goog.html.TrustedResourceUrl.prototype.cloneWithParams = function (a, b) {
  7077. var c = goog.html.TrustedResourceUrl.unwrap(this);
  7078. c = goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);
  7079. var d = c[3] || "";
  7080. return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1] + goog.html.TrustedResourceUrl.stringifyParams_("?", c[2] || "", a) + goog.html.TrustedResourceUrl.stringifyParams_("#", d, b));
  7081. };
  7082. goog.DEBUG && (goog.html.TrustedResourceUrl.prototype.toString = function () {
  7083. return "TrustedResourceUrl{" + this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + "}";
  7084. });
  7085. goog.html.TrustedResourceUrl.unwrap = function (a) {
  7086. return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString();
  7087. };
  7088. goog.html.TrustedResourceUrl.unwrapTrustedScriptURL = function (a) {
  7089. if (a instanceof goog.html.TrustedResourceUrl && a.constructor === goog.html.TrustedResourceUrl && a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
  7090. goog.asserts.fail("expected object of type TrustedResourceUrl, got '" + a + "' of type " + goog.typeOf(a));
  7091. return "type_error:TrustedResourceUrl";
  7092. };
  7093. goog.html.TrustedResourceUrl.format = function (a, b) {
  7094. var c = goog.string.Const.unwrap(a);
  7095. if (!goog.html.TrustedResourceUrl.BASE_URL_.test(c)) throw Error("Invalid TrustedResourceUrl format: " + c);
  7096. a = c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_, function (a, e) {
  7097. if (!Object.prototype.hasOwnProperty.call(b, e)) throw Error('Found marker, "' + e + '", in format string, "' + c + '", but no valid label mapping found in args: ' + JSON.stringify(b));
  7098. a = b[e];
  7099. return a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : encodeURIComponent(String(a));
  7100. });
  7101. return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a);
  7102. };
  7103. goog.html.TrustedResourceUrl.FORMAT_MARKER_ = /%{(\w+)}/g;
  7104. goog.html.TrustedResourceUrl.BASE_URL_ = /^((https:)?\/\/[0-9a-z.:[\]-]+\/|\/[^/\\]|[^:/\\%]+\/|[^:/\\%]*[?#]|about:blank#)/i;
  7105. goog.html.TrustedResourceUrl.URL_PARAM_PARSER_ = /^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
  7106. goog.html.TrustedResourceUrl.formatWithParams = function (a, b, c, d) {
  7107. return goog.html.TrustedResourceUrl.format(a, b).cloneWithParams(c, d);
  7108. };
  7109. goog.html.TrustedResourceUrl.fromConstant = function (a) {
  7110. return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a));
  7111. };
  7112. goog.html.TrustedResourceUrl.fromConstants = function (a) {
  7113. for (var b = "", c = 0; c < a.length; c++) {
  7114. b += goog.string.Const.unwrap(a[c]);
  7115. }
  7116. return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b);
  7117. };
  7118. goog.html.TrustedResourceUrl.fromSafeScript = function (a) {
  7119. a = goog.fs.blob.getBlobWithProperties([goog.html.SafeScript.unwrap(a)], "text/javascript");
  7120. a = goog.fs.url.createObjectUrl(a);
  7121. return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a);
  7122. };
  7123. goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
  7124. goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function (a) {
  7125. a = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(a) : a;
  7126. return new goog.html.TrustedResourceUrl(goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a);
  7127. };
  7128. goog.html.TrustedResourceUrl.stringifyParams_ = function (a, b, c) {
  7129. if (null == c) return b;
  7130. if ("string" === typeof c) return c ? a + encodeURIComponent(c) : "";
  7131. for (var d in c) {
  7132. var e = c[d];
  7133. e = Array.isArray(e) ? e : [e];
  7134. for (var f = 0; f < e.length; f++) {
  7135. var g = e[f];
  7136. null != g && (b || (b = a), b += (b.length > a.length ? "&" : "") + encodeURIComponent(d) + "=" + encodeURIComponent(String(g)));
  7137. }
  7138. }
  7139. return b;
  7140. };
  7141. goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
  7142. goog.string.internal = {};
  7143. goog.string.internal.startsWith = function (a, b) {
  7144. return 0 == a.lastIndexOf(b, 0);
  7145. };
  7146. goog.string.internal.endsWith = function (a, b) {
  7147. var c = a.length - b.length;
  7148. return 0 <= c && a.indexOf(b, c) == c;
  7149. };
  7150. goog.string.internal.caseInsensitiveStartsWith = function (a, b) {
  7151. return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(0, b.length));
  7152. };
  7153. goog.string.internal.caseInsensitiveEndsWith = function (a, b) {
  7154. return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(a.length - b.length, b.length));
  7155. };
  7156. goog.string.internal.caseInsensitiveEquals = function (a, b) {
  7157. return a.toLowerCase() == b.toLowerCase();
  7158. };
  7159. goog.string.internal.isEmptyOrWhitespace = function (a) {
  7160. return /^[\s\xa0]*$/.test(a);
  7161. };
  7162. goog.string.internal.trim = goog.TRUSTED_SITE && String.prototype.trim ? function (a) {
  7163. return a.trim();
  7164. } : function (a) {
  7165. return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1];
  7166. };
  7167. goog.string.internal.caseInsensitiveCompare = function (a, b) {
  7168. a = String(a).toLowerCase();
  7169. b = String(b).toLowerCase();
  7170. return a < b ? -1 : a == b ? 0 : 1;
  7171. };
  7172. goog.string.internal.newLineToBr = function (a, b) {
  7173. return a.replace(/(\r\n|\r|\n)/g, b ? "<br />" : "<br>");
  7174. };
  7175. goog.string.internal.htmlEscape = function (a, b) {
  7176. if (b) a = a.replace(goog.string.internal.AMP_RE_, "&amp;").replace(goog.string.internal.LT_RE_, "&lt;").replace(goog.string.internal.GT_RE_, "&gt;").replace(goog.string.internal.QUOT_RE_, "&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_, "&#39;").replace(goog.string.internal.NULL_RE_, "&#0;");else {
  7177. if (!goog.string.internal.ALL_RE_.test(a)) return a;
  7178. -1 != a.indexOf("&") && (a = a.replace(goog.string.internal.AMP_RE_, "&amp;"));
  7179. -1 != a.indexOf("<") && (a = a.replace(goog.string.internal.LT_RE_, "&lt;"));
  7180. -1 != a.indexOf(">") && (a = a.replace(goog.string.internal.GT_RE_, "&gt;"));
  7181. -1 != a.indexOf('"') && (a = a.replace(goog.string.internal.QUOT_RE_, "&quot;"));
  7182. -1 != a.indexOf("'") && (a = a.replace(goog.string.internal.SINGLE_QUOTE_RE_, "&#39;"));
  7183. -1 != a.indexOf("\x00") && (a = a.replace(goog.string.internal.NULL_RE_, "&#0;"));
  7184. }
  7185. return a;
  7186. };
  7187. goog.string.internal.AMP_RE_ = /&/g;
  7188. goog.string.internal.LT_RE_ = /</g;
  7189. goog.string.internal.GT_RE_ = />/g;
  7190. goog.string.internal.QUOT_RE_ = /"/g;
  7191. goog.string.internal.SINGLE_QUOTE_RE_ = /'/g;
  7192. goog.string.internal.NULL_RE_ = /\x00/g;
  7193. goog.string.internal.ALL_RE_ = /[\x00&<>"']/;
  7194. goog.string.internal.whitespaceEscape = function (a, b) {
  7195. return goog.string.internal.newLineToBr(a.replace(/ /g, " &#160;"), b);
  7196. };
  7197. goog.string.internal.contains = function (a, b) {
  7198. return -1 != a.indexOf(b);
  7199. };
  7200. goog.string.internal.caseInsensitiveContains = function (a, b) {
  7201. return goog.string.internal.contains(a.toLowerCase(), b.toLowerCase());
  7202. };
  7203. goog.string.internal.compareVersions = function (a, b) {
  7204. var c = 0;
  7205. a = goog.string.internal.trim(String(a)).split(".");
  7206. b = goog.string.internal.trim(String(b)).split(".");
  7207. for (var d = Math.max(a.length, b.length), e = 0; 0 == c && e < d; e++) {
  7208. var f = a[e] || "",
  7209. g = b[e] || "";
  7210. do {
  7211. f = /(\d*)(\D*)(.*)/.exec(f) || ["", "", "", ""];
  7212. g = /(\d*)(\D*)(.*)/.exec(g) || ["", "", "", ""];
  7213. if (0 == f[0].length && 0 == g[0].length) break;
  7214. c = 0 == f[1].length ? 0 : parseInt(f[1], 10);
  7215. var h = 0 == g[1].length ? 0 : parseInt(g[1], 10);
  7216. c = goog.string.internal.compareElements_(c, h) || goog.string.internal.compareElements_(0 == f[2].length, 0 == g[2].length) || goog.string.internal.compareElements_(f[2], g[2]);
  7217. f = f[3];
  7218. g = g[3];
  7219. } while (0 == c);
  7220. }
  7221. return c;
  7222. };
  7223. goog.string.internal.compareElements_ = function (a, b) {
  7224. return a < b ? -1 : a > b ? 1 : 0;
  7225. };
  7226. goog.html.SafeUrl = function (a, b) {
  7227. this.privateDoNotAccessOrElseSafeUrlWrappedValue_ = a === goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
  7228. this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
  7229. };
  7230. goog.html.SafeUrl.INNOCUOUS_STRING = "about:invalid#zClosurez";
  7231. goog.html.SafeUrl.prototype.implementsGoogStringTypedString = !0;
  7232. goog.html.SafeUrl.prototype.getTypedStringValue = function () {
  7233. return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString();
  7234. };
  7235. goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
  7236. goog.html.SafeUrl.prototype.getDirection = function () {
  7237. return goog.i18n.bidi.Dir.LTR;
  7238. };
  7239. goog.DEBUG && (goog.html.SafeUrl.prototype.toString = function () {
  7240. return "SafeUrl{" + this.privateDoNotAccessOrElseSafeUrlWrappedValue_ + "}";
  7241. });
  7242. goog.html.SafeUrl.unwrap = function (a) {
  7243. if (a instanceof goog.html.SafeUrl && a.constructor === goog.html.SafeUrl && a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;
  7244. goog.asserts.fail("expected object of type SafeUrl, got '" + a + "' of type " + goog.typeOf(a));
  7245. return "type_error:SafeUrl";
  7246. };
  7247. goog.html.SafeUrl.fromConstant = function (a) {
  7248. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a));
  7249. };
  7250. goog.html.SAFE_MIME_TYPE_PATTERN_ = /^(?:audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\/csv|video\/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i;
  7251. goog.html.SafeUrl.isSafeMimeType = function (a) {
  7252. return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a);
  7253. };
  7254. goog.html.SafeUrl.fromBlob = function (a) {
  7255. a = goog.html.SafeUrl.isSafeMimeType(a.type) ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING;
  7256. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7257. };
  7258. goog.html.SafeUrl.fromMediaSource = function (a) {
  7259. goog.asserts.assert("MediaSource" in goog.global, "No support for MediaSource");
  7260. a = a instanceof MediaSource ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING;
  7261. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7262. };
  7263. goog.html.DATA_URL_PATTERN_ = /^data:(.*);base64,[a-z0-9+\/]+=*$/i;
  7264. goog.html.SafeUrl.fromDataUrl = function (a) {
  7265. a = a.replace(/(%0A|%0D)/g, "");
  7266. var b = a.match(goog.html.DATA_URL_PATTERN_);
  7267. b = b && goog.html.SafeUrl.isSafeMimeType(b[1]);
  7268. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b ? a : goog.html.SafeUrl.INNOCUOUS_STRING);
  7269. };
  7270. goog.html.SafeUrl.fromTelUrl = function (a) {
  7271. goog.string.internal.caseInsensitiveStartsWith(a, "tel:") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7272. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7273. };
  7274. goog.html.SIP_URL_PATTERN_ = /^sip[s]?:[+a-z0-9_.!$%&'*\/=^`{|}~-]+@([a-z0-9-]+\.)+[a-z0-9]{2,63}$/i;
  7275. goog.html.SafeUrl.fromSipUrl = function (a) {
  7276. goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a)) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7277. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7278. };
  7279. goog.html.SafeUrl.fromFacebookMessengerUrl = function (a) {
  7280. goog.string.internal.caseInsensitiveStartsWith(a, "fb-messenger://share") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7281. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7282. };
  7283. goog.html.SafeUrl.fromWhatsAppUrl = function (a) {
  7284. goog.string.internal.caseInsensitiveStartsWith(a, "whatsapp://send") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7285. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7286. };
  7287. goog.html.SafeUrl.fromSmsUrl = function (a) {
  7288. goog.string.internal.caseInsensitiveStartsWith(a, "sms:") && goog.html.SafeUrl.isSmsUrlBodyValid_(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7289. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7290. };
  7291. goog.html.SafeUrl.isSmsUrlBodyValid_ = function (a) {
  7292. var b = a.indexOf("#");
  7293. 0 < b && (a = a.substring(0, b));
  7294. b = a.match(/[?&]body=/gi);
  7295. if (!b) return !0;
  7296. if (1 < b.length) return !1;
  7297. a = a.match(/[?&]body=([^&]*)/)[1];
  7298. if (!a) return !0;
  7299. try {
  7300. decodeURIComponent(a);
  7301. } catch (c) {
  7302. return !1;
  7303. }
  7304. return /^(?:[a-z0-9\-_.~]|%[0-9a-f]{2})+$/i.test(a);
  7305. };
  7306. goog.html.SafeUrl.fromSshUrl = function (a) {
  7307. goog.string.internal.caseInsensitiveStartsWith(a, "ssh://") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7308. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7309. };
  7310. goog.html.SafeUrl.sanitizeChromeExtensionUrl = function (a, b) {
  7311. return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\/\/([^\/]+)\//, a, b);
  7312. };
  7313. goog.html.SafeUrl.sanitizeFirefoxExtensionUrl = function (a, b) {
  7314. return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\/\/([^\/]+)\//, a, b);
  7315. };
  7316. goog.html.SafeUrl.sanitizeEdgeExtensionUrl = function (a, b) {
  7317. return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\/\/([^\/]+)\//, a, b);
  7318. };
  7319. goog.html.SafeUrl.sanitizeExtensionUrl_ = function (a, b, c) {
  7320. (a = a.exec(b)) ? (a = a[1], -1 == (c instanceof goog.string.Const ? [goog.string.Const.unwrap(c)] : c.map(function (a) {
  7321. return goog.string.Const.unwrap(a);
  7322. })).indexOf(a) && (b = goog.html.SafeUrl.INNOCUOUS_STRING)) : b = goog.html.SafeUrl.INNOCUOUS_STRING;
  7323. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b);
  7324. };
  7325. goog.html.SafeUrl.fromTrustedResourceUrl = function (a) {
  7326. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a));
  7327. };
  7328. goog.html.SAFE_URL_PATTERN_ = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;
  7329. goog.html.SafeUrl.SAFE_URL_PATTERN = goog.html.SAFE_URL_PATTERN_;
  7330. goog.html.SafeUrl.sanitize = function (a) {
  7331. if (a instanceof goog.html.SafeUrl) return a;
  7332. a = "object" == _typeof(a) && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
  7333. goog.html.SAFE_URL_PATTERN_.test(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7334. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7335. };
  7336. goog.html.SafeUrl.sanitizeAssertUnchanged = function (a, b) {
  7337. if (a instanceof goog.html.SafeUrl) return a;
  7338. a = "object" == _typeof(a) && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
  7339. if (b && /^data:/i.test(a) && (b = goog.html.SafeUrl.fromDataUrl(a), b.getTypedStringValue() == a)) return b;
  7340. goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a), "%s does not match the safe URL pattern", a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
  7341. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
  7342. };
  7343. goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
  7344. goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function (a) {
  7345. return new goog.html.SafeUrl(goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a);
  7346. };
  7347. goog.html.SafeUrl.ABOUT_BLANK = goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");
  7348. goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
  7349. goog.html.SafeStyle = function () {
  7350. this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = "";
  7351. this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
  7352. };
  7353. goog.html.SafeStyle.prototype.implementsGoogStringTypedString = !0;
  7354. goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
  7355. goog.html.SafeStyle.fromConstant = function (a) {
  7356. a = goog.string.Const.unwrap(a);
  7357. if (0 === a.length) return goog.html.SafeStyle.EMPTY;
  7358. goog.asserts.assert(goog.string.internal.endsWith(a, ";"), "Last character of style string is not ';': " + a);
  7359. goog.asserts.assert(goog.string.internal.contains(a, ":"), "Style string must contain at least one ':', to specify a \"name: value\" pair: " + a);
  7360. return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a);
  7361. };
  7362. goog.html.SafeStyle.prototype.getTypedStringValue = function () {
  7363. return this.privateDoNotAccessOrElseSafeStyleWrappedValue_;
  7364. };
  7365. goog.DEBUG && (goog.html.SafeStyle.prototype.toString = function () {
  7366. return "SafeStyle{" + this.privateDoNotAccessOrElseSafeStyleWrappedValue_ + "}";
  7367. });
  7368. goog.html.SafeStyle.unwrap = function (a) {
  7369. if (a instanceof goog.html.SafeStyle && a.constructor === goog.html.SafeStyle && a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;
  7370. goog.asserts.fail("expected object of type SafeStyle, got '" + a + "' of type " + goog.typeOf(a));
  7371. return "type_error:SafeStyle";
  7372. };
  7373. goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function (a) {
  7374. return new goog.html.SafeStyle().initSecurityPrivateDoNotAccessOrElse_(a);
  7375. };
  7376. goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
  7377. this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = a;
  7378. return this;
  7379. };
  7380. goog.html.SafeStyle.EMPTY = goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");
  7381. goog.html.SafeStyle.INNOCUOUS_STRING = "zClosurez";
  7382. goog.html.SafeStyle.create = function (a) {
  7383. var b = "",
  7384. c;
  7385. for (c in a) {
  7386. if (!/^[-_a-zA-Z0-9]+$/.test(c)) throw Error("Name allows only [-_a-zA-Z0-9], got: " + c);
  7387. var d = a[c];
  7388. null != d && (d = Array.isArray(d) ? goog.array.map(d, goog.html.SafeStyle.sanitizePropertyValue_).join(" ") : goog.html.SafeStyle.sanitizePropertyValue_(d), b += c + ":" + d + ";");
  7389. }
  7390. return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY;
  7391. };
  7392. goog.html.SafeStyle.sanitizePropertyValue_ = function (a) {
  7393. if (a instanceof goog.html.SafeUrl) return 'url("' + goog.html.SafeUrl.unwrap(a).replace(/</g, "%3c").replace(/[\\"]/g, "\\$&") + '")';
  7394. a = a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : goog.html.SafeStyle.sanitizePropertyValueString_(String(a));
  7395. if (/[{;}]/.test(a)) throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.", [a]);
  7396. return a;
  7397. };
  7398. goog.html.SafeStyle.sanitizePropertyValueString_ = function (a) {
  7399. var b = a.replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.URL_RE_, "url");
  7400. if (goog.html.SafeStyle.VALUE_RE_.test(b)) {
  7401. if (goog.html.SafeStyle.COMMENT_RE_.test(a)) return goog.asserts.fail("String value disallows comments, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
  7402. if (!goog.html.SafeStyle.hasBalancedQuotes_(a)) return goog.asserts.fail("String value requires balanced quotes, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
  7403. if (!goog.html.SafeStyle.hasBalancedSquareBrackets_(a)) return goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
  7404. } else return goog.asserts.fail("String value allows only " + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + " and simple functions, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
  7405. return goog.html.SafeStyle.sanitizeUrl_(a);
  7406. };
  7407. goog.html.SafeStyle.hasBalancedQuotes_ = function (a) {
  7408. for (var b = !0, c = !0, d = 0; d < a.length; d++) {
  7409. var e = a.charAt(d);
  7410. "'" == e && c ? b = !b : '"' == e && b && (c = !c);
  7411. }
  7412. return b && c;
  7413. };
  7414. goog.html.SafeStyle.hasBalancedSquareBrackets_ = function (a) {
  7415. for (var b = !0, c = /^[-_a-zA-Z0-9]$/, d = 0; d < a.length; d++) {
  7416. var e = a.charAt(d);
  7417. if ("]" == e) {
  7418. if (b) return !1;
  7419. b = !0;
  7420. } else if ("[" == e) {
  7421. if (!b) return !1;
  7422. b = !1;
  7423. } else if (!b && !c.test(e)) return !1;
  7424. }
  7425. return b;
  7426. };
  7427. goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ = "[-,.\"'%_!# a-zA-Z0-9\\[\\]]";
  7428. goog.html.SafeStyle.VALUE_RE_ = new RegExp("^" + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + "+$");
  7429. goog.html.SafeStyle.URL_RE_ = /\b(url\([ \t\n]*)('[ -&(-\[\]-~]*'|"[ !#-\[\]-~]*"|[!#-&*-\[\]-~]*)([ \t\n]*\))/g;
  7430. goog.html.SafeStyle.ALLOWED_FUNCTIONS_ = "calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)?".split(" ");
  7431. goog.html.SafeStyle.FUNCTIONS_RE_ = new RegExp("\\b(" + goog.html.SafeStyle.ALLOWED_FUNCTIONS_.join("|") + ")\\([-+*/0-9a-z.%\\[\\], ]+\\)", "g");
  7432. goog.html.SafeStyle.COMMENT_RE_ = /\/\*/;
  7433. goog.html.SafeStyle.sanitizeUrl_ = function (a) {
  7434. return a.replace(goog.html.SafeStyle.URL_RE_, function (a, c, d, e) {
  7435. var b = "";
  7436. d = d.replace(/^(['"])(.*)\1$/, function (a, c, d) {
  7437. b = c;
  7438. return d;
  7439. });
  7440. a = goog.html.SafeUrl.sanitize(d).getTypedStringValue();
  7441. return c + b + a + b + e;
  7442. });
  7443. };
  7444. goog.html.SafeStyle.concat = function (a) {
  7445. var b = "",
  7446. c = function c(a) {
  7447. Array.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyle.unwrap(a);
  7448. };
  7449. goog.array.forEach(arguments, c);
  7450. return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY;
  7451. };
  7452. goog.html.SafeStyleSheet = function () {
  7453. this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = "";
  7454. this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
  7455. };
  7456. goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString = !0;
  7457. goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
  7458. goog.html.SafeStyleSheet.createRule = function (a, b) {
  7459. if (goog.string.internal.contains(a, "<")) throw Error("Selector does not allow '<', got: " + a);
  7460. var c = a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g, "");
  7461. if (!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c)) throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: " + a);
  7462. if (!goog.html.SafeStyleSheet.hasBalancedBrackets_(c)) throw Error("() and [] in selector must be balanced, got: " + a);
  7463. b instanceof goog.html.SafeStyle || (b = goog.html.SafeStyle.create(b));
  7464. a = a + "{" + goog.html.SafeStyle.unwrap(b).replace(/</g, "\\3C ") + "}";
  7465. return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a);
  7466. };
  7467. goog.html.SafeStyleSheet.hasBalancedBrackets_ = function (a) {
  7468. for (var b = {
  7469. "(": ")",
  7470. "[": "]"
  7471. }, c = [], d = 0; d < a.length; d++) {
  7472. var e = a[d];
  7473. if (b[e]) c.push(b[e]);else if (goog.object.contains(b, e) && c.pop() != e) return !1;
  7474. }
  7475. return 0 == c.length;
  7476. };
  7477. goog.html.SafeStyleSheet.concat = function (a) {
  7478. var b = "",
  7479. c = function c(a) {
  7480. Array.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyleSheet.unwrap(a);
  7481. };
  7482. goog.array.forEach(arguments, c);
  7483. return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b);
  7484. };
  7485. goog.html.SafeStyleSheet.fromConstant = function (a) {
  7486. a = goog.string.Const.unwrap(a);
  7487. if (0 === a.length) return goog.html.SafeStyleSheet.EMPTY;
  7488. goog.asserts.assert(!goog.string.internal.contains(a, "<"), "Forbidden '<' character in style sheet string: " + a);
  7489. return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a);
  7490. };
  7491. goog.html.SafeStyleSheet.prototype.getTypedStringValue = function () {
  7492. return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
  7493. };
  7494. goog.DEBUG && (goog.html.SafeStyleSheet.prototype.toString = function () {
  7495. return "SafeStyleSheet{" + this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ + "}";
  7496. });
  7497. goog.html.SafeStyleSheet.unwrap = function (a) {
  7498. if (a instanceof goog.html.SafeStyleSheet && a.constructor === goog.html.SafeStyleSheet && a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
  7499. goog.asserts.fail("expected object of type SafeStyleSheet, got '" + a + "' of type " + goog.typeOf(a));
  7500. return "type_error:SafeStyleSheet";
  7501. };
  7502. goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse = function (a) {
  7503. return new goog.html.SafeStyleSheet().initSecurityPrivateDoNotAccessOrElse_(a);
  7504. };
  7505. goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
  7506. this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = a;
  7507. return this;
  7508. };
  7509. goog.html.SafeStyleSheet.EMPTY = goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");
  7510. goog.labs = {};
  7511. goog.labs.userAgent = {};
  7512. goog.labs.userAgent.util = {};
  7513. goog.labs.userAgent.util.getNativeUserAgentString_ = function () {
  7514. var a = goog.labs.userAgent.util.getNavigator_();
  7515. return a && (a = a.userAgent) ? a : "";
  7516. };
  7517. goog.labs.userAgent.util.getNavigator_ = function () {
  7518. return goog.global.navigator;
  7519. };
  7520. goog.labs.userAgent.util.userAgent_ = goog.labs.userAgent.util.getNativeUserAgentString_();
  7521. goog.labs.userAgent.util.setUserAgent = function (a) {
  7522. goog.labs.userAgent.util.userAgent_ = a || goog.labs.userAgent.util.getNativeUserAgentString_();
  7523. };
  7524. goog.labs.userAgent.util.getUserAgent = function () {
  7525. return goog.labs.userAgent.util.userAgent_;
  7526. };
  7527. goog.labs.userAgent.util.matchUserAgent = function (a) {
  7528. var b = goog.labs.userAgent.util.getUserAgent();
  7529. return goog.string.internal.contains(b, a);
  7530. };
  7531. goog.labs.userAgent.util.matchUserAgentIgnoreCase = function (a) {
  7532. var b = goog.labs.userAgent.util.getUserAgent();
  7533. return goog.string.internal.caseInsensitiveContains(b, a);
  7534. };
  7535. goog.labs.userAgent.util.extractVersionTuples = function (a) {
  7536. for (var b = /(\w[\w ]+)\/([^\s]+)\s*(?:\((.*?)\))?/g, c = [], d; d = b.exec(a);) {
  7537. c.push([d[1], d[2], d[3] || void 0]);
  7538. }
  7539. return c;
  7540. };
  7541. goog.labs.userAgent.browser = {};
  7542. goog.labs.userAgent.browser.matchOpera_ = function () {
  7543. return goog.labs.userAgent.util.matchUserAgent("Opera");
  7544. };
  7545. goog.labs.userAgent.browser.matchIE_ = function () {
  7546. return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE");
  7547. };
  7548. goog.labs.userAgent.browser.matchEdgeHtml_ = function () {
  7549. return goog.labs.userAgent.util.matchUserAgent("Edge");
  7550. };
  7551. goog.labs.userAgent.browser.matchEdgeChromium_ = function () {
  7552. return goog.labs.userAgent.util.matchUserAgent("Edg/");
  7553. };
  7554. goog.labs.userAgent.browser.matchOperaChromium_ = function () {
  7555. return goog.labs.userAgent.util.matchUserAgent("OPR");
  7556. };
  7557. goog.labs.userAgent.browser.matchFirefox_ = function () {
  7558. return goog.labs.userAgent.util.matchUserAgent("Firefox") || goog.labs.userAgent.util.matchUserAgent("FxiOS");
  7559. };
  7560. goog.labs.userAgent.browser.matchSafari_ = function () {
  7561. return goog.labs.userAgent.util.matchUserAgent("Safari") && !(goog.labs.userAgent.browser.matchChrome_() || goog.labs.userAgent.browser.matchCoast_() || goog.labs.userAgent.browser.matchOpera_() || goog.labs.userAgent.browser.matchEdgeHtml_() || goog.labs.userAgent.browser.matchEdgeChromium_() || goog.labs.userAgent.browser.matchOperaChromium_() || goog.labs.userAgent.browser.matchFirefox_() || goog.labs.userAgent.browser.isSilk() || goog.labs.userAgent.util.matchUserAgent("Android"));
  7562. };
  7563. goog.labs.userAgent.browser.matchCoast_ = function () {
  7564. return goog.labs.userAgent.util.matchUserAgent("Coast");
  7565. };
  7566. goog.labs.userAgent.browser.matchIosWebview_ = function () {
  7567. return (goog.labs.userAgent.util.matchUserAgent("iPad") || goog.labs.userAgent.util.matchUserAgent("iPhone")) && !goog.labs.userAgent.browser.matchSafari_() && !goog.labs.userAgent.browser.matchChrome_() && !goog.labs.userAgent.browser.matchCoast_() && !goog.labs.userAgent.browser.matchFirefox_() && goog.labs.userAgent.util.matchUserAgent("AppleWebKit");
  7568. };
  7569. goog.labs.userAgent.browser.matchChrome_ = function () {
  7570. return (goog.labs.userAgent.util.matchUserAgent("Chrome") || goog.labs.userAgent.util.matchUserAgent("CriOS")) && !goog.labs.userAgent.browser.matchEdgeHtml_();
  7571. };
  7572. goog.labs.userAgent.browser.matchAndroidBrowser_ = function () {
  7573. return goog.labs.userAgent.util.matchUserAgent("Android") && !(goog.labs.userAgent.browser.isChrome() || goog.labs.userAgent.browser.isFirefox() || goog.labs.userAgent.browser.isOpera() || goog.labs.userAgent.browser.isSilk());
  7574. };
  7575. goog.labs.userAgent.browser.isOpera = goog.labs.userAgent.browser.matchOpera_;
  7576. goog.labs.userAgent.browser.isIE = goog.labs.userAgent.browser.matchIE_;
  7577. goog.labs.userAgent.browser.isEdge = goog.labs.userAgent.browser.matchEdgeHtml_;
  7578. goog.labs.userAgent.browser.isEdgeChromium = goog.labs.userAgent.browser.matchEdgeChromium_;
  7579. goog.labs.userAgent.browser.isOperaChromium = goog.labs.userAgent.browser.matchOperaChromium_;
  7580. goog.labs.userAgent.browser.isFirefox = goog.labs.userAgent.browser.matchFirefox_;
  7581. goog.labs.userAgent.browser.isSafari = goog.labs.userAgent.browser.matchSafari_;
  7582. goog.labs.userAgent.browser.isCoast = goog.labs.userAgent.browser.matchCoast_;
  7583. goog.labs.userAgent.browser.isIosWebview = goog.labs.userAgent.browser.matchIosWebview_;
  7584. goog.labs.userAgent.browser.isChrome = goog.labs.userAgent.browser.matchChrome_;
  7585. goog.labs.userAgent.browser.isAndroidBrowser = goog.labs.userAgent.browser.matchAndroidBrowser_;
  7586. goog.labs.userAgent.browser.isSilk = function () {
  7587. return goog.labs.userAgent.util.matchUserAgent("Silk");
  7588. };
  7589. goog.labs.userAgent.browser.getVersion = function () {
  7590. function a(a) {
  7591. a = goog.array.find(a, d);
  7592. return c[a] || "";
  7593. }
  7594. var b = goog.labs.userAgent.util.getUserAgent();
  7595. if (goog.labs.userAgent.browser.isIE()) return goog.labs.userAgent.browser.getIEVersion_(b);
  7596. b = goog.labs.userAgent.util.extractVersionTuples(b);
  7597. var c = {};
  7598. goog.array.forEach(b, function (a) {
  7599. c[a[0]] = a[1];
  7600. });
  7601. var d = goog.partial(goog.object.containsKey, c);
  7602. return goog.labs.userAgent.browser.isOpera() ? a(["Version", "Opera"]) : goog.labs.userAgent.browser.isEdge() ? a(["Edge"]) : goog.labs.userAgent.browser.isEdgeChromium() ? a(["Edg"]) : goog.labs.userAgent.browser.isChrome() ? a(["Chrome", "CriOS", "HeadlessChrome"]) : (b = b[2]) && b[1] || "";
  7603. };
  7604. goog.labs.userAgent.browser.isVersionOrHigher = function (a) {
  7605. return 0 <= goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(), a);
  7606. };
  7607. goog.labs.userAgent.browser.getIEVersion_ = function (a) {
  7608. var b = /rv: *([\d\.]*)/.exec(a);
  7609. if (b && b[1]) return b[1];
  7610. b = "";
  7611. var c = /MSIE +([\d\.]+)/.exec(a);
  7612. if (c && c[1]) if (a = /Trident\/(\d.\d)/.exec(a), "7.0" == c[1]) {
  7613. if (a && a[1]) switch (a[1]) {
  7614. case "4.0":
  7615. b = "8.0";
  7616. break;
  7617. case "5.0":
  7618. b = "9.0";
  7619. break;
  7620. case "6.0":
  7621. b = "10.0";
  7622. break;
  7623. case "7.0":
  7624. b = "11.0";
  7625. } else b = "7.0";
  7626. } else b = c[1];
  7627. return b;
  7628. };
  7629. goog.html.SafeHtml = function () {
  7630. this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = "";
  7631. this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
  7632. this.dir_ = null;
  7633. };
  7634. goog.html.SafeHtml.ENABLE_ERROR_MESSAGES = goog.DEBUG;
  7635. goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE = !0;
  7636. goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString = !0;
  7637. goog.html.SafeHtml.prototype.getDirection = function () {
  7638. return this.dir_;
  7639. };
  7640. goog.html.SafeHtml.prototype.implementsGoogStringTypedString = !0;
  7641. goog.html.SafeHtml.prototype.getTypedStringValue = function () {
  7642. return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString();
  7643. };
  7644. goog.DEBUG && (goog.html.SafeHtml.prototype.toString = function () {
  7645. return "SafeHtml{" + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ + "}";
  7646. });
  7647. goog.html.SafeHtml.unwrap = function (a) {
  7648. return goog.html.SafeHtml.unwrapTrustedHTML(a).toString();
  7649. };
  7650. goog.html.SafeHtml.unwrapTrustedHTML = function (a) {
  7651. if (a instanceof goog.html.SafeHtml && a.constructor === goog.html.SafeHtml && a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
  7652. goog.asserts.fail("expected object of type SafeHtml, got '" + a + "' of type " + goog.typeOf(a));
  7653. return "type_error:SafeHtml";
  7654. };
  7655. goog.html.SafeHtml.htmlEscape = function (a) {
  7656. if (a instanceof goog.html.SafeHtml) return a;
  7657. var b = "object" == _typeof(a),
  7658. c = null;
  7659. b && a.implementsGoogI18nBidiDirectionalString && (c = a.getDirection());
  7660. a = b && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
  7661. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a), c);
  7662. };
  7663. goog.html.SafeHtml.htmlEscapePreservingNewlines = function (a) {
  7664. if (a instanceof goog.html.SafeHtml) return a;
  7665. a = goog.html.SafeHtml.htmlEscape(a);
  7666. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(a)), a.getDirection());
  7667. };
  7668. goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function (a) {
  7669. if (a instanceof goog.html.SafeHtml) return a;
  7670. a = goog.html.SafeHtml.htmlEscape(a);
  7671. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(a)), a.getDirection());
  7672. };
  7673. goog.html.SafeHtml.from = goog.html.SafeHtml.htmlEscape;
  7674. goog.html.SafeHtml.comment = function (a) {
  7675. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--" + goog.string.internal.htmlEscape(a) + "--\x3e", null);
  7676. };
  7677. goog.html.SafeHtml.VALID_NAMES_IN_TAG_ = /^[a-zA-Z0-9-]+$/;
  7678. goog.html.SafeHtml.URL_ATTRIBUTES_ = {
  7679. action: !0,
  7680. cite: !0,
  7681. data: !0,
  7682. formaction: !0,
  7683. href: !0,
  7684. manifest: !0,
  7685. poster: !0,
  7686. src: !0
  7687. };
  7688. goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_ = {
  7689. APPLET: !0,
  7690. BASE: !0,
  7691. EMBED: !0,
  7692. IFRAME: !0,
  7693. LINK: !0,
  7694. MATH: !0,
  7695. META: !0,
  7696. OBJECT: !0,
  7697. SCRIPT: !0,
  7698. STYLE: !0,
  7699. SVG: !0,
  7700. TEMPLATE: !0
  7701. };
  7702. goog.html.SafeHtml.create = function (a, b, c) {
  7703. goog.html.SafeHtml.verifyTagName(String(a));
  7704. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a), b, c);
  7705. };
  7706. goog.html.SafeHtml.verifyTagName = function (a) {
  7707. if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Invalid tag name <" + a + ">." : "");
  7708. if (a.toUpperCase() in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Tag name <" + a + "> is not allowed for SafeHtml." : "");
  7709. };
  7710. goog.html.SafeHtml.createIframe = function (a, b, c, d) {
  7711. a && goog.html.TrustedResourceUrl.unwrap(a);
  7712. var e = {};
  7713. e.src = a || null;
  7714. e.srcdoc = b && goog.html.SafeHtml.unwrap(b);
  7715. a = goog.html.SafeHtml.combineAttributes(e, {
  7716. sandbox: ""
  7717. }, c);
  7718. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d);
  7719. };
  7720. goog.html.SafeHtml.createSandboxIframe = function (a, b, c, d) {
  7721. if (!goog.html.SafeHtml.canUseSandboxIframe()) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "The browser does not support sandboxed iframes." : "");
  7722. var e = {};
  7723. e.src = a ? goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)) : null;
  7724. e.srcdoc = b || null;
  7725. e.sandbox = "";
  7726. a = goog.html.SafeHtml.combineAttributes(e, {}, c);
  7727. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d);
  7728. };
  7729. goog.html.SafeHtml.canUseSandboxIframe = function () {
  7730. return goog.global.HTMLIFrameElement && "sandbox" in goog.global.HTMLIFrameElement.prototype;
  7731. };
  7732. goog.html.SafeHtml.createScriptSrc = function (a, b) {
  7733. goog.html.TrustedResourceUrl.unwrap(a);
  7734. a = goog.html.SafeHtml.combineAttributes({
  7735. src: a
  7736. }, {}, b);
  7737. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", a);
  7738. };
  7739. goog.html.SafeHtml.createScript = function (a, b) {
  7740. for (var c in b) {
  7741. var d = c.toLowerCase();
  7742. if ("language" == d || "src" == d || "text" == d || "type" == d) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot set "' + d + '" attribute' : "");
  7743. }
  7744. c = "";
  7745. a = goog.array.concat(a);
  7746. for (d = 0; d < a.length; d++) {
  7747. c += goog.html.SafeScript.unwrap(a[d]);
  7748. }
  7749. a = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL);
  7750. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", b, a);
  7751. };
  7752. goog.html.SafeHtml.createStyle = function (a, b) {
  7753. b = goog.html.SafeHtml.combineAttributes({
  7754. type: "text/css"
  7755. }, {}, b);
  7756. var c = "";
  7757. a = goog.array.concat(a);
  7758. for (var d = 0; d < a.length; d++) {
  7759. c += goog.html.SafeStyleSheet.unwrap(a[d]);
  7760. }
  7761. a = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL);
  7762. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style", b, a);
  7763. };
  7764. goog.html.SafeHtml.createMetaRefresh = function (a, b) {
  7765. a = goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));
  7766. (goog.labs.userAgent.browser.isIE() || goog.labs.userAgent.browser.isEdge()) && goog.string.internal.contains(a, ";") && (a = "'" + a.replace(/'/g, "%27") + "'");
  7767. return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta", {
  7768. "http-equiv": "refresh",
  7769. content: (b || 0) + "; url=" + a
  7770. });
  7771. };
  7772. goog.html.SafeHtml.getAttrNameAndValue_ = function (a, b, c) {
  7773. if (c instanceof goog.string.Const) c = goog.string.Const.unwrap(c);else if ("style" == b.toLowerCase()) {
  7774. if (goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE) c = goog.html.SafeHtml.getStyleValue_(c);else throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "style" not supported.' : "");
  7775. } else {
  7776. if (/^on/i.test(b)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" requires goog.string.Const value, "' + c + '" given.' : "");
  7777. if (b.toLowerCase() in goog.html.SafeHtml.URL_ATTRIBUTES_) if (c instanceof goog.html.TrustedResourceUrl) c = goog.html.TrustedResourceUrl.unwrap(c);else if (c instanceof goog.html.SafeUrl) c = goog.html.SafeUrl.unwrap(c);else if ("string" === typeof c) c = goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" on tag "' + a + '" requires goog.html.SafeUrl, goog.string.Const, or string, value "' + c + '" given.' : "");
  7778. }
  7779. c.implementsGoogStringTypedString && (c = c.getTypedStringValue());
  7780. goog.asserts.assert("string" === typeof c || "number" === typeof c, "String or number value expected, got " + _typeof(c) + " with value: " + c);
  7781. return b + '="' + goog.string.internal.htmlEscape(String(c)) + '"';
  7782. };
  7783. goog.html.SafeHtml.getStyleValue_ = function (a) {
  7784. if (!goog.isObject(a)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'The "style" attribute requires goog.html.SafeStyle or map of style properties, ' + _typeof(a) + " given: " + a : "");
  7785. a instanceof goog.html.SafeStyle || (a = goog.html.SafeStyle.create(a));
  7786. return goog.html.SafeStyle.unwrap(a);
  7787. };
  7788. goog.html.SafeHtml.createWithDir = function (a, b, c, d) {
  7789. b = goog.html.SafeHtml.create(b, c, d);
  7790. b.dir_ = a;
  7791. return b;
  7792. };
  7793. goog.html.SafeHtml.join = function (a, b) {
  7794. a = goog.html.SafeHtml.htmlEscape(a);
  7795. var c = a.getDirection(),
  7796. d = [],
  7797. e = function e(a) {
  7798. Array.isArray(a) ? goog.array.forEach(a, e) : (a = goog.html.SafeHtml.htmlEscape(a), d.push(goog.html.SafeHtml.unwrap(a)), a = a.getDirection(), c == goog.i18n.bidi.Dir.NEUTRAL ? c = a : a != goog.i18n.bidi.Dir.NEUTRAL && c != a && (c = null));
  7799. };
  7800. goog.array.forEach(b, e);
  7801. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d.join(goog.html.SafeHtml.unwrap(a)), c);
  7802. };
  7803. goog.html.SafeHtml.concat = function (a) {
  7804. return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY, Array.prototype.slice.call(arguments));
  7805. };
  7806. goog.html.SafeHtml.concatWithDir = function (a, b) {
  7807. var c = goog.html.SafeHtml.concat(goog.array.slice(arguments, 1));
  7808. c.dir_ = a;
  7809. return c;
  7810. };
  7811. goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
  7812. goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function (a, b) {
  7813. return new goog.html.SafeHtml().initSecurityPrivateDoNotAccessOrElse_(a, b);
  7814. };
  7815. goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a, b) {
  7816. this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(a) : a;
  7817. this.dir_ = b;
  7818. return this;
  7819. };
  7820. goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function (a, b, c) {
  7821. var d = null;
  7822. var e = "<" + a + goog.html.SafeHtml.stringifyAttributes(a, b);
  7823. null == c ? c = [] : Array.isArray(c) || (c = [c]);
  7824. goog.dom.tags.isVoidTag(a.toLowerCase()) ? (goog.asserts.assert(!c.length, "Void tag <" + a + "> does not allow content."), e += ">") : (d = goog.html.SafeHtml.concat(c), e += ">" + goog.html.SafeHtml.unwrap(d) + "</" + a + ">", d = d.getDirection());
  7825. (a = b && b.dir) && (d = /^(ltr|rtl|auto)$/i.test(a) ? goog.i18n.bidi.Dir.NEUTRAL : null);
  7826. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e, d);
  7827. };
  7828. goog.html.SafeHtml.stringifyAttributes = function (a, b) {
  7829. var c = "";
  7830. if (b) for (var d in b) {
  7831. if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Invalid attribute name "' + d + '".' : "");
  7832. var e = b[d];
  7833. null != e && (c += " " + goog.html.SafeHtml.getAttrNameAndValue_(a, d, e));
  7834. }
  7835. return c;
  7836. };
  7837. goog.html.SafeHtml.combineAttributes = function (a, b, c) {
  7838. var d = {},
  7839. e;
  7840. for (e in a) {
  7841. goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"), d[e] = a[e];
  7842. }
  7843. for (e in b) {
  7844. goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"), d[e] = b[e];
  7845. }
  7846. if (c) for (e in c) {
  7847. var f = e.toLowerCase();
  7848. if (f in a) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot override "' + f + '" attribute, got "' + e + '" with value "' + c[e] + '"' : "");
  7849. f in b && delete d[f];
  7850. d[e] = c[e];
  7851. }
  7852. return d;
  7853. };
  7854. goog.html.SafeHtml.DOCTYPE_HTML = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>", goog.i18n.bidi.Dir.NEUTRAL);
  7855. goog.html.SafeHtml.EMPTY = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("", goog.i18n.bidi.Dir.NEUTRAL);
  7856. goog.html.SafeHtml.BR = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>", goog.i18n.bidi.Dir.NEUTRAL);
  7857. goog.html.uncheckedconversions = {};
  7858. goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract = function (a, b, c) {
  7859. goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
  7860. goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
  7861. return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b, c || null);
  7862. };
  7863. goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract = function (a, b) {
  7864. goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
  7865. goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
  7866. return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b);
  7867. };
  7868. goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract = function (a, b) {
  7869. goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
  7870. goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
  7871. return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b);
  7872. };
  7873. goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract = function (a, b) {
  7874. goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
  7875. goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
  7876. return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b);
  7877. };
  7878. goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract = function (a, b) {
  7879. goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
  7880. goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
  7881. return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b);
  7882. };
  7883. goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract = function (a, b) {
  7884. goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
  7885. goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
  7886. return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b);
  7887. };
  7888. goog.dom.safe = {};
  7889. goog.dom.safe.InsertAdjacentHtmlPosition = {
  7890. AFTERBEGIN: "afterbegin",
  7891. AFTEREND: "afterend",
  7892. BEFOREBEGIN: "beforebegin",
  7893. BEFOREEND: "beforeend"
  7894. };
  7895. goog.dom.safe.insertAdjacentHtml = function (a, b, c) {
  7896. a.insertAdjacentHTML(b, goog.html.SafeHtml.unwrapTrustedHTML(c));
  7897. };
  7898. goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_ = {
  7899. MATH: !0,
  7900. SCRIPT: !0,
  7901. STYLE: !0,
  7902. SVG: !0,
  7903. TEMPLATE: !0
  7904. };
  7905. goog.dom.safe.isInnerHtmlCleanupRecursive_ = goog.functions.cacheReturnValue(function () {
  7906. if (goog.DEBUG && "undefined" === typeof document) return !1;
  7907. var a = document.createElement("div"),
  7908. b = document.createElement("div");
  7909. b.appendChild(document.createElement("div"));
  7910. a.appendChild(b);
  7911. if (goog.DEBUG && !a.firstChild) return !1;
  7912. b = a.firstChild.firstChild;
  7913. a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY);
  7914. return !b.parentElement;
  7915. });
  7916. goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse = function (a, b) {
  7917. if (goog.dom.safe.isInnerHtmlCleanupRecursive_()) for (; a.lastChild;) {
  7918. a.removeChild(a.lastChild);
  7919. }
  7920. a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b);
  7921. };
  7922. goog.dom.safe.setInnerHtml = function (a, b) {
  7923. if (goog.asserts.ENABLE_ASSERTS) {
  7924. var c = a.tagName.toUpperCase();
  7925. if (goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c]) throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of " + a.tagName + ".");
  7926. }
  7927. goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a, b);
  7928. };
  7929. goog.dom.safe.setOuterHtml = function (a, b) {
  7930. a.outerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b);
  7931. };
  7932. goog.dom.safe.setFormElementAction = function (a, b) {
  7933. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  7934. goog.dom.asserts.assertIsHTMLFormElement(a).action = goog.html.SafeUrl.unwrap(b);
  7935. };
  7936. goog.dom.safe.setButtonFormAction = function (a, b) {
  7937. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  7938. goog.dom.asserts.assertIsHTMLButtonElement(a).formAction = goog.html.SafeUrl.unwrap(b);
  7939. };
  7940. goog.dom.safe.setInputFormAction = function (a, b) {
  7941. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  7942. goog.dom.asserts.assertIsHTMLInputElement(a).formAction = goog.html.SafeUrl.unwrap(b);
  7943. };
  7944. goog.dom.safe.setStyle = function (a, b) {
  7945. a.style.cssText = goog.html.SafeStyle.unwrap(b);
  7946. };
  7947. goog.dom.safe.documentWrite = function (a, b) {
  7948. a.write(goog.html.SafeHtml.unwrapTrustedHTML(b));
  7949. };
  7950. goog.dom.safe.setAnchorHref = function (a, b) {
  7951. goog.dom.asserts.assertIsHTMLAnchorElement(a);
  7952. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  7953. a.href = goog.html.SafeUrl.unwrap(b);
  7954. };
  7955. goog.dom.safe.setImageSrc = function (a, b) {
  7956. goog.dom.asserts.assertIsHTMLImageElement(a);
  7957. if (!(b instanceof goog.html.SafeUrl)) {
  7958. var c = /^data:image\//i.test(b);
  7959. b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
  7960. }
  7961. a.src = goog.html.SafeUrl.unwrap(b);
  7962. };
  7963. goog.dom.safe.setAudioSrc = function (a, b) {
  7964. goog.dom.asserts.assertIsHTMLAudioElement(a);
  7965. if (!(b instanceof goog.html.SafeUrl)) {
  7966. var c = /^data:audio\//i.test(b);
  7967. b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
  7968. }
  7969. a.src = goog.html.SafeUrl.unwrap(b);
  7970. };
  7971. goog.dom.safe.setVideoSrc = function (a, b) {
  7972. goog.dom.asserts.assertIsHTMLVideoElement(a);
  7973. if (!(b instanceof goog.html.SafeUrl)) {
  7974. var c = /^data:video\//i.test(b);
  7975. b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
  7976. }
  7977. a.src = goog.html.SafeUrl.unwrap(b);
  7978. };
  7979. goog.dom.safe.setEmbedSrc = function (a, b) {
  7980. goog.dom.asserts.assertIsHTMLEmbedElement(a);
  7981. a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
  7982. };
  7983. goog.dom.safe.setFrameSrc = function (a, b) {
  7984. goog.dom.asserts.assertIsHTMLFrameElement(a);
  7985. a.src = goog.html.TrustedResourceUrl.unwrap(b);
  7986. };
  7987. goog.dom.safe.setIframeSrc = function (a, b) {
  7988. goog.dom.asserts.assertIsHTMLIFrameElement(a);
  7989. a.src = goog.html.TrustedResourceUrl.unwrap(b);
  7990. };
  7991. goog.dom.safe.setIframeSrcdoc = function (a, b) {
  7992. goog.dom.asserts.assertIsHTMLIFrameElement(a);
  7993. a.srcdoc = goog.html.SafeHtml.unwrapTrustedHTML(b);
  7994. };
  7995. goog.dom.safe.setLinkHrefAndRel = function (a, b, c) {
  7996. goog.dom.asserts.assertIsHTMLLinkElement(a);
  7997. a.rel = c;
  7998. goog.string.internal.caseInsensitiveContains(c, "stylesheet") ? (goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl, 'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'), a.href = goog.html.TrustedResourceUrl.unwrap(b)) : a.href = b instanceof goog.html.TrustedResourceUrl ? goog.html.TrustedResourceUrl.unwrap(b) : b instanceof goog.html.SafeUrl ? goog.html.SafeUrl.unwrap(b) : goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b));
  7999. };
  8000. goog.dom.safe.setObjectData = function (a, b) {
  8001. goog.dom.asserts.assertIsHTMLObjectElement(a);
  8002. a.data = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
  8003. };
  8004. goog.dom.safe.setScriptSrc = function (a, b) {
  8005. goog.dom.asserts.assertIsHTMLScriptElement(a);
  8006. a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
  8007. (b = goog.getScriptNonce()) && a.setAttribute("nonce", b);
  8008. };
  8009. goog.dom.safe.setScriptContent = function (a, b) {
  8010. goog.dom.asserts.assertIsHTMLScriptElement(a);
  8011. a.text = goog.html.SafeScript.unwrapTrustedScript(b);
  8012. (b = goog.getScriptNonce()) && a.setAttribute("nonce", b);
  8013. };
  8014. goog.dom.safe.setLocationHref = function (a, b) {
  8015. goog.dom.asserts.assertIsLocation(a);
  8016. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  8017. a.href = goog.html.SafeUrl.unwrap(b);
  8018. };
  8019. goog.dom.safe.assignLocation = function (a, b) {
  8020. goog.dom.asserts.assertIsLocation(a);
  8021. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  8022. a.assign(goog.html.SafeUrl.unwrap(b));
  8023. };
  8024. goog.dom.safe.replaceLocation = function (a, b) {
  8025. b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
  8026. a.replace(goog.html.SafeUrl.unwrap(b));
  8027. };
  8028. goog.dom.safe.openInWindow = function (a, b, c, d, e) {
  8029. a = a instanceof goog.html.SafeUrl ? a : goog.html.SafeUrl.sanitizeAssertUnchanged(a);
  8030. b = b || goog.global;
  8031. c = c instanceof goog.string.Const ? goog.string.Const.unwrap(c) : c || "";
  8032. return b.open(goog.html.SafeUrl.unwrap(a), c, d, e);
  8033. };
  8034. goog.dom.safe.parseFromStringHtml = function (a, b) {
  8035. return goog.dom.safe.parseFromString(a, b, "text/html");
  8036. };
  8037. goog.dom.safe.parseFromString = function (a, b, c) {
  8038. return a.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(b), c);
  8039. };
  8040. goog.dom.safe.createImageFromBlob = function (a) {
  8041. if (!/^image\/.*/g.test(a.type)) throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");
  8042. var b = goog.global.URL.createObjectURL(a);
  8043. a = new goog.global.Image();
  8044. a.onload = function () {
  8045. goog.global.URL.revokeObjectURL(b);
  8046. };
  8047. goog.dom.safe.setImageSrc(a, goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."), b));
  8048. return a;
  8049. };
  8050. goog.string.DETECT_DOUBLE_ESCAPING = !1;
  8051. goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1;
  8052. goog.string.Unicode = {
  8053. NBSP: "\xA0"
  8054. };
  8055. goog.string.startsWith = goog.string.internal.startsWith;
  8056. goog.string.endsWith = goog.string.internal.endsWith;
  8057. goog.string.caseInsensitiveStartsWith = goog.string.internal.caseInsensitiveStartsWith;
  8058. goog.string.caseInsensitiveEndsWith = goog.string.internal.caseInsensitiveEndsWith;
  8059. goog.string.caseInsensitiveEquals = goog.string.internal.caseInsensitiveEquals;
  8060. goog.string.subs = function (a, b) {
  8061. for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;) {
  8062. d += c.shift() + e.shift();
  8063. }
  8064. return d + c.join("%s");
  8065. };
  8066. goog.string.collapseWhitespace = function (a) {
  8067. return a.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "");
  8068. };
  8069. goog.string.isEmptyOrWhitespace = goog.string.internal.isEmptyOrWhitespace;
  8070. goog.string.isEmptyString = function (a) {
  8071. return 0 == a.length;
  8072. };
  8073. goog.string.isEmpty = goog.string.isEmptyOrWhitespace;
  8074. goog.string.isEmptyOrWhitespaceSafe = function (a) {
  8075. return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a));
  8076. };
  8077. goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;
  8078. goog.string.isBreakingWhitespace = function (a) {
  8079. return !/[^\t\n\r ]/.test(a);
  8080. };
  8081. goog.string.isAlpha = function (a) {
  8082. return !/[^a-zA-Z]/.test(a);
  8083. };
  8084. goog.string.isNumeric = function (a) {
  8085. return !/[^0-9]/.test(a);
  8086. };
  8087. goog.string.isAlphaNumeric = function (a) {
  8088. return !/[^a-zA-Z0-9]/.test(a);
  8089. };
  8090. goog.string.isSpace = function (a) {
  8091. return " " == a;
  8092. };
  8093. goog.string.isUnicodeChar = function (a) {
  8094. return 1 == a.length && " " <= a && "~" >= a || "\x80" <= a && "\uFFFD" >= a;
  8095. };
  8096. goog.string.stripNewlines = function (a) {
  8097. return a.replace(/(\r\n|\r|\n)+/g, " ");
  8098. };
  8099. goog.string.canonicalizeNewlines = function (a) {
  8100. return a.replace(/(\r\n|\r|\n)/g, "\n");
  8101. };
  8102. goog.string.normalizeWhitespace = function (a) {
  8103. return a.replace(/\xa0|\s/g, " ");
  8104. };
  8105. goog.string.normalizeSpaces = function (a) {
  8106. return a.replace(/\xa0|[ \t]+/g, " ");
  8107. };
  8108. goog.string.collapseBreakingSpaces = function (a) {
  8109. return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "");
  8110. };
  8111. goog.string.trim = goog.string.internal.trim;
  8112. goog.string.trimLeft = function (a) {
  8113. return a.replace(/^[\s\xa0]+/, "");
  8114. };
  8115. goog.string.trimRight = function (a) {
  8116. return a.replace(/[\s\xa0]+$/, "");
  8117. };
  8118. goog.string.caseInsensitiveCompare = goog.string.internal.caseInsensitiveCompare;
  8119. goog.string.numberAwareCompare_ = function (a, b, c) {
  8120. if (a == b) return 0;
  8121. if (!a) return -1;
  8122. if (!b) return 1;
  8123. for (var d = a.toLowerCase().match(c), e = b.toLowerCase().match(c), f = Math.min(d.length, e.length), g = 0; g < f; g++) {
  8124. c = d[g];
  8125. var h = e[g];
  8126. if (c != h) return a = parseInt(c, 10), !isNaN(a) && (b = parseInt(h, 10), !isNaN(b) && a - b) ? a - b : c < h ? -1 : 1;
  8127. }
  8128. return d.length != e.length ? d.length - e.length : a < b ? -1 : 1;
  8129. };
  8130. goog.string.intAwareCompare = function (a, b) {
  8131. return goog.string.numberAwareCompare_(a, b, /\d+|\D+/g);
  8132. };
  8133. goog.string.floatAwareCompare = function (a, b) {
  8134. return goog.string.numberAwareCompare_(a, b, /\d+|\.\d+|\D+/g);
  8135. };
  8136. goog.string.numerateCompare = goog.string.floatAwareCompare;
  8137. goog.string.urlEncode = function (a) {
  8138. return encodeURIComponent(String(a));
  8139. };
  8140. goog.string.urlDecode = function (a) {
  8141. return decodeURIComponent(a.replace(/\+/g, " "));
  8142. };
  8143. goog.string.newLineToBr = goog.string.internal.newLineToBr;
  8144. goog.string.htmlEscape = function (a, b) {
  8145. a = goog.string.internal.htmlEscape(a, b);
  8146. goog.string.DETECT_DOUBLE_ESCAPING && (a = a.replace(goog.string.E_RE_, "&#101;"));
  8147. return a;
  8148. };
  8149. goog.string.E_RE_ = /e/g;
  8150. goog.string.unescapeEntities = function (a) {
  8151. return goog.string.contains(a, "&") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a;
  8152. };
  8153. goog.string.unescapeEntitiesWithDocument = function (a, b) {
  8154. return goog.string.contains(a, "&") ? goog.string.unescapeEntitiesUsingDom_(a, b) : a;
  8155. };
  8156. goog.string.unescapeEntitiesUsingDom_ = function (a, b) {
  8157. var c = {
  8158. "&amp;": "&",
  8159. "&lt;": "<",
  8160. "&gt;": ">",
  8161. "&quot;": '"'
  8162. };
  8163. var d = b ? b.createElement("div") : goog.global.document.createElement("div");
  8164. return a.replace(goog.string.HTML_ENTITY_PATTERN_, function (a, b) {
  8165. var e = c[a];
  8166. if (e) return e;
  8167. "#" == b.charAt(0) && (b = Number("0" + b.substr(1)), isNaN(b) || (e = String.fromCharCode(b)));
  8168. e || (goog.dom.safe.setInnerHtml(d, goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."), a + " ")), e = d.firstChild.nodeValue.slice(0, -1));
  8169. return c[a] = e;
  8170. });
  8171. };
  8172. goog.string.unescapePureXmlEntities_ = function (a) {
  8173. return a.replace(/&([^;]+);/g, function (a, c) {
  8174. switch (c) {
  8175. case "amp":
  8176. return "&";
  8177. case "lt":
  8178. return "<";
  8179. case "gt":
  8180. return ">";
  8181. case "quot":
  8182. return '"';
  8183. default:
  8184. return "#" != c.charAt(0) || (c = Number("0" + c.substr(1)), isNaN(c)) ? a : String.fromCharCode(c);
  8185. }
  8186. });
  8187. };
  8188. goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g;
  8189. goog.string.whitespaceEscape = function (a, b) {
  8190. return goog.string.newLineToBr(a.replace(/ /g, " &#160;"), b);
  8191. };
  8192. goog.string.preserveSpaces = function (a) {
  8193. return a.replace(/(^|[\n ]) /g, "$1" + goog.string.Unicode.NBSP);
  8194. };
  8195. goog.string.stripQuotes = function (a, b) {
  8196. for (var c = b.length, d = 0; d < c; d++) {
  8197. var e = 1 == c ? b : b.charAt(d);
  8198. if (a.charAt(0) == e && a.charAt(a.length - 1) == e) return a.substring(1, a.length - 1);
  8199. }
  8200. return a;
  8201. };
  8202. goog.string.truncate = function (a, b, c) {
  8203. c && (a = goog.string.unescapeEntities(a));
  8204. a.length > b && (a = a.substring(0, b - 3) + "...");
  8205. c && (a = goog.string.htmlEscape(a));
  8206. return a;
  8207. };
  8208. goog.string.truncateMiddle = function (a, b, c, d) {
  8209. c && (a = goog.string.unescapeEntities(a));
  8210. if (d && a.length > b) {
  8211. d > b && (d = b);
  8212. var e = a.length - d;
  8213. a = a.substring(0, b - d) + "..." + a.substring(e);
  8214. } else a.length > b && (d = Math.floor(b / 2), e = a.length - d, a = a.substring(0, d + b % 2) + "..." + a.substring(e));
  8215. c && (a = goog.string.htmlEscape(a));
  8216. return a;
  8217. };
  8218. goog.string.specialEscapeChars_ = {
  8219. "\x00": "\\0",
  8220. "\b": "\\b",
  8221. "\f": "\\f",
  8222. "\n": "\\n",
  8223. "\r": "\\r",
  8224. "\t": "\\t",
  8225. "\x0B": "\\x0B",
  8226. '"': '\\"',
  8227. "\\": "\\\\",
  8228. "<": "\\u003C"
  8229. };
  8230. goog.string.jsEscapeCache_ = {
  8231. "'": "\\'"
  8232. };
  8233. goog.string.quote = function (a) {
  8234. a = String(a);
  8235. for (var b = ['"'], c = 0; c < a.length; c++) {
  8236. var d = a.charAt(c),
  8237. e = d.charCodeAt(0);
  8238. b[c + 1] = goog.string.specialEscapeChars_[d] || (31 < e && 127 > e ? d : goog.string.escapeChar(d));
  8239. }
  8240. b.push('"');
  8241. return b.join("");
  8242. };
  8243. goog.string.escapeString = function (a) {
  8244. for (var b = [], c = 0; c < a.length; c++) {
  8245. b[c] = goog.string.escapeChar(a.charAt(c));
  8246. }
  8247. return b.join("");
  8248. };
  8249. goog.string.escapeChar = function (a) {
  8250. if (a in goog.string.jsEscapeCache_) return goog.string.jsEscapeCache_[a];
  8251. if (a in goog.string.specialEscapeChars_) return goog.string.jsEscapeCache_[a] = goog.string.specialEscapeChars_[a];
  8252. var b = a.charCodeAt(0);
  8253. if (31 < b && 127 > b) var c = a;else {
  8254. if (256 > b) {
  8255. if (c = "\\x", 16 > b || 256 < b) c += "0";
  8256. } else c = "\\u", 4096 > b && (c += "0");
  8257. c += b.toString(16).toUpperCase();
  8258. }
  8259. return goog.string.jsEscapeCache_[a] = c;
  8260. };
  8261. goog.string.contains = goog.string.internal.contains;
  8262. goog.string.caseInsensitiveContains = goog.string.internal.caseInsensitiveContains;
  8263. goog.string.countOf = function (a, b) {
  8264. return a && b ? a.split(b).length - 1 : 0;
  8265. };
  8266. goog.string.removeAt = function (a, b, c) {
  8267. var d = a;
  8268. 0 <= b && b < a.length && 0 < c && (d = a.substr(0, b) + a.substr(b + c, a.length - b - c));
  8269. return d;
  8270. };
  8271. goog.string.remove = function (a, b) {
  8272. return a.replace(b, "");
  8273. };
  8274. goog.string.removeAll = function (a, b) {
  8275. b = new RegExp(goog.string.regExpEscape(b), "g");
  8276. return a.replace(b, "");
  8277. };
  8278. goog.string.replaceAll = function (a, b, c) {
  8279. b = new RegExp(goog.string.regExpEscape(b), "g");
  8280. return a.replace(b, c.replace(/\$/g, "$$$$"));
  8281. };
  8282. goog.string.regExpEscape = function (a) {
  8283. return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08");
  8284. };
  8285. goog.string.repeat = String.prototype.repeat ? function (a, b) {
  8286. return a.repeat(b);
  8287. } : function (a, b) {
  8288. return Array(b + 1).join(a);
  8289. };
  8290. goog.string.padNumber = function (a, b, c) {
  8291. a = void 0 !== c ? a.toFixed(c) : String(a);
  8292. c = a.indexOf(".");
  8293. -1 == c && (c = a.length);
  8294. return goog.string.repeat("0", Math.max(0, b - c)) + a;
  8295. };
  8296. goog.string.makeSafe = function (a) {
  8297. return null == a ? "" : String(a);
  8298. };
  8299. goog.string.buildString = function (a) {
  8300. return Array.prototype.join.call(arguments, "");
  8301. };
  8302. goog.string.getRandomString = function () {
  8303. return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ goog.now()).toString(36);
  8304. };
  8305. goog.string.compareVersions = goog.string.internal.compareVersions;
  8306. goog.string.hashCode = function (a) {
  8307. for (var b = 0, c = 0; c < a.length; ++c) {
  8308. b = 31 * b + a.charCodeAt(c) >>> 0;
  8309. }
  8310. return b;
  8311. };
  8312. goog.string.uniqueStringCounter_ = 2147483648 * Math.random() | 0;
  8313. goog.string.createUniqueString = function () {
  8314. return "goog_" + goog.string.uniqueStringCounter_++;
  8315. };
  8316. goog.string.toNumber = function (a) {
  8317. var b = Number(a);
  8318. return 0 == b && goog.string.isEmptyOrWhitespace(a) ? NaN : b;
  8319. };
  8320. goog.string.isLowerCamelCase = function (a) {
  8321. return /^[a-z]+([A-Z][a-z]*)*$/.test(a);
  8322. };
  8323. goog.string.isUpperCamelCase = function (a) {
  8324. return /^([A-Z][a-z]*)+$/.test(a);
  8325. };
  8326. goog.string.toCamelCase = function (a) {
  8327. return String(a).replace(/\-([a-z])/g, function (a, c) {
  8328. return c.toUpperCase();
  8329. });
  8330. };
  8331. goog.string.toSelectorCase = function (a) {
  8332. return String(a).replace(/([A-Z])/g, "-$1").toLowerCase();
  8333. };
  8334. goog.string.toTitleCase = function (a, b) {
  8335. b = "string" === typeof b ? goog.string.regExpEscape(b) : "\\s";
  8336. return a.replace(new RegExp("(^" + (b ? "|[" + b + "]+" : "") + ")([a-z])", "g"), function (a, b, e) {
  8337. return b + e.toUpperCase();
  8338. });
  8339. };
  8340. goog.string.capitalize = function (a) {
  8341. return String(a.charAt(0)).toUpperCase() + String(a.substr(1)).toLowerCase();
  8342. };
  8343. goog.string.parseInt = function (a) {
  8344. isFinite(a) && (a = String(a));
  8345. return "string" === typeof a ? /^\s*-?0x/i.test(a) ? parseInt(a, 16) : parseInt(a, 10) : NaN;
  8346. };
  8347. goog.string.splitLimit = function (a, b, c) {
  8348. a = a.split(b);
  8349. for (var d = []; 0 < c && a.length;) {
  8350. d.push(a.shift()), c--;
  8351. }
  8352. a.length && d.push(a.join(b));
  8353. return d;
  8354. };
  8355. goog.string.lastComponent = function (a, b) {
  8356. if (b) "string" == typeof b && (b = [b]);else return a;
  8357. for (var c = -1, d = 0; d < b.length; d++) {
  8358. if ("" != b[d]) {
  8359. var e = a.lastIndexOf(b[d]);
  8360. e > c && (c = e);
  8361. }
  8362. }
  8363. return -1 == c ? a : a.slice(c + 1);
  8364. };
  8365. goog.string.editDistance = function (a, b) {
  8366. var c = [],
  8367. d = [];
  8368. if (a == b) return 0;
  8369. if (!a.length || !b.length) return Math.max(a.length, b.length);
  8370. for (var e = 0; e < b.length + 1; e++) {
  8371. c[e] = e;
  8372. }
  8373. for (e = 0; e < a.length; e++) {
  8374. d[0] = e + 1;
  8375. for (var f = 0; f < b.length; f++) {
  8376. d[f + 1] = Math.min(d[f] + 1, c[f + 1] + 1, c[f] + Number(a[e] != b[f]));
  8377. }
  8378. for (f = 0; f < c.length; f++) {
  8379. c[f] = d[f];
  8380. }
  8381. }
  8382. return d[b.length];
  8383. };
  8384. goog.labs.userAgent.engine = {};
  8385. goog.labs.userAgent.engine.isPresto = function () {
  8386. return goog.labs.userAgent.util.matchUserAgent("Presto");
  8387. };
  8388. goog.labs.userAgent.engine.isTrident = function () {
  8389. return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE");
  8390. };
  8391. goog.labs.userAgent.engine.isEdge = function () {
  8392. return goog.labs.userAgent.util.matchUserAgent("Edge");
  8393. };
  8394. goog.labs.userAgent.engine.isWebKit = function () {
  8395. return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit") && !goog.labs.userAgent.engine.isEdge();
  8396. };
  8397. goog.labs.userAgent.engine.isGecko = function () {
  8398. return goog.labs.userAgent.util.matchUserAgent("Gecko") && !goog.labs.userAgent.engine.isWebKit() && !goog.labs.userAgent.engine.isTrident() && !goog.labs.userAgent.engine.isEdge();
  8399. };
  8400. goog.labs.userAgent.engine.getVersion = function () {
  8401. var a = goog.labs.userAgent.util.getUserAgent();
  8402. if (a) {
  8403. a = goog.labs.userAgent.util.extractVersionTuples(a);
  8404. var b = goog.labs.userAgent.engine.getEngineTuple_(a);
  8405. if (b) return "Gecko" == b[0] ? goog.labs.userAgent.engine.getVersionForKey_(a, "Firefox") : b[1];
  8406. a = a[0];
  8407. var c;
  8408. if (a && (c = a[2]) && (c = /Trident\/([^\s;]+)/.exec(c))) return c[1];
  8409. }
  8410. return "";
  8411. };
  8412. goog.labs.userAgent.engine.getEngineTuple_ = function (a) {
  8413. if (!goog.labs.userAgent.engine.isEdge()) return a[1];
  8414. for (var b = 0; b < a.length; b++) {
  8415. var c = a[b];
  8416. if ("Edge" == c[0]) return c;
  8417. }
  8418. };
  8419. goog.labs.userAgent.engine.isVersionOrHigher = function (a) {
  8420. return 0 <= goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(), a);
  8421. };
  8422. goog.labs.userAgent.engine.getVersionForKey_ = function (a, b) {
  8423. return (a = goog.array.find(a, function (a) {
  8424. return b == a[0];
  8425. })) && a[1] || "";
  8426. };
  8427. goog.labs.userAgent.platform = {};
  8428. goog.labs.userAgent.platform.isAndroid = function () {
  8429. return goog.labs.userAgent.util.matchUserAgent("Android");
  8430. };
  8431. goog.labs.userAgent.platform.isIpod = function () {
  8432. return goog.labs.userAgent.util.matchUserAgent("iPod");
  8433. };
  8434. goog.labs.userAgent.platform.isIphone = function () {
  8435. return goog.labs.userAgent.util.matchUserAgent("iPhone") && !goog.labs.userAgent.util.matchUserAgent("iPod") && !goog.labs.userAgent.util.matchUserAgent("iPad");
  8436. };
  8437. goog.labs.userAgent.platform.isIpad = function () {
  8438. return goog.labs.userAgent.util.matchUserAgent("iPad");
  8439. };
  8440. goog.labs.userAgent.platform.isIos = function () {
  8441. return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpad() || goog.labs.userAgent.platform.isIpod();
  8442. };
  8443. goog.labs.userAgent.platform.isMacintosh = function () {
  8444. return goog.labs.userAgent.util.matchUserAgent("Macintosh");
  8445. };
  8446. goog.labs.userAgent.platform.isLinux = function () {
  8447. return goog.labs.userAgent.util.matchUserAgent("Linux");
  8448. };
  8449. goog.labs.userAgent.platform.isWindows = function () {
  8450. return goog.labs.userAgent.util.matchUserAgent("Windows");
  8451. };
  8452. goog.labs.userAgent.platform.isChromeOS = function () {
  8453. return goog.labs.userAgent.util.matchUserAgent("CrOS");
  8454. };
  8455. goog.labs.userAgent.platform.isChromecast = function () {
  8456. return goog.labs.userAgent.util.matchUserAgent("CrKey");
  8457. };
  8458. goog.labs.userAgent.platform.isKaiOS = function () {
  8459. return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS");
  8460. };
  8461. goog.labs.userAgent.platform.getVersion = function () {
  8462. var a = goog.labs.userAgent.util.getUserAgent(),
  8463. b = "";
  8464. goog.labs.userAgent.platform.isWindows() ? (b = /Windows (?:NT|Phone) ([0-9.]+)/, b = (a = b.exec(a)) ? a[1] : "0.0") : goog.labs.userAgent.platform.isIos() ? (b = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/, b = (a = b.exec(a)) && a[1].replace(/_/g, ".")) : goog.labs.userAgent.platform.isMacintosh() ? (b = /Mac OS X ([0-9_.]+)/, b = (a = b.exec(a)) ? a[1].replace(/_/g, ".") : "10") : goog.labs.userAgent.platform.isKaiOS() ? (b = /(?:KaiOS)\/(\S+)/i, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isAndroid() ? (b = /Android\s+([^\);]+)(\)|;)/, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isChromeOS() && (b = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/, b = (a = b.exec(a)) && a[1]);
  8465. return b || "";
  8466. };
  8467. goog.labs.userAgent.platform.isVersionOrHigher = function (a) {
  8468. return 0 <= goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(), a);
  8469. };
  8470. goog.reflect = {};
  8471. goog.reflect.object = function (a, b) {
  8472. return b;
  8473. };
  8474. goog.reflect.objectProperty = function (a, b) {
  8475. return a;
  8476. };
  8477. goog.reflect.sinkValue = function (a) {
  8478. goog.reflect.sinkValue[" "](a);
  8479. return a;
  8480. };
  8481. goog.reflect.sinkValue[" "] = goog.nullFunction;
  8482. goog.reflect.canAccessProperty = function (a, b) {
  8483. try {
  8484. return goog.reflect.sinkValue(a[b]), !0;
  8485. } catch (c) {}
  8486. return !1;
  8487. };
  8488. goog.reflect.cache = function (a, b, c, d) {
  8489. d = d ? d(b) : b;
  8490. return Object.prototype.hasOwnProperty.call(a, d) ? a[d] : a[d] = c(b);
  8491. };
  8492. goog.userAgent = {};
  8493. goog.userAgent.ASSUME_IE = !1;
  8494. goog.userAgent.ASSUME_EDGE = !1;
  8495. goog.userAgent.ASSUME_GECKO = !1;
  8496. goog.userAgent.ASSUME_WEBKIT = !1;
  8497. goog.userAgent.ASSUME_MOBILE_WEBKIT = !1;
  8498. goog.userAgent.ASSUME_OPERA = !1;
  8499. goog.userAgent.ASSUME_ANY_VERSION = !1;
  8500. goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA;
  8501. goog.userAgent.getUserAgentString = function () {
  8502. return goog.labs.userAgent.util.getUserAgent();
  8503. };
  8504. goog.userAgent.getNavigatorTyped = function () {
  8505. return goog.global.navigator || null;
  8506. };
  8507. goog.userAgent.getNavigator = function () {
  8508. return goog.userAgent.getNavigatorTyped();
  8509. };
  8510. goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : goog.labs.userAgent.browser.isOpera();
  8511. goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : goog.labs.userAgent.browser.isIE();
  8512. goog.userAgent.EDGE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_EDGE : goog.labs.userAgent.engine.isEdge();
  8513. goog.userAgent.EDGE_OR_IE = goog.userAgent.EDGE || goog.userAgent.IE;
  8514. goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : goog.labs.userAgent.engine.isGecko();
  8515. goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : goog.labs.userAgent.engine.isWebKit();
  8516. goog.userAgent.isMobile_ = function () {
  8517. return goog.userAgent.WEBKIT && goog.labs.userAgent.util.matchUserAgent("Mobile");
  8518. };
  8519. goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.isMobile_();
  8520. goog.userAgent.SAFARI = goog.userAgent.WEBKIT;
  8521. goog.userAgent.determinePlatform_ = function () {
  8522. var a = goog.userAgent.getNavigatorTyped();
  8523. return a && a.platform || "";
  8524. };
  8525. goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_();
  8526. goog.userAgent.ASSUME_MAC = !1;
  8527. goog.userAgent.ASSUME_WINDOWS = !1;
  8528. goog.userAgent.ASSUME_LINUX = !1;
  8529. goog.userAgent.ASSUME_X11 = !1;
  8530. goog.userAgent.ASSUME_ANDROID = !1;
  8531. goog.userAgent.ASSUME_IPHONE = !1;
  8532. goog.userAgent.ASSUME_IPAD = !1;
  8533. goog.userAgent.ASSUME_IPOD = !1;
  8534. goog.userAgent.ASSUME_KAIOS = !1;
  8535. goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD;
  8536. goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.labs.userAgent.platform.isMacintosh();
  8537. goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.labs.userAgent.platform.isWindows();
  8538. goog.userAgent.isLegacyLinux_ = function () {
  8539. return goog.labs.userAgent.platform.isLinux() || goog.labs.userAgent.platform.isChromeOS();
  8540. };
  8541. goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.isLegacyLinux_();
  8542. goog.userAgent.isX11_ = function () {
  8543. var a = goog.userAgent.getNavigatorTyped();
  8544. return !!a && goog.string.contains(a.appVersion || "", "X11");
  8545. };
  8546. goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.isX11_();
  8547. goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.labs.userAgent.platform.isAndroid();
  8548. goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.labs.userAgent.platform.isIphone();
  8549. goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
  8550. goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIpod();
  8551. goog.userAgent.IOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIos();
  8552. goog.userAgent.KAIOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_KAIOS : goog.labs.userAgent.platform.isKaiOS();
  8553. goog.userAgent.determineVersion_ = function () {
  8554. var a = "",
  8555. b = goog.userAgent.getVersionRegexResult_();
  8556. b && (a = b ? b[1] : "");
  8557. return goog.userAgent.IE && (b = goog.userAgent.getDocumentMode_(), null != b && b > parseFloat(a)) ? String(b) : a;
  8558. };
  8559. goog.userAgent.getVersionRegexResult_ = function () {
  8560. var a = goog.userAgent.getUserAgentString();
  8561. if (goog.userAgent.GECKO) return /rv:([^\);]+)(\)|;)/.exec(a);
  8562. if (goog.userAgent.EDGE) return /Edge\/([\d\.]+)/.exec(a);
  8563. if (goog.userAgent.IE) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
  8564. if (goog.userAgent.WEBKIT) return /WebKit\/(\S+)/.exec(a);
  8565. if (goog.userAgent.OPERA) return /(?:Version)[ \/]?(\S+)/.exec(a);
  8566. };
  8567. goog.userAgent.getDocumentMode_ = function () {
  8568. var a = goog.global.document;
  8569. return a ? a.documentMode : void 0;
  8570. };
  8571. goog.userAgent.VERSION = goog.userAgent.determineVersion_();
  8572. goog.userAgent.compare = function (a, b) {
  8573. return goog.string.compareVersions(a, b);
  8574. };
  8575. goog.userAgent.isVersionOrHigherCache_ = {};
  8576. goog.userAgent.isVersionOrHigher = function (a) {
  8577. return goog.userAgent.ASSUME_ANY_VERSION || goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_, a, function () {
  8578. return 0 <= goog.string.compareVersions(goog.userAgent.VERSION, a);
  8579. });
  8580. };
  8581. goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher;
  8582. goog.userAgent.isDocumentModeOrHigher = function (a) {
  8583. return Number(goog.userAgent.DOCUMENT_MODE) >= a;
  8584. };
  8585. goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher;
  8586. goog.userAgent.DOCUMENT_MODE = function () {
  8587. if (goog.global.document && goog.userAgent.IE) {
  8588. var a = goog.userAgent.getDocumentMode_();
  8589. return a ? a : parseInt(goog.userAgent.VERSION, 10) || void 0;
  8590. }
  8591. }();
  8592. goog.userAgent.product = {};
  8593. goog.userAgent.product.ASSUME_FIREFOX = !1;
  8594. goog.userAgent.product.ASSUME_IPHONE = !1;
  8595. goog.userAgent.product.ASSUME_IPAD = !1;
  8596. goog.userAgent.product.ASSUME_ANDROID = !1;
  8597. goog.userAgent.product.ASSUME_CHROME = !1;
  8598. goog.userAgent.product.ASSUME_SAFARI = !1;
  8599. goog.userAgent.product.PRODUCT_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_OPERA || goog.userAgent.product.ASSUME_FIREFOX || goog.userAgent.product.ASSUME_IPHONE || goog.userAgent.product.ASSUME_IPAD || goog.userAgent.product.ASSUME_ANDROID || goog.userAgent.product.ASSUME_CHROME || goog.userAgent.product.ASSUME_SAFARI;
  8600. goog.userAgent.product.OPERA = goog.userAgent.OPERA;
  8601. goog.userAgent.product.IE = goog.userAgent.IE;
  8602. goog.userAgent.product.EDGE = goog.userAgent.EDGE;
  8603. goog.userAgent.product.FIREFOX = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_FIREFOX : goog.labs.userAgent.browser.isFirefox();
  8604. goog.userAgent.product.isIphoneOrIpod_ = function () {
  8605. return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpod();
  8606. };
  8607. goog.userAgent.product.IPHONE = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPHONE : goog.userAgent.product.isIphoneOrIpod_();
  8608. goog.userAgent.product.IPAD = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
  8609. goog.userAgent.product.ANDROID = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_ANDROID : goog.labs.userAgent.browser.isAndroidBrowser();
  8610. goog.userAgent.product.CHROME = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_CHROME : goog.labs.userAgent.browser.isChrome();
  8611. goog.userAgent.product.isSafariDesktop_ = function () {
  8612. return goog.labs.userAgent.browser.isSafari() && !goog.labs.userAgent.platform.isIos();
  8613. };
  8614. goog.userAgent.product.SAFARI = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_SAFARI : goog.userAgent.product.isSafariDesktop_();
  8615. goog.crypt.base64 = {};
  8616. goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  8617. goog.crypt.base64.ENCODED_VALS = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ + "+/=";
  8618. goog.crypt.base64.ENCODED_VALS_WEBSAFE = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ + "-_.";
  8619. goog.crypt.base64.Alphabet = {
  8620. DEFAULT: 0,
  8621. NO_PADDING: 1,
  8622. WEBSAFE: 2,
  8623. WEBSAFE_DOT_PADDING: 3,
  8624. WEBSAFE_NO_PADDING: 4
  8625. };
  8626. goog.crypt.base64.paddingChars_ = "=.";
  8627. goog.crypt.base64.isPadding_ = function (a) {
  8628. return goog.string.contains(goog.crypt.base64.paddingChars_, a);
  8629. };
  8630. goog.crypt.base64.byteToCharMaps_ = {};
  8631. goog.crypt.base64.charToByteMap_ = null;
  8632. goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ = goog.userAgent.GECKO || goog.userAgent.WEBKIT && !goog.userAgent.product.SAFARI || goog.userAgent.OPERA;
  8633. goog.crypt.base64.HAS_NATIVE_ENCODE_ = goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ || "function" == typeof goog.global.btoa;
  8634. goog.crypt.base64.HAS_NATIVE_DECODE_ = goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ || !goog.userAgent.product.SAFARI && !goog.userAgent.IE && "function" == typeof goog.global.atob;
  8635. goog.crypt.base64.encodeByteArray = function (a, b) {
  8636. goog.asserts.assert(goog.isArrayLike(a), "encodeByteArray takes an array as a parameter");
  8637. void 0 === b && (b = goog.crypt.base64.Alphabet.DEFAULT);
  8638. goog.crypt.base64.init_();
  8639. b = goog.crypt.base64.byteToCharMaps_[b];
  8640. for (var c = [], d = 0; d < a.length; d += 3) {
  8641. var e = a[d],
  8642. f = d + 1 < a.length,
  8643. g = f ? a[d + 1] : 0,
  8644. h = d + 2 < a.length,
  8645. k = h ? a[d + 2] : 0,
  8646. l = e >> 2;
  8647. e = (e & 3) << 4 | g >> 4;
  8648. g = (g & 15) << 2 | k >> 6;
  8649. k &= 63;
  8650. h || (k = 64, f || (g = 64));
  8651. c.push(b[l], b[e], b[g] || "", b[k] || "");
  8652. }
  8653. return c.join("");
  8654. };
  8655. goog.crypt.base64.encodeString = function (a, b) {
  8656. return goog.crypt.base64.HAS_NATIVE_ENCODE_ && !b ? goog.global.btoa(a) : goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(a), b);
  8657. };
  8658. goog.crypt.base64.decodeString = function (a, b) {
  8659. if (goog.crypt.base64.HAS_NATIVE_DECODE_ && !b) return goog.global.atob(a);
  8660. var c = "";
  8661. goog.crypt.base64.decodeStringInternal_(a, function (a) {
  8662. c += String.fromCharCode(a);
  8663. });
  8664. return c;
  8665. };
  8666. goog.crypt.base64.decodeStringToByteArray = function (a, b) {
  8667. var c = [];
  8668. goog.crypt.base64.decodeStringInternal_(a, function (a) {
  8669. c.push(a);
  8670. });
  8671. return c;
  8672. };
  8673. goog.crypt.base64.decodeStringToUint8Array = function (a) {
  8674. goog.asserts.assert(!goog.userAgent.IE || goog.userAgent.isVersionOrHigher("10"), "Browser does not support typed arrays");
  8675. var b = a.length,
  8676. c = 3 * b / 4;
  8677. c % 3 ? c = Math.floor(c) : goog.crypt.base64.isPadding_(a[b - 1]) && (c = goog.crypt.base64.isPadding_(a[b - 2]) ? c - 2 : c - 1);
  8678. var d = new Uint8Array(c),
  8679. e = 0;
  8680. goog.crypt.base64.decodeStringInternal_(a, function (a) {
  8681. d[e++] = a;
  8682. });
  8683. return d.subarray(0, e);
  8684. };
  8685. goog.crypt.base64.decodeStringInternal_ = function (a, b) {
  8686. function c(b) {
  8687. for (; d < a.length;) {
  8688. var c = a.charAt(d++),
  8689. e = goog.crypt.base64.charToByteMap_[c];
  8690. if (null != e) return e;
  8691. if (!goog.string.isEmptyOrWhitespace(c)) throw Error("Unknown base64 encoding at char: " + c);
  8692. }
  8693. return b;
  8694. }
  8695. goog.crypt.base64.init_();
  8696. for (var d = 0;;) {
  8697. var e = c(-1),
  8698. f = c(0),
  8699. g = c(64),
  8700. h = c(64);
  8701. if (64 === h && -1 === e) break;
  8702. b(e << 2 | f >> 4);
  8703. 64 != g && (b(f << 4 & 240 | g >> 2), 64 != h && b(g << 6 & 192 | h));
  8704. }
  8705. };
  8706. goog.crypt.base64.init_ = function () {
  8707. if (!goog.crypt.base64.charToByteMap_) {
  8708. goog.crypt.base64.charToByteMap_ = {};
  8709. for (var a = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(""), b = ["+/=", "+/", "-_=", "-_.", "-_"], c = 0; 5 > c; c++) {
  8710. var d = a.concat(b[c].split(""));
  8711. goog.crypt.base64.byteToCharMaps_[c] = d;
  8712. for (var e = 0; e < d.length; e++) {
  8713. var f = d[e],
  8714. g = goog.crypt.base64.charToByteMap_[f];
  8715. void 0 === g ? goog.crypt.base64.charToByteMap_[f] = e : goog.asserts.assert(g === e);
  8716. }
  8717. }
  8718. }
  8719. };
  8720. jspb.utils = {};
  8721. jspb.utils.split64Low = 0;
  8722. jspb.utils.split64High = 0;
  8723. jspb.utils.splitUint64 = function (a) {
  8724. var b = a >>> 0;
  8725. a = Math.floor((a - b) / jspb.BinaryConstants.TWO_TO_32) >>> 0;
  8726. jspb.utils.split64Low = b;
  8727. jspb.utils.split64High = a;
  8728. };
  8729. jspb.utils.splitInt64 = function (a) {
  8730. var b = 0 > a;
  8731. a = Math.abs(a);
  8732. var c = a >>> 0;
  8733. a = Math.floor((a - c) / jspb.BinaryConstants.TWO_TO_32);
  8734. a >>>= 0;
  8735. b && (a = ~a >>> 0, c = (~c >>> 0) + 1, 4294967295 < c && (c = 0, a++, 4294967295 < a && (a = 0)));
  8736. jspb.utils.split64Low = c;
  8737. jspb.utils.split64High = a;
  8738. };
  8739. jspb.utils.splitZigzag64 = function (a) {
  8740. var b = 0 > a;
  8741. a = 2 * Math.abs(a);
  8742. jspb.utils.splitUint64(a);
  8743. a = jspb.utils.split64Low;
  8744. var c = jspb.utils.split64High;
  8745. b && (0 == a ? 0 == c ? c = a = 4294967295 : (c--, a = 4294967295) : a--);
  8746. jspb.utils.split64Low = a;
  8747. jspb.utils.split64High = c;
  8748. };
  8749. jspb.utils.splitFloat32 = function (a) {
  8750. var b = 0 > a ? 1 : 0;
  8751. a = b ? -a : a;
  8752. if (0 === a) 0 < 1 / a ? (jspb.utils.split64High = 0, jspb.utils.split64Low = 0) : (jspb.utils.split64High = 0, jspb.utils.split64Low = 2147483648);else if (isNaN(a)) jspb.utils.split64High = 0, jspb.utils.split64Low = 2147483647;else if (a > jspb.BinaryConstants.FLOAT32_MAX) jspb.utils.split64High = 0, jspb.utils.split64Low = (b << 31 | 2139095040) >>> 0;else if (a < jspb.BinaryConstants.FLOAT32_MIN) a = Math.round(a / Math.pow(2, -149)), jspb.utils.split64High = 0, jspb.utils.split64Low = (b << 31 | a) >>> 0;else {
  8753. var c = Math.floor(Math.log(a) / Math.LN2);
  8754. a *= Math.pow(2, -c);
  8755. a = Math.round(a * jspb.BinaryConstants.TWO_TO_23);
  8756. 16777216 <= a && ++c;
  8757. jspb.utils.split64High = 0;
  8758. jspb.utils.split64Low = (b << 31 | c + 127 << 23 | a & 8388607) >>> 0;
  8759. }
  8760. };
  8761. jspb.utils.splitFloat64 = function (a) {
  8762. var b = 0 > a ? 1 : 0;
  8763. a = b ? -a : a;
  8764. if (0 === a) jspb.utils.split64High = 0 < 1 / a ? 0 : 2147483648, jspb.utils.split64Low = 0;else if (isNaN(a)) jspb.utils.split64High = 2147483647, jspb.utils.split64Low = 4294967295;else if (a > jspb.BinaryConstants.FLOAT64_MAX) jspb.utils.split64High = (b << 31 | 2146435072) >>> 0, jspb.utils.split64Low = 0;else if (a < jspb.BinaryConstants.FLOAT64_MIN) {
  8765. var c = a / Math.pow(2, -1074);
  8766. a = c / jspb.BinaryConstants.TWO_TO_32;
  8767. jspb.utils.split64High = (b << 31 | a) >>> 0;
  8768. jspb.utils.split64Low = c >>> 0;
  8769. } else {
  8770. c = a;
  8771. var d = 0;
  8772. if (2 <= c) for (; 2 <= c && 1023 > d;) {
  8773. d++, c /= 2;
  8774. } else for (; 1 > c && -1022 < d;) {
  8775. c *= 2, d--;
  8776. }
  8777. c = a * Math.pow(2, -d);
  8778. a = c * jspb.BinaryConstants.TWO_TO_20 & 1048575;
  8779. c = c * jspb.BinaryConstants.TWO_TO_52 >>> 0;
  8780. jspb.utils.split64High = (b << 31 | d + 1023 << 20 | a) >>> 0;
  8781. jspb.utils.split64Low = c;
  8782. }
  8783. };
  8784. jspb.utils.splitHash64 = function (a) {
  8785. var b = a.charCodeAt(0),
  8786. c = a.charCodeAt(1),
  8787. d = a.charCodeAt(2),
  8788. e = a.charCodeAt(3),
  8789. f = a.charCodeAt(4),
  8790. g = a.charCodeAt(5),
  8791. h = a.charCodeAt(6);
  8792. a = a.charCodeAt(7);
  8793. jspb.utils.split64Low = b + (c << 8) + (d << 16) + (e << 24) >>> 0;
  8794. jspb.utils.split64High = f + (g << 8) + (h << 16) + (a << 24) >>> 0;
  8795. };
  8796. jspb.utils.joinUint64 = function (a, b) {
  8797. return b * jspb.BinaryConstants.TWO_TO_32 + (a >>> 0);
  8798. };
  8799. jspb.utils.joinInt64 = function (a, b) {
  8800. var c = b & 2147483648;
  8801. c && (a = ~a + 1 >>> 0, b = ~b >>> 0, 0 == a && (b = b + 1 >>> 0));
  8802. a = jspb.utils.joinUint64(a, b);
  8803. return c ? -a : a;
  8804. };
  8805. jspb.utils.toZigzag64 = function (a, b, c) {
  8806. var d = b >> 31;
  8807. return c(a << 1 ^ d, (b << 1 | a >>> 31) ^ d);
  8808. };
  8809. jspb.utils.joinZigzag64 = function (a, b) {
  8810. return jspb.utils.fromZigzag64(a, b, jspb.utils.joinInt64);
  8811. };
  8812. jspb.utils.fromZigzag64 = function (a, b, c) {
  8813. var d = -(a & 1);
  8814. return c((a >>> 1 | b << 31) ^ d, b >>> 1 ^ d);
  8815. };
  8816. jspb.utils.joinFloat32 = function (a, b) {
  8817. b = 2 * (a >> 31) + 1;
  8818. var c = a >>> 23 & 255;
  8819. a &= 8388607;
  8820. return 255 == c ? a ? NaN : Infinity * b : 0 == c ? b * Math.pow(2, -149) * a : b * Math.pow(2, c - 150) * (a + Math.pow(2, 23));
  8821. };
  8822. jspb.utils.joinFloat64 = function (a, b) {
  8823. var c = 2 * (b >> 31) + 1,
  8824. d = b >>> 20 & 2047;
  8825. a = jspb.BinaryConstants.TWO_TO_32 * (b & 1048575) + a;
  8826. return 2047 == d ? a ? NaN : Infinity * c : 0 == d ? c * Math.pow(2, -1074) * a : c * Math.pow(2, d - 1075) * (a + jspb.BinaryConstants.TWO_TO_52);
  8827. };
  8828. jspb.utils.joinHash64 = function (a, b) {
  8829. return String.fromCharCode(a >>> 0 & 255, a >>> 8 & 255, a >>> 16 & 255, a >>> 24 & 255, b >>> 0 & 255, b >>> 8 & 255, b >>> 16 & 255, b >>> 24 & 255);
  8830. };
  8831. jspb.utils.DIGITS = "0123456789abcdef".split("");
  8832. jspb.utils.ZERO_CHAR_CODE_ = 48;
  8833. jspb.utils.A_CHAR_CODE_ = 97;
  8834. jspb.utils.joinUnsignedDecimalString = function (a, b) {
  8835. function c(a, b) {
  8836. a = a ? String(a) : "";
  8837. return b ? "0000000".slice(a.length) + a : a;
  8838. }
  8839. if (2097151 >= b) return "" + jspb.utils.joinUint64(a, b);
  8840. var d = (a >>> 24 | b << 8) >>> 0 & 16777215;
  8841. b = b >> 16 & 65535;
  8842. a = (a & 16777215) + 6777216 * d + 6710656 * b;
  8843. d += 8147497 * b;
  8844. b *= 2;
  8845. 1E7 <= a && (d += Math.floor(a / 1E7), a %= 1E7);
  8846. 1E7 <= d && (b += Math.floor(d / 1E7), d %= 1E7);
  8847. return c(b, 0) + c(d, b) + c(a, 1);
  8848. };
  8849. jspb.utils.joinSignedDecimalString = function (a, b) {
  8850. var c = b & 2147483648;
  8851. c && (a = ~a + 1 >>> 0, b = ~b + (0 == a ? 1 : 0) >>> 0);
  8852. a = jspb.utils.joinUnsignedDecimalString(a, b);
  8853. return c ? "-" + a : a;
  8854. };
  8855. jspb.utils.hash64ToDecimalString = function (a, b) {
  8856. jspb.utils.splitHash64(a);
  8857. a = jspb.utils.split64Low;
  8858. var c = jspb.utils.split64High;
  8859. return b ? jspb.utils.joinSignedDecimalString(a, c) : jspb.utils.joinUnsignedDecimalString(a, c);
  8860. };
  8861. jspb.utils.hash64ArrayToDecimalStrings = function (a, b) {
  8862. for (var c = Array(a.length), d = 0; d < a.length; d++) {
  8863. c[d] = jspb.utils.hash64ToDecimalString(a[d], b);
  8864. }
  8865. return c;
  8866. };
  8867. jspb.utils.decimalStringToHash64 = function (a) {
  8868. function b(a, b) {
  8869. for (var c = 0; 8 > c && (1 !== a || 0 < b); c++) {
  8870. b = a * e[c] + b, e[c] = b & 255, b >>>= 8;
  8871. }
  8872. }
  8873. function c() {
  8874. for (var a = 0; 8 > a; a++) {
  8875. e[a] = ~e[a] & 255;
  8876. }
  8877. }
  8878. jspb.asserts.assert(0 < a.length);
  8879. var d = !1;
  8880. "-" === a[0] && (d = !0, a = a.slice(1));
  8881. for (var e = [0, 0, 0, 0, 0, 0, 0, 0], f = 0; f < a.length; f++) {
  8882. b(10, a.charCodeAt(f) - jspb.utils.ZERO_CHAR_CODE_);
  8883. }
  8884. d && (c(), b(1, 1));
  8885. return goog.crypt.byteArrayToString(e);
  8886. };
  8887. jspb.utils.splitDecimalString = function (a) {
  8888. jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a));
  8889. };
  8890. jspb.utils.toHexDigit_ = function (a) {
  8891. return String.fromCharCode(10 > a ? jspb.utils.ZERO_CHAR_CODE_ + a : jspb.utils.A_CHAR_CODE_ - 10 + a);
  8892. };
  8893. jspb.utils.fromHexCharCode_ = function (a) {
  8894. return a >= jspb.utils.A_CHAR_CODE_ ? a - jspb.utils.A_CHAR_CODE_ + 10 : a - jspb.utils.ZERO_CHAR_CODE_;
  8895. };
  8896. jspb.utils.hash64ToHexString = function (a) {
  8897. var b = Array(18);
  8898. b[0] = "0";
  8899. b[1] = "x";
  8900. for (var c = 0; 8 > c; c++) {
  8901. var d = a.charCodeAt(7 - c);
  8902. b[2 * c + 2] = jspb.utils.toHexDigit_(d >> 4);
  8903. b[2 * c + 3] = jspb.utils.toHexDigit_(d & 15);
  8904. }
  8905. return b.join("");
  8906. };
  8907. jspb.utils.hexStringToHash64 = function (a) {
  8908. a = a.toLowerCase();
  8909. jspb.asserts.assert(18 == a.length);
  8910. jspb.asserts.assert("0" == a[0]);
  8911. jspb.asserts.assert("x" == a[1]);
  8912. for (var b = "", c = 0; 8 > c; c++) {
  8913. var d = jspb.utils.fromHexCharCode_(a.charCodeAt(2 * c + 2)),
  8914. e = jspb.utils.fromHexCharCode_(a.charCodeAt(2 * c + 3));
  8915. b = String.fromCharCode(16 * d + e) + b;
  8916. }
  8917. return b;
  8918. };
  8919. jspb.utils.hash64ToNumber = function (a, b) {
  8920. jspb.utils.splitHash64(a);
  8921. a = jspb.utils.split64Low;
  8922. var c = jspb.utils.split64High;
  8923. return b ? jspb.utils.joinInt64(a, c) : jspb.utils.joinUint64(a, c);
  8924. };
  8925. jspb.utils.numberToHash64 = function (a) {
  8926. jspb.utils.splitInt64(a);
  8927. return jspb.utils.joinHash64(jspb.utils.split64Low, jspb.utils.split64High);
  8928. };
  8929. jspb.utils.countVarints = function (a, b, c) {
  8930. for (var d = 0, e = b; e < c; e++) {
  8931. d += a[e] >> 7;
  8932. }
  8933. return c - b - d;
  8934. };
  8935. jspb.utils.countVarintFields = function (a, b, c, d) {
  8936. var e = 0;
  8937. d = 8 * d + jspb.BinaryConstants.WireType.VARINT;
  8938. if (128 > d) for (; b < c && a[b++] == d;) {
  8939. for (e++;;) {
  8940. var f = a[b++];
  8941. if (0 == (f & 128)) break;
  8942. }
  8943. } else for (; b < c;) {
  8944. for (f = d; 128 < f;) {
  8945. if (a[b] != (f & 127 | 128)) return e;
  8946. b++;
  8947. f >>= 7;
  8948. }
  8949. if (a[b++] != f) break;
  8950. for (e++; f = a[b++], 0 != (f & 128);) {
  8951. ;
  8952. }
  8953. }
  8954. return e;
  8955. };
  8956. jspb.utils.countFixedFields_ = function (a, b, c, d, e) {
  8957. var f = 0;
  8958. if (128 > d) for (; b < c && a[b++] == d;) {
  8959. f++, b += e;
  8960. } else for (; b < c;) {
  8961. for (var g = d; 128 < g;) {
  8962. if (a[b++] != (g & 127 | 128)) return f;
  8963. g >>= 7;
  8964. }
  8965. if (a[b++] != g) break;
  8966. f++;
  8967. b += e;
  8968. }
  8969. return f;
  8970. };
  8971. jspb.utils.countFixed32Fields = function (a, b, c, d) {
  8972. return jspb.utils.countFixedFields_(a, b, c, 8 * d + jspb.BinaryConstants.WireType.FIXED32, 4);
  8973. };
  8974. jspb.utils.countFixed64Fields = function (a, b, c, d) {
  8975. return jspb.utils.countFixedFields_(a, b, c, 8 * d + jspb.BinaryConstants.WireType.FIXED64, 8);
  8976. };
  8977. jspb.utils.countDelimitedFields = function (a, b, c, d) {
  8978. var e = 0;
  8979. for (d = 8 * d + jspb.BinaryConstants.WireType.DELIMITED; b < c;) {
  8980. for (var f = d; 128 < f;) {
  8981. if (a[b++] != (f & 127 | 128)) return e;
  8982. f >>= 7;
  8983. }
  8984. if (a[b++] != f) break;
  8985. e++;
  8986. for (var g = 0, h = 1; f = a[b++], g += (f & 127) * h, h *= 128, 0 != (f & 128);) {
  8987. ;
  8988. }
  8989. b += g;
  8990. }
  8991. return e;
  8992. };
  8993. jspb.utils.debugBytesToTextFormat = function (a) {
  8994. var b = '"';
  8995. if (a) {
  8996. a = jspb.utils.byteSourceToUint8Array(a);
  8997. for (var c = 0; c < a.length; c++) {
  8998. b += "\\x", 16 > a[c] && (b += "0"), b += a[c].toString(16);
  8999. }
  9000. }
  9001. return b + '"';
  9002. };
  9003. jspb.utils.debugScalarToTextFormat = function (a) {
  9004. return "string" === typeof a ? goog.string.quote(a) : a.toString();
  9005. };
  9006. jspb.utils.stringToByteArray = function (a) {
  9007. for (var b = new Uint8Array(a.length), c = 0; c < a.length; c++) {
  9008. var d = a.charCodeAt(c);
  9009. if (255 < d) throw Error("Conversion error: string contains codepoint outside of byte range");
  9010. b[c] = d;
  9011. }
  9012. return b;
  9013. };
  9014. jspb.utils.byteSourceToUint8Array = function (a) {
  9015. if (a.constructor === Uint8Array) return a;
  9016. if (a.constructor === ArrayBuffer || a.constructor === Array) return new Uint8Array(a);
  9017. if (a.constructor === String) return goog.crypt.base64.decodeStringToUint8Array(a);
  9018. if (a instanceof Uint8Array) return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
  9019. jspb.asserts.fail("Type not convertible to Uint8Array.");
  9020. return new Uint8Array(0);
  9021. };
  9022. jspb.BinaryDecoder = function (a, b, c) {
  9023. this.bytes_ = null;
  9024. this.cursor_ = this.end_ = this.start_ = 0;
  9025. this.error_ = !1;
  9026. a && this.setBlock(a, b, c);
  9027. };
  9028. jspb.BinaryDecoder.instanceCache_ = [];
  9029. jspb.BinaryDecoder.alloc = function (a, b, c) {
  9030. if (jspb.BinaryDecoder.instanceCache_.length) {
  9031. var d = jspb.BinaryDecoder.instanceCache_.pop();
  9032. a && d.setBlock(a, b, c);
  9033. return d;
  9034. }
  9035. return new jspb.BinaryDecoder(a, b, c);
  9036. };
  9037. jspb.BinaryDecoder.prototype.free = function () {
  9038. this.clear();
  9039. 100 > jspb.BinaryDecoder.instanceCache_.length && jspb.BinaryDecoder.instanceCache_.push(this);
  9040. };
  9041. jspb.BinaryDecoder.prototype.clone = function () {
  9042. return jspb.BinaryDecoder.alloc(this.bytes_, this.start_, this.end_ - this.start_);
  9043. };
  9044. jspb.BinaryDecoder.prototype.clear = function () {
  9045. this.bytes_ = null;
  9046. this.cursor_ = this.end_ = this.start_ = 0;
  9047. this.error_ = !1;
  9048. };
  9049. jspb.BinaryDecoder.prototype.getBuffer = function () {
  9050. return this.bytes_;
  9051. };
  9052. jspb.BinaryDecoder.prototype.setBlock = function (a, b, c) {
  9053. this.bytes_ = jspb.utils.byteSourceToUint8Array(a);
  9054. this.start_ = void 0 !== b ? b : 0;
  9055. this.end_ = void 0 !== c ? this.start_ + c : this.bytes_.length;
  9056. this.cursor_ = this.start_;
  9057. };
  9058. jspb.BinaryDecoder.prototype.getEnd = function () {
  9059. return this.end_;
  9060. };
  9061. jspb.BinaryDecoder.prototype.setEnd = function (a) {
  9062. this.end_ = a;
  9063. };
  9064. jspb.BinaryDecoder.prototype.reset = function () {
  9065. this.cursor_ = this.start_;
  9066. };
  9067. jspb.BinaryDecoder.prototype.getCursor = function () {
  9068. return this.cursor_;
  9069. };
  9070. jspb.BinaryDecoder.prototype.setCursor = function (a) {
  9071. this.cursor_ = a;
  9072. };
  9073. jspb.BinaryDecoder.prototype.advance = function (a) {
  9074. this.cursor_ += a;
  9075. jspb.asserts.assert(this.cursor_ <= this.end_);
  9076. };
  9077. jspb.BinaryDecoder.prototype.atEnd = function () {
  9078. return this.cursor_ == this.end_;
  9079. };
  9080. jspb.BinaryDecoder.prototype.pastEnd = function () {
  9081. return this.cursor_ > this.end_;
  9082. };
  9083. jspb.BinaryDecoder.prototype.getError = function () {
  9084. return this.error_ || 0 > this.cursor_ || this.cursor_ > this.end_;
  9085. };
  9086. jspb.BinaryDecoder.prototype.readSplitVarint64 = function (a) {
  9087. for (var b = 128, c = 0, d = 0, e = 0; 4 > e && 128 <= b; e++) {
  9088. b = this.bytes_[this.cursor_++], c |= (b & 127) << 7 * e;
  9089. }
  9090. 128 <= b && (b = this.bytes_[this.cursor_++], c |= (b & 127) << 28, d |= (b & 127) >> 4);
  9091. if (128 <= b) for (e = 0; 5 > e && 128 <= b; e++) {
  9092. b = this.bytes_[this.cursor_++], d |= (b & 127) << 7 * e + 3;
  9093. }
  9094. if (128 > b) return a(c >>> 0, d >>> 0);
  9095. jspb.asserts.fail("Failed to read varint, encoding is invalid.");
  9096. this.error_ = !0;
  9097. };
  9098. jspb.BinaryDecoder.prototype.readSplitZigzagVarint64 = function (a) {
  9099. return this.readSplitVarint64(function (b, c) {
  9100. return jspb.utils.fromZigzag64(b, c, a);
  9101. });
  9102. };
  9103. jspb.BinaryDecoder.prototype.readSplitFixed64 = function (a) {
  9104. var b = this.bytes_,
  9105. c = this.cursor_;
  9106. this.cursor_ += 8;
  9107. for (var d = 0, e = 0, f = c + 7; f >= c; f--) {
  9108. d = d << 8 | b[f], e = e << 8 | b[f + 4];
  9109. }
  9110. return a(d, e);
  9111. };
  9112. jspb.BinaryDecoder.prototype.skipVarint = function () {
  9113. for (; this.bytes_[this.cursor_] & 128;) {
  9114. this.cursor_++;
  9115. }
  9116. this.cursor_++;
  9117. };
  9118. jspb.BinaryDecoder.prototype.unskipVarint = function (a) {
  9119. for (; 128 < a;) {
  9120. this.cursor_--, a >>>= 7;
  9121. }
  9122. this.cursor_--;
  9123. };
  9124. jspb.BinaryDecoder.prototype.readUnsignedVarint32 = function () {
  9125. var a = this.bytes_;
  9126. var b = a[this.cursor_ + 0];
  9127. var c = b & 127;
  9128. if (128 > b) return this.cursor_ += 1, jspb.asserts.assert(this.cursor_ <= this.end_), c;
  9129. b = a[this.cursor_ + 1];
  9130. c |= (b & 127) << 7;
  9131. if (128 > b) return this.cursor_ += 2, jspb.asserts.assert(this.cursor_ <= this.end_), c;
  9132. b = a[this.cursor_ + 2];
  9133. c |= (b & 127) << 14;
  9134. if (128 > b) return this.cursor_ += 3, jspb.asserts.assert(this.cursor_ <= this.end_), c;
  9135. b = a[this.cursor_ + 3];
  9136. c |= (b & 127) << 21;
  9137. if (128 > b) return this.cursor_ += 4, jspb.asserts.assert(this.cursor_ <= this.end_), c;
  9138. b = a[this.cursor_ + 4];
  9139. c |= (b & 15) << 28;
  9140. if (128 > b) return this.cursor_ += 5, jspb.asserts.assert(this.cursor_ <= this.end_), c >>> 0;
  9141. this.cursor_ += 5;
  9142. 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && jspb.asserts.assert(!1);
  9143. jspb.asserts.assert(this.cursor_ <= this.end_);
  9144. return c;
  9145. };
  9146. jspb.BinaryDecoder.prototype.readSignedVarint32 = function () {
  9147. return ~~this.readUnsignedVarint32();
  9148. };
  9149. jspb.BinaryDecoder.prototype.readUnsignedVarint32String = function () {
  9150. return this.readUnsignedVarint32().toString();
  9151. };
  9152. jspb.BinaryDecoder.prototype.readSignedVarint32String = function () {
  9153. return this.readSignedVarint32().toString();
  9154. };
  9155. jspb.BinaryDecoder.prototype.readZigzagVarint32 = function () {
  9156. var a = this.readUnsignedVarint32();
  9157. return a >>> 1 ^ -(a & 1);
  9158. };
  9159. jspb.BinaryDecoder.prototype.readUnsignedVarint64 = function () {
  9160. return this.readSplitVarint64(jspb.utils.joinUint64);
  9161. };
  9162. jspb.BinaryDecoder.prototype.readUnsignedVarint64String = function () {
  9163. return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString);
  9164. };
  9165. jspb.BinaryDecoder.prototype.readSignedVarint64 = function () {
  9166. return this.readSplitVarint64(jspb.utils.joinInt64);
  9167. };
  9168. jspb.BinaryDecoder.prototype.readSignedVarint64String = function () {
  9169. return this.readSplitVarint64(jspb.utils.joinSignedDecimalString);
  9170. };
  9171. jspb.BinaryDecoder.prototype.readZigzagVarint64 = function () {
  9172. return this.readSplitVarint64(jspb.utils.joinZigzag64);
  9173. };
  9174. jspb.BinaryDecoder.prototype.readZigzagVarintHash64 = function () {
  9175. return this.readSplitZigzagVarint64(jspb.utils.joinHash64);
  9176. };
  9177. jspb.BinaryDecoder.prototype.readZigzagVarint64String = function () {
  9178. return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString);
  9179. };
  9180. jspb.BinaryDecoder.prototype.readUint8 = function () {
  9181. var a = this.bytes_[this.cursor_ + 0];
  9182. this.cursor_ += 1;
  9183. jspb.asserts.assert(this.cursor_ <= this.end_);
  9184. return a;
  9185. };
  9186. jspb.BinaryDecoder.prototype.readUint16 = function () {
  9187. var a = this.bytes_[this.cursor_ + 0],
  9188. b = this.bytes_[this.cursor_ + 1];
  9189. this.cursor_ += 2;
  9190. jspb.asserts.assert(this.cursor_ <= this.end_);
  9191. return a << 0 | b << 8;
  9192. };
  9193. jspb.BinaryDecoder.prototype.readUint32 = function () {
  9194. var a = this.bytes_[this.cursor_ + 0],
  9195. b = this.bytes_[this.cursor_ + 1],
  9196. c = this.bytes_[this.cursor_ + 2],
  9197. d = this.bytes_[this.cursor_ + 3];
  9198. this.cursor_ += 4;
  9199. jspb.asserts.assert(this.cursor_ <= this.end_);
  9200. return (a << 0 | b << 8 | c << 16 | d << 24) >>> 0;
  9201. };
  9202. jspb.BinaryDecoder.prototype.readUint64 = function () {
  9203. var a = this.readUint32(),
  9204. b = this.readUint32();
  9205. return jspb.utils.joinUint64(a, b);
  9206. };
  9207. jspb.BinaryDecoder.prototype.readUint64String = function () {
  9208. var a = this.readUint32(),
  9209. b = this.readUint32();
  9210. return jspb.utils.joinUnsignedDecimalString(a, b);
  9211. };
  9212. jspb.BinaryDecoder.prototype.readInt8 = function () {
  9213. var a = this.bytes_[this.cursor_ + 0];
  9214. this.cursor_ += 1;
  9215. jspb.asserts.assert(this.cursor_ <= this.end_);
  9216. return a << 24 >> 24;
  9217. };
  9218. jspb.BinaryDecoder.prototype.readInt16 = function () {
  9219. var a = this.bytes_[this.cursor_ + 0],
  9220. b = this.bytes_[this.cursor_ + 1];
  9221. this.cursor_ += 2;
  9222. jspb.asserts.assert(this.cursor_ <= this.end_);
  9223. return (a << 0 | b << 8) << 16 >> 16;
  9224. };
  9225. jspb.BinaryDecoder.prototype.readInt32 = function () {
  9226. var a = this.bytes_[this.cursor_ + 0],
  9227. b = this.bytes_[this.cursor_ + 1],
  9228. c = this.bytes_[this.cursor_ + 2],
  9229. d = this.bytes_[this.cursor_ + 3];
  9230. this.cursor_ += 4;
  9231. jspb.asserts.assert(this.cursor_ <= this.end_);
  9232. return a << 0 | b << 8 | c << 16 | d << 24;
  9233. };
  9234. jspb.BinaryDecoder.prototype.readInt64 = function () {
  9235. var a = this.readUint32(),
  9236. b = this.readUint32();
  9237. return jspb.utils.joinInt64(a, b);
  9238. };
  9239. jspb.BinaryDecoder.prototype.readInt64String = function () {
  9240. var a = this.readUint32(),
  9241. b = this.readUint32();
  9242. return jspb.utils.joinSignedDecimalString(a, b);
  9243. };
  9244. jspb.BinaryDecoder.prototype.readFloat = function () {
  9245. var a = this.readUint32();
  9246. return jspb.utils.joinFloat32(a, 0);
  9247. };
  9248. jspb.BinaryDecoder.prototype.readDouble = function () {
  9249. var a = this.readUint32(),
  9250. b = this.readUint32();
  9251. return jspb.utils.joinFloat64(a, b);
  9252. };
  9253. jspb.BinaryDecoder.prototype.readBool = function () {
  9254. return !!this.bytes_[this.cursor_++];
  9255. };
  9256. jspb.BinaryDecoder.prototype.readEnum = function () {
  9257. return this.readSignedVarint32();
  9258. };
  9259. jspb.BinaryDecoder.prototype.readString = function (a) {
  9260. var b = this.bytes_,
  9261. c = this.cursor_;
  9262. a = c + a;
  9263. for (var d = [], e = ""; c < a;) {
  9264. var f = b[c++];
  9265. if (128 > f) d.push(f);else if (192 > f) continue;else if (224 > f) {
  9266. var g = b[c++];
  9267. d.push((f & 31) << 6 | g & 63);
  9268. } else if (240 > f) {
  9269. g = b[c++];
  9270. var h = b[c++];
  9271. d.push((f & 15) << 12 | (g & 63) << 6 | h & 63);
  9272. } else if (248 > f) {
  9273. g = b[c++];
  9274. h = b[c++];
  9275. var k = b[c++];
  9276. f = (f & 7) << 18 | (g & 63) << 12 | (h & 63) << 6 | k & 63;
  9277. f -= 65536;
  9278. d.push((f >> 10 & 1023) + 55296, (f & 1023) + 56320);
  9279. }
  9280. 8192 <= d.length && (e += String.fromCharCode.apply(null, d), d.length = 0);
  9281. }
  9282. e += goog.crypt.byteArrayToString(d);
  9283. this.cursor_ = c;
  9284. return e;
  9285. };
  9286. jspb.BinaryDecoder.prototype.readStringWithLength = function () {
  9287. var a = this.readUnsignedVarint32();
  9288. return this.readString(a);
  9289. };
  9290. jspb.BinaryDecoder.prototype.readBytes = function (a) {
  9291. if (0 > a || this.cursor_ + a > this.bytes_.length) return this.error_ = !0, jspb.asserts.fail("Invalid byte length!"), new Uint8Array(0);
  9292. var b = this.bytes_.subarray(this.cursor_, this.cursor_ + a);
  9293. this.cursor_ += a;
  9294. jspb.asserts.assert(this.cursor_ <= this.end_);
  9295. return b;
  9296. };
  9297. jspb.BinaryDecoder.prototype.readVarintHash64 = function () {
  9298. return this.readSplitVarint64(jspb.utils.joinHash64);
  9299. };
  9300. jspb.BinaryDecoder.prototype.readFixedHash64 = function () {
  9301. var a = this.bytes_,
  9302. b = this.cursor_,
  9303. c = a[b + 0],
  9304. d = a[b + 1],
  9305. e = a[b + 2],
  9306. f = a[b + 3],
  9307. g = a[b + 4],
  9308. h = a[b + 5],
  9309. k = a[b + 6];
  9310. a = a[b + 7];
  9311. this.cursor_ += 8;
  9312. return String.fromCharCode(c, d, e, f, g, h, k, a);
  9313. };
  9314. jspb.BinaryReader = function (a, b, c) {
  9315. this.decoder_ = jspb.BinaryDecoder.alloc(a, b, c);
  9316. this.fieldCursor_ = this.decoder_.getCursor();
  9317. this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
  9318. this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
  9319. this.error_ = !1;
  9320. this.readCallbacks_ = null;
  9321. };
  9322. jspb.BinaryReader.instanceCache_ = [];
  9323. jspb.BinaryReader.alloc = function (a, b, c) {
  9324. if (jspb.BinaryReader.instanceCache_.length) {
  9325. var d = jspb.BinaryReader.instanceCache_.pop();
  9326. a && d.decoder_.setBlock(a, b, c);
  9327. return d;
  9328. }
  9329. return new jspb.BinaryReader(a, b, c);
  9330. };
  9331. jspb.BinaryReader.prototype.alloc = jspb.BinaryReader.alloc;
  9332. jspb.BinaryReader.prototype.free = function () {
  9333. this.decoder_.clear();
  9334. this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
  9335. this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
  9336. this.error_ = !1;
  9337. this.readCallbacks_ = null;
  9338. 100 > jspb.BinaryReader.instanceCache_.length && jspb.BinaryReader.instanceCache_.push(this);
  9339. };
  9340. jspb.BinaryReader.prototype.getFieldCursor = function () {
  9341. return this.fieldCursor_;
  9342. };
  9343. jspb.BinaryReader.prototype.getCursor = function () {
  9344. return this.decoder_.getCursor();
  9345. };
  9346. jspb.BinaryReader.prototype.getBuffer = function () {
  9347. return this.decoder_.getBuffer();
  9348. };
  9349. jspb.BinaryReader.prototype.getFieldNumber = function () {
  9350. return this.nextField_;
  9351. };
  9352. goog.exportProperty(jspb.BinaryReader.prototype, "getFieldNumber", jspb.BinaryReader.prototype.getFieldNumber);
  9353. jspb.BinaryReader.prototype.getWireType = function () {
  9354. return this.nextWireType_;
  9355. };
  9356. jspb.BinaryReader.prototype.isDelimited = function () {
  9357. return this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED;
  9358. };
  9359. goog.exportProperty(jspb.BinaryReader.prototype, "isDelimited", jspb.BinaryReader.prototype.isDelimited);
  9360. jspb.BinaryReader.prototype.isEndGroup = function () {
  9361. return this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP;
  9362. };
  9363. goog.exportProperty(jspb.BinaryReader.prototype, "isEndGroup", jspb.BinaryReader.prototype.isEndGroup);
  9364. jspb.BinaryReader.prototype.getError = function () {
  9365. return this.error_ || this.decoder_.getError();
  9366. };
  9367. jspb.BinaryReader.prototype.setBlock = function (a, b, c) {
  9368. this.decoder_.setBlock(a, b, c);
  9369. this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
  9370. this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
  9371. };
  9372. jspb.BinaryReader.prototype.reset = function () {
  9373. this.decoder_.reset();
  9374. this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
  9375. this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
  9376. };
  9377. jspb.BinaryReader.prototype.advance = function (a) {
  9378. this.decoder_.advance(a);
  9379. };
  9380. jspb.BinaryReader.prototype.nextField = function () {
  9381. if (this.decoder_.atEnd()) return !1;
  9382. if (this.getError()) return jspb.asserts.fail("Decoder hit an error"), !1;
  9383. this.fieldCursor_ = this.decoder_.getCursor();
  9384. var a = this.decoder_.readUnsignedVarint32(),
  9385. b = a >>> 3;
  9386. a &= 7;
  9387. if (a != jspb.BinaryConstants.WireType.VARINT && a != jspb.BinaryConstants.WireType.FIXED32 && a != jspb.BinaryConstants.WireType.FIXED64 && a != jspb.BinaryConstants.WireType.DELIMITED && a != jspb.BinaryConstants.WireType.START_GROUP && a != jspb.BinaryConstants.WireType.END_GROUP) return jspb.asserts.fail("Invalid wire type: %s (at position %s)", a, this.fieldCursor_), this.error_ = !0, !1;
  9388. this.nextField_ = b;
  9389. this.nextWireType_ = a;
  9390. return !0;
  9391. };
  9392. goog.exportProperty(jspb.BinaryReader.prototype, "nextField", jspb.BinaryReader.prototype.nextField);
  9393. jspb.BinaryReader.prototype.unskipHeader = function () {
  9394. this.decoder_.unskipVarint(this.nextField_ << 3 | this.nextWireType_);
  9395. };
  9396. jspb.BinaryReader.prototype.skipMatchingFields = function () {
  9397. var a = this.nextField_;
  9398. for (this.unskipHeader(); this.nextField() && this.getFieldNumber() == a;) {
  9399. this.skipField();
  9400. }
  9401. this.decoder_.atEnd() || this.unskipHeader();
  9402. };
  9403. jspb.BinaryReader.prototype.skipVarintField = function () {
  9404. this.nextWireType_ != jspb.BinaryConstants.WireType.VARINT ? (jspb.asserts.fail("Invalid wire type for skipVarintField"), this.skipField()) : this.decoder_.skipVarint();
  9405. };
  9406. jspb.BinaryReader.prototype.skipDelimitedField = function () {
  9407. if (this.nextWireType_ != jspb.BinaryConstants.WireType.DELIMITED) jspb.asserts.fail("Invalid wire type for skipDelimitedField"), this.skipField();else {
  9408. var a = this.decoder_.readUnsignedVarint32();
  9409. this.decoder_.advance(a);
  9410. }
  9411. };
  9412. jspb.BinaryReader.prototype.skipFixed32Field = function () {
  9413. this.nextWireType_ != jspb.BinaryConstants.WireType.FIXED32 ? (jspb.asserts.fail("Invalid wire type for skipFixed32Field"), this.skipField()) : this.decoder_.advance(4);
  9414. };
  9415. jspb.BinaryReader.prototype.skipFixed64Field = function () {
  9416. this.nextWireType_ != jspb.BinaryConstants.WireType.FIXED64 ? (jspb.asserts.fail("Invalid wire type for skipFixed64Field"), this.skipField()) : this.decoder_.advance(8);
  9417. };
  9418. jspb.BinaryReader.prototype.skipGroup = function () {
  9419. var a = this.nextField_;
  9420. do {
  9421. if (!this.nextField()) {
  9422. jspb.asserts.fail("Unmatched start-group tag: stream EOF");
  9423. this.error_ = !0;
  9424. break;
  9425. }
  9426. if (this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP) {
  9427. this.nextField_ != a && (jspb.asserts.fail("Unmatched end-group tag"), this.error_ = !0);
  9428. break;
  9429. }
  9430. this.skipField();
  9431. } while (1);
  9432. };
  9433. jspb.BinaryReader.prototype.skipField = function () {
  9434. switch (this.nextWireType_) {
  9435. case jspb.BinaryConstants.WireType.VARINT:
  9436. this.skipVarintField();
  9437. break;
  9438. case jspb.BinaryConstants.WireType.FIXED64:
  9439. this.skipFixed64Field();
  9440. break;
  9441. case jspb.BinaryConstants.WireType.DELIMITED:
  9442. this.skipDelimitedField();
  9443. break;
  9444. case jspb.BinaryConstants.WireType.FIXED32:
  9445. this.skipFixed32Field();
  9446. break;
  9447. case jspb.BinaryConstants.WireType.START_GROUP:
  9448. this.skipGroup();
  9449. break;
  9450. default:
  9451. jspb.asserts.fail("Invalid wire encoding for field.");
  9452. }
  9453. };
  9454. jspb.BinaryReader.prototype.registerReadCallback = function (a, b) {
  9455. null === this.readCallbacks_ && (this.readCallbacks_ = {});
  9456. jspb.asserts.assert(!this.readCallbacks_[a]);
  9457. this.readCallbacks_[a] = b;
  9458. };
  9459. jspb.BinaryReader.prototype.runReadCallback = function (a) {
  9460. jspb.asserts.assert(null !== this.readCallbacks_);
  9461. a = this.readCallbacks_[a];
  9462. jspb.asserts.assert(a);
  9463. return a(this);
  9464. };
  9465. jspb.BinaryReader.prototype.readAny = function (a) {
  9466. this.nextWireType_ = jspb.BinaryConstants.FieldTypeToWireType(a);
  9467. var b = jspb.BinaryConstants.FieldType;
  9468. switch (a) {
  9469. case b.DOUBLE:
  9470. return this.readDouble();
  9471. case b.FLOAT:
  9472. return this.readFloat();
  9473. case b.INT64:
  9474. return this.readInt64();
  9475. case b.UINT64:
  9476. return this.readUint64();
  9477. case b.INT32:
  9478. return this.readInt32();
  9479. case b.FIXED64:
  9480. return this.readFixed64();
  9481. case b.FIXED32:
  9482. return this.readFixed32();
  9483. case b.BOOL:
  9484. return this.readBool();
  9485. case b.STRING:
  9486. return this.readString();
  9487. case b.GROUP:
  9488. jspb.asserts.fail("Group field type not supported in readAny()");
  9489. case b.MESSAGE:
  9490. jspb.asserts.fail("Message field type not supported in readAny()");
  9491. case b.BYTES:
  9492. return this.readBytes();
  9493. case b.UINT32:
  9494. return this.readUint32();
  9495. case b.ENUM:
  9496. return this.readEnum();
  9497. case b.SFIXED32:
  9498. return this.readSfixed32();
  9499. case b.SFIXED64:
  9500. return this.readSfixed64();
  9501. case b.SINT32:
  9502. return this.readSint32();
  9503. case b.SINT64:
  9504. return this.readSint64();
  9505. case b.FHASH64:
  9506. return this.readFixedHash64();
  9507. case b.VHASH64:
  9508. return this.readVarintHash64();
  9509. default:
  9510. jspb.asserts.fail("Invalid field type in readAny()");
  9511. }
  9512. return 0;
  9513. };
  9514. jspb.BinaryReader.prototype.readMessage = function (a, b) {
  9515. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
  9516. var c = this.decoder_.getEnd(),
  9517. d = this.decoder_.readUnsignedVarint32();
  9518. d = this.decoder_.getCursor() + d;
  9519. this.decoder_.setEnd(d);
  9520. b(a, this);
  9521. this.decoder_.setCursor(d);
  9522. this.decoder_.setEnd(c);
  9523. };
  9524. goog.exportProperty(jspb.BinaryReader.prototype, "readMessage", jspb.BinaryReader.prototype.readMessage);
  9525. jspb.BinaryReader.prototype.readGroup = function (a, b, c) {
  9526. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.START_GROUP);
  9527. jspb.asserts.assert(this.nextField_ == a);
  9528. c(b, this);
  9529. this.error_ || this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP || (jspb.asserts.fail("Group submessage did not end with an END_GROUP tag"), this.error_ = !0);
  9530. };
  9531. goog.exportProperty(jspb.BinaryReader.prototype, "readGroup", jspb.BinaryReader.prototype.readGroup);
  9532. jspb.BinaryReader.prototype.getFieldDecoder = function () {
  9533. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
  9534. var a = this.decoder_.readUnsignedVarint32(),
  9535. b = this.decoder_.getCursor(),
  9536. c = b + a;
  9537. a = jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(), b, a);
  9538. this.decoder_.setCursor(c);
  9539. return a;
  9540. };
  9541. jspb.BinaryReader.prototype.readInt32 = function () {
  9542. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9543. return this.decoder_.readSignedVarint32();
  9544. };
  9545. goog.exportProperty(jspb.BinaryReader.prototype, "readInt32", jspb.BinaryReader.prototype.readInt32);
  9546. jspb.BinaryReader.prototype.readInt32String = function () {
  9547. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9548. return this.decoder_.readSignedVarint32String();
  9549. };
  9550. jspb.BinaryReader.prototype.readInt64 = function () {
  9551. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9552. return this.decoder_.readSignedVarint64();
  9553. };
  9554. goog.exportProperty(jspb.BinaryReader.prototype, "readInt64", jspb.BinaryReader.prototype.readInt64);
  9555. jspb.BinaryReader.prototype.readInt64String = function () {
  9556. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9557. return this.decoder_.readSignedVarint64String();
  9558. };
  9559. jspb.BinaryReader.prototype.readUint32 = function () {
  9560. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9561. return this.decoder_.readUnsignedVarint32();
  9562. };
  9563. goog.exportProperty(jspb.BinaryReader.prototype, "readUint32", jspb.BinaryReader.prototype.readUint32);
  9564. jspb.BinaryReader.prototype.readUint32String = function () {
  9565. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9566. return this.decoder_.readUnsignedVarint32String();
  9567. };
  9568. jspb.BinaryReader.prototype.readUint64 = function () {
  9569. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9570. return this.decoder_.readUnsignedVarint64();
  9571. };
  9572. goog.exportProperty(jspb.BinaryReader.prototype, "readUint64", jspb.BinaryReader.prototype.readUint64);
  9573. jspb.BinaryReader.prototype.readUint64String = function () {
  9574. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9575. return this.decoder_.readUnsignedVarint64String();
  9576. };
  9577. jspb.BinaryReader.prototype.readSint32 = function () {
  9578. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9579. return this.decoder_.readZigzagVarint32();
  9580. };
  9581. goog.exportProperty(jspb.BinaryReader.prototype, "readSint32", jspb.BinaryReader.prototype.readSint32);
  9582. jspb.BinaryReader.prototype.readSint64 = function () {
  9583. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9584. return this.decoder_.readZigzagVarint64();
  9585. };
  9586. goog.exportProperty(jspb.BinaryReader.prototype, "readSint64", jspb.BinaryReader.prototype.readSint64);
  9587. jspb.BinaryReader.prototype.readSint64String = function () {
  9588. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9589. return this.decoder_.readZigzagVarint64String();
  9590. };
  9591. jspb.BinaryReader.prototype.readFixed32 = function () {
  9592. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
  9593. return this.decoder_.readUint32();
  9594. };
  9595. goog.exportProperty(jspb.BinaryReader.prototype, "readFixed32", jspb.BinaryReader.prototype.readFixed32);
  9596. jspb.BinaryReader.prototype.readFixed64 = function () {
  9597. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9598. return this.decoder_.readUint64();
  9599. };
  9600. goog.exportProperty(jspb.BinaryReader.prototype, "readFixed64", jspb.BinaryReader.prototype.readFixed64);
  9601. jspb.BinaryReader.prototype.readFixed64String = function () {
  9602. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9603. return this.decoder_.readUint64String();
  9604. };
  9605. jspb.BinaryReader.prototype.readSfixed32 = function () {
  9606. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
  9607. return this.decoder_.readInt32();
  9608. };
  9609. goog.exportProperty(jspb.BinaryReader.prototype, "readSfixed32", jspb.BinaryReader.prototype.readSfixed32);
  9610. jspb.BinaryReader.prototype.readSfixed32String = function () {
  9611. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
  9612. return this.decoder_.readInt32().toString();
  9613. };
  9614. jspb.BinaryReader.prototype.readSfixed64 = function () {
  9615. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9616. return this.decoder_.readInt64();
  9617. };
  9618. goog.exportProperty(jspb.BinaryReader.prototype, "readSfixed64", jspb.BinaryReader.prototype.readSfixed64);
  9619. jspb.BinaryReader.prototype.readSfixed64String = function () {
  9620. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9621. return this.decoder_.readInt64String();
  9622. };
  9623. jspb.BinaryReader.prototype.readFloat = function () {
  9624. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
  9625. return this.decoder_.readFloat();
  9626. };
  9627. goog.exportProperty(jspb.BinaryReader.prototype, "readFloat", jspb.BinaryReader.prototype.readFloat);
  9628. jspb.BinaryReader.prototype.readDouble = function () {
  9629. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9630. return this.decoder_.readDouble();
  9631. };
  9632. goog.exportProperty(jspb.BinaryReader.prototype, "readDouble", jspb.BinaryReader.prototype.readDouble);
  9633. jspb.BinaryReader.prototype.readBool = function () {
  9634. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9635. return !!this.decoder_.readUnsignedVarint32();
  9636. };
  9637. goog.exportProperty(jspb.BinaryReader.prototype, "readBool", jspb.BinaryReader.prototype.readBool);
  9638. jspb.BinaryReader.prototype.readEnum = function () {
  9639. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9640. return this.decoder_.readSignedVarint64();
  9641. };
  9642. goog.exportProperty(jspb.BinaryReader.prototype, "readEnum", jspb.BinaryReader.prototype.readEnum);
  9643. jspb.BinaryReader.prototype.readString = function () {
  9644. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
  9645. var a = this.decoder_.readUnsignedVarint32();
  9646. return this.decoder_.readString(a);
  9647. };
  9648. goog.exportProperty(jspb.BinaryReader.prototype, "readString", jspb.BinaryReader.prototype.readString);
  9649. jspb.BinaryReader.prototype.readBytes = function () {
  9650. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
  9651. var a = this.decoder_.readUnsignedVarint32();
  9652. return this.decoder_.readBytes(a);
  9653. };
  9654. goog.exportProperty(jspb.BinaryReader.prototype, "readBytes", jspb.BinaryReader.prototype.readBytes);
  9655. jspb.BinaryReader.prototype.readVarintHash64 = function () {
  9656. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9657. return this.decoder_.readVarintHash64();
  9658. };
  9659. jspb.BinaryReader.prototype.readSintHash64 = function () {
  9660. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9661. return this.decoder_.readZigzagVarintHash64();
  9662. };
  9663. jspb.BinaryReader.prototype.readSplitVarint64 = function (a) {
  9664. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9665. return this.decoder_.readSplitVarint64(a);
  9666. };
  9667. jspb.BinaryReader.prototype.readSplitZigzagVarint64 = function (a) {
  9668. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
  9669. return this.decoder_.readSplitVarint64(function (b, c) {
  9670. return jspb.utils.fromZigzag64(b, c, a);
  9671. });
  9672. };
  9673. jspb.BinaryReader.prototype.readFixedHash64 = function () {
  9674. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9675. return this.decoder_.readFixedHash64();
  9676. };
  9677. jspb.BinaryReader.prototype.readSplitFixed64 = function (a) {
  9678. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
  9679. return this.decoder_.readSplitFixed64(a);
  9680. };
  9681. jspb.BinaryReader.prototype.readPackedField_ = function (a) {
  9682. jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
  9683. var b = this.decoder_.readUnsignedVarint32();
  9684. b = this.decoder_.getCursor() + b;
  9685. for (var c = []; this.decoder_.getCursor() < b;) {
  9686. c.push(a.call(this.decoder_));
  9687. }
  9688. return c;
  9689. };
  9690. jspb.BinaryReader.prototype.readPackedInt32 = function () {
  9691. return this.readPackedField_(this.decoder_.readSignedVarint32);
  9692. };
  9693. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedInt32", jspb.BinaryReader.prototype.readPackedInt32);
  9694. jspb.BinaryReader.prototype.readPackedInt32String = function () {
  9695. return this.readPackedField_(this.decoder_.readSignedVarint32String);
  9696. };
  9697. jspb.BinaryReader.prototype.readPackedInt64 = function () {
  9698. return this.readPackedField_(this.decoder_.readSignedVarint64);
  9699. };
  9700. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedInt64", jspb.BinaryReader.prototype.readPackedInt64);
  9701. jspb.BinaryReader.prototype.readPackedInt64String = function () {
  9702. return this.readPackedField_(this.decoder_.readSignedVarint64String);
  9703. };
  9704. jspb.BinaryReader.prototype.readPackedUint32 = function () {
  9705. return this.readPackedField_(this.decoder_.readUnsignedVarint32);
  9706. };
  9707. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedUint32", jspb.BinaryReader.prototype.readPackedUint32);
  9708. jspb.BinaryReader.prototype.readPackedUint32String = function () {
  9709. return this.readPackedField_(this.decoder_.readUnsignedVarint32String);
  9710. };
  9711. jspb.BinaryReader.prototype.readPackedUint64 = function () {
  9712. return this.readPackedField_(this.decoder_.readUnsignedVarint64);
  9713. };
  9714. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedUint64", jspb.BinaryReader.prototype.readPackedUint64);
  9715. jspb.BinaryReader.prototype.readPackedUint64String = function () {
  9716. return this.readPackedField_(this.decoder_.readUnsignedVarint64String);
  9717. };
  9718. jspb.BinaryReader.prototype.readPackedSint32 = function () {
  9719. return this.readPackedField_(this.decoder_.readZigzagVarint32);
  9720. };
  9721. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSint32", jspb.BinaryReader.prototype.readPackedSint32);
  9722. jspb.BinaryReader.prototype.readPackedSint64 = function () {
  9723. return this.readPackedField_(this.decoder_.readZigzagVarint64);
  9724. };
  9725. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSint64", jspb.BinaryReader.prototype.readPackedSint64);
  9726. jspb.BinaryReader.prototype.readPackedSint64String = function () {
  9727. return this.readPackedField_(this.decoder_.readZigzagVarint64String);
  9728. };
  9729. jspb.BinaryReader.prototype.readPackedFixed32 = function () {
  9730. return this.readPackedField_(this.decoder_.readUint32);
  9731. };
  9732. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFixed32", jspb.BinaryReader.prototype.readPackedFixed32);
  9733. jspb.BinaryReader.prototype.readPackedFixed64 = function () {
  9734. return this.readPackedField_(this.decoder_.readUint64);
  9735. };
  9736. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFixed64", jspb.BinaryReader.prototype.readPackedFixed64);
  9737. jspb.BinaryReader.prototype.readPackedFixed64String = function () {
  9738. return this.readPackedField_(this.decoder_.readUint64String);
  9739. };
  9740. jspb.BinaryReader.prototype.readPackedSfixed32 = function () {
  9741. return this.readPackedField_(this.decoder_.readInt32);
  9742. };
  9743. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSfixed32", jspb.BinaryReader.prototype.readPackedSfixed32);
  9744. jspb.BinaryReader.prototype.readPackedSfixed64 = function () {
  9745. return this.readPackedField_(this.decoder_.readInt64);
  9746. };
  9747. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSfixed64", jspb.BinaryReader.prototype.readPackedSfixed64);
  9748. jspb.BinaryReader.prototype.readPackedSfixed64String = function () {
  9749. return this.readPackedField_(this.decoder_.readInt64String);
  9750. };
  9751. jspb.BinaryReader.prototype.readPackedFloat = function () {
  9752. return this.readPackedField_(this.decoder_.readFloat);
  9753. };
  9754. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFloat", jspb.BinaryReader.prototype.readPackedFloat);
  9755. jspb.BinaryReader.prototype.readPackedDouble = function () {
  9756. return this.readPackedField_(this.decoder_.readDouble);
  9757. };
  9758. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedDouble", jspb.BinaryReader.prototype.readPackedDouble);
  9759. jspb.BinaryReader.prototype.readPackedBool = function () {
  9760. return this.readPackedField_(this.decoder_.readBool);
  9761. };
  9762. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedBool", jspb.BinaryReader.prototype.readPackedBool);
  9763. jspb.BinaryReader.prototype.readPackedEnum = function () {
  9764. return this.readPackedField_(this.decoder_.readEnum);
  9765. };
  9766. goog.exportProperty(jspb.BinaryReader.prototype, "readPackedEnum", jspb.BinaryReader.prototype.readPackedEnum);
  9767. jspb.BinaryReader.prototype.readPackedVarintHash64 = function () {
  9768. return this.readPackedField_(this.decoder_.readVarintHash64);
  9769. };
  9770. jspb.BinaryReader.prototype.readPackedFixedHash64 = function () {
  9771. return this.readPackedField_(this.decoder_.readFixedHash64);
  9772. };
  9773. jspb.BinaryEncoder = function () {
  9774. this.buffer_ = [];
  9775. };
  9776. jspb.BinaryEncoder.prototype.length = function () {
  9777. return this.buffer_.length;
  9778. };
  9779. jspb.BinaryEncoder.prototype.end = function () {
  9780. var a = this.buffer_;
  9781. this.buffer_ = [];
  9782. return a;
  9783. };
  9784. jspb.BinaryEncoder.prototype.writeSplitVarint64 = function (a, b) {
  9785. jspb.asserts.assert(a == Math.floor(a));
  9786. jspb.asserts.assert(b == Math.floor(b));
  9787. jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32);
  9788. for (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32); 0 < b || 127 < a;) {
  9789. this.buffer_.push(a & 127 | 128), a = (a >>> 7 | b << 25) >>> 0, b >>>= 7;
  9790. }
  9791. this.buffer_.push(a);
  9792. };
  9793. jspb.BinaryEncoder.prototype.writeSplitFixed64 = function (a, b) {
  9794. jspb.asserts.assert(a == Math.floor(a));
  9795. jspb.asserts.assert(b == Math.floor(b));
  9796. jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32);
  9797. jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32);
  9798. this.writeUint32(a);
  9799. this.writeUint32(b);
  9800. };
  9801. jspb.BinaryEncoder.prototype.writeUnsignedVarint32 = function (a) {
  9802. jspb.asserts.assert(a == Math.floor(a));
  9803. for (jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32); 127 < a;) {
  9804. this.buffer_.push(a & 127 | 128), a >>>= 7;
  9805. }
  9806. this.buffer_.push(a);
  9807. };
  9808. jspb.BinaryEncoder.prototype.writeSignedVarint32 = function (a) {
  9809. jspb.asserts.assert(a == Math.floor(a));
  9810. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
  9811. if (0 <= a) this.writeUnsignedVarint32(a);else {
  9812. for (var b = 0; 9 > b; b++) {
  9813. this.buffer_.push(a & 127 | 128), a >>= 7;
  9814. }
  9815. this.buffer_.push(1);
  9816. }
  9817. };
  9818. jspb.BinaryEncoder.prototype.writeUnsignedVarint64 = function (a) {
  9819. jspb.asserts.assert(a == Math.floor(a));
  9820. jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_64);
  9821. jspb.utils.splitInt64(a);
  9822. this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
  9823. };
  9824. jspb.BinaryEncoder.prototype.writeSignedVarint64 = function (a) {
  9825. jspb.asserts.assert(a == Math.floor(a));
  9826. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63);
  9827. jspb.utils.splitInt64(a);
  9828. this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
  9829. };
  9830. jspb.BinaryEncoder.prototype.writeZigzagVarint32 = function (a) {
  9831. jspb.asserts.assert(a == Math.floor(a));
  9832. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
  9833. this.writeUnsignedVarint32((a << 1 ^ a >> 31) >>> 0);
  9834. };
  9835. jspb.BinaryEncoder.prototype.writeZigzagVarint64 = function (a) {
  9836. jspb.asserts.assert(a == Math.floor(a));
  9837. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63);
  9838. jspb.utils.splitZigzag64(a);
  9839. this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
  9840. };
  9841. jspb.BinaryEncoder.prototype.writeZigzagVarint64String = function (a) {
  9842. this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(a));
  9843. };
  9844. jspb.BinaryEncoder.prototype.writeZigzagVarintHash64 = function (a) {
  9845. var b = this;
  9846. jspb.utils.splitHash64(a);
  9847. jspb.utils.toZigzag64(jspb.utils.split64Low, jspb.utils.split64High, function (a, d) {
  9848. b.writeSplitVarint64(a >>> 0, d >>> 0);
  9849. });
  9850. };
  9851. jspb.BinaryEncoder.prototype.writeUint8 = function (a) {
  9852. jspb.asserts.assert(a == Math.floor(a));
  9853. jspb.asserts.assert(0 <= a && 256 > a);
  9854. this.buffer_.push(a >>> 0 & 255);
  9855. };
  9856. jspb.BinaryEncoder.prototype.writeUint16 = function (a) {
  9857. jspb.asserts.assert(a == Math.floor(a));
  9858. jspb.asserts.assert(0 <= a && 65536 > a);
  9859. this.buffer_.push(a >>> 0 & 255);
  9860. this.buffer_.push(a >>> 8 & 255);
  9861. };
  9862. jspb.BinaryEncoder.prototype.writeUint32 = function (a) {
  9863. jspb.asserts.assert(a == Math.floor(a));
  9864. jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32);
  9865. this.buffer_.push(a >>> 0 & 255);
  9866. this.buffer_.push(a >>> 8 & 255);
  9867. this.buffer_.push(a >>> 16 & 255);
  9868. this.buffer_.push(a >>> 24 & 255);
  9869. };
  9870. jspb.BinaryEncoder.prototype.writeUint64 = function (a) {
  9871. jspb.asserts.assert(a == Math.floor(a));
  9872. jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_64);
  9873. jspb.utils.splitUint64(a);
  9874. this.writeUint32(jspb.utils.split64Low);
  9875. this.writeUint32(jspb.utils.split64High);
  9876. };
  9877. jspb.BinaryEncoder.prototype.writeInt8 = function (a) {
  9878. jspb.asserts.assert(a == Math.floor(a));
  9879. jspb.asserts.assert(-128 <= a && 128 > a);
  9880. this.buffer_.push(a >>> 0 & 255);
  9881. };
  9882. jspb.BinaryEncoder.prototype.writeInt16 = function (a) {
  9883. jspb.asserts.assert(a == Math.floor(a));
  9884. jspb.asserts.assert(-32768 <= a && 32768 > a);
  9885. this.buffer_.push(a >>> 0 & 255);
  9886. this.buffer_.push(a >>> 8 & 255);
  9887. };
  9888. jspb.BinaryEncoder.prototype.writeInt32 = function (a) {
  9889. jspb.asserts.assert(a == Math.floor(a));
  9890. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
  9891. this.buffer_.push(a >>> 0 & 255);
  9892. this.buffer_.push(a >>> 8 & 255);
  9893. this.buffer_.push(a >>> 16 & 255);
  9894. this.buffer_.push(a >>> 24 & 255);
  9895. };
  9896. jspb.BinaryEncoder.prototype.writeInt64 = function (a) {
  9897. jspb.asserts.assert(a == Math.floor(a));
  9898. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63);
  9899. jspb.utils.splitInt64(a);
  9900. this.writeSplitFixed64(jspb.utils.split64Low, jspb.utils.split64High);
  9901. };
  9902. jspb.BinaryEncoder.prototype.writeInt64String = function (a) {
  9903. jspb.asserts.assert(a == Math.floor(a));
  9904. jspb.asserts.assert(+a >= -jspb.BinaryConstants.TWO_TO_63 && +a < jspb.BinaryConstants.TWO_TO_63);
  9905. jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a));
  9906. this.writeSplitFixed64(jspb.utils.split64Low, jspb.utils.split64High);
  9907. };
  9908. jspb.BinaryEncoder.prototype.writeFloat = function (a) {
  9909. jspb.asserts.assert(Infinity === a || -Infinity === a || isNaN(a) || a >= -jspb.BinaryConstants.FLOAT32_MAX && a <= jspb.BinaryConstants.FLOAT32_MAX);
  9910. jspb.utils.splitFloat32(a);
  9911. this.writeUint32(jspb.utils.split64Low);
  9912. };
  9913. jspb.BinaryEncoder.prototype.writeDouble = function (a) {
  9914. jspb.asserts.assert(Infinity === a || -Infinity === a || isNaN(a) || a >= -jspb.BinaryConstants.FLOAT64_MAX && a <= jspb.BinaryConstants.FLOAT64_MAX);
  9915. jspb.utils.splitFloat64(a);
  9916. this.writeUint32(jspb.utils.split64Low);
  9917. this.writeUint32(jspb.utils.split64High);
  9918. };
  9919. jspb.BinaryEncoder.prototype.writeBool = function (a) {
  9920. jspb.asserts.assert("boolean" === typeof a || "number" === typeof a);
  9921. this.buffer_.push(a ? 1 : 0);
  9922. };
  9923. jspb.BinaryEncoder.prototype.writeEnum = function (a) {
  9924. jspb.asserts.assert(a == Math.floor(a));
  9925. jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
  9926. this.writeSignedVarint32(a);
  9927. };
  9928. jspb.BinaryEncoder.prototype.writeBytes = function (a) {
  9929. this.buffer_.push.apply(this.buffer_, a);
  9930. };
  9931. jspb.BinaryEncoder.prototype.writeVarintHash64 = function (a) {
  9932. jspb.utils.splitHash64(a);
  9933. this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
  9934. };
  9935. jspb.BinaryEncoder.prototype.writeFixedHash64 = function (a) {
  9936. jspb.utils.splitHash64(a);
  9937. this.writeUint32(jspb.utils.split64Low);
  9938. this.writeUint32(jspb.utils.split64High);
  9939. };
  9940. jspb.BinaryEncoder.prototype.writeString = function (a) {
  9941. var b = this.buffer_.length;
  9942. jspb.asserts.assertString(a);
  9943. for (var c = 0; c < a.length; c++) {
  9944. var d = a.charCodeAt(c);
  9945. if (128 > d) this.buffer_.push(d);else if (2048 > d) this.buffer_.push(d >> 6 | 192), this.buffer_.push(d & 63 | 128);else if (65536 > d) if (55296 <= d && 56319 >= d && c + 1 < a.length) {
  9946. var e = a.charCodeAt(c + 1);
  9947. 56320 <= e && 57343 >= e && (d = 1024 * (d - 55296) + e - 56320 + 65536, this.buffer_.push(d >> 18 | 240), this.buffer_.push(d >> 12 & 63 | 128), this.buffer_.push(d >> 6 & 63 | 128), this.buffer_.push(d & 63 | 128), c++);
  9948. } else this.buffer_.push(d >> 12 | 224), this.buffer_.push(d >> 6 & 63 | 128), this.buffer_.push(d & 63 | 128);
  9949. }
  9950. return this.buffer_.length - b;
  9951. };
  9952. jspb.arith = {};
  9953. jspb.arith.UInt64 = function (a, b) {
  9954. this.lo = a;
  9955. this.hi = b;
  9956. };
  9957. jspb.arith.UInt64.prototype.cmp = function (a) {
  9958. return this.hi < a.hi || this.hi == a.hi && this.lo < a.lo ? -1 : this.hi == a.hi && this.lo == a.lo ? 0 : 1;
  9959. };
  9960. jspb.arith.UInt64.prototype.rightShift = function () {
  9961. return new jspb.arith.UInt64((this.lo >>> 1 | (this.hi & 1) << 31) >>> 0, this.hi >>> 1 >>> 0);
  9962. };
  9963. jspb.arith.UInt64.prototype.leftShift = function () {
  9964. return new jspb.arith.UInt64(this.lo << 1 >>> 0, (this.hi << 1 | this.lo >>> 31) >>> 0);
  9965. };
  9966. jspb.arith.UInt64.prototype.msb = function () {
  9967. return !!(this.hi & 2147483648);
  9968. };
  9969. jspb.arith.UInt64.prototype.lsb = function () {
  9970. return !!(this.lo & 1);
  9971. };
  9972. jspb.arith.UInt64.prototype.zero = function () {
  9973. return 0 == this.lo && 0 == this.hi;
  9974. };
  9975. jspb.arith.UInt64.prototype.add = function (a) {
  9976. return new jspb.arith.UInt64((this.lo + a.lo & 4294967295) >>> 0 >>> 0, ((this.hi + a.hi & 4294967295) >>> 0) + (4294967296 <= this.lo + a.lo ? 1 : 0) >>> 0);
  9977. };
  9978. jspb.arith.UInt64.prototype.sub = function (a) {
  9979. return new jspb.arith.UInt64((this.lo - a.lo & 4294967295) >>> 0 >>> 0, ((this.hi - a.hi & 4294967295) >>> 0) - (0 > this.lo - a.lo ? 1 : 0) >>> 0);
  9980. };
  9981. jspb.arith.UInt64.mul32x32 = function (a, b) {
  9982. var c = a & 65535;
  9983. a >>>= 16;
  9984. var d = b & 65535,
  9985. e = b >>> 16;
  9986. b = c * d + 65536 * (c * e & 65535) + 65536 * (a * d & 65535);
  9987. for (c = a * e + (c * e >>> 16) + (a * d >>> 16); 4294967296 <= b;) {
  9988. b -= 4294967296, c += 1;
  9989. }
  9990. return new jspb.arith.UInt64(b >>> 0, c >>> 0);
  9991. };
  9992. jspb.arith.UInt64.prototype.mul = function (a) {
  9993. var b = jspb.arith.UInt64.mul32x32(this.lo, a);
  9994. a = jspb.arith.UInt64.mul32x32(this.hi, a);
  9995. a.hi = a.lo;
  9996. a.lo = 0;
  9997. return b.add(a);
  9998. };
  9999. jspb.arith.UInt64.prototype.div = function (a) {
  10000. if (0 == a) return [];
  10001. var b = new jspb.arith.UInt64(0, 0),
  10002. c = new jspb.arith.UInt64(this.lo, this.hi);
  10003. a = new jspb.arith.UInt64(a, 0);
  10004. for (var d = new jspb.arith.UInt64(1, 0); !a.msb();) {
  10005. a = a.leftShift(), d = d.leftShift();
  10006. }
  10007. for (; !d.zero();) {
  10008. 0 >= a.cmp(c) && (b = b.add(d), c = c.sub(a)), a = a.rightShift(), d = d.rightShift();
  10009. }
  10010. return [b, c];
  10011. };
  10012. jspb.arith.UInt64.prototype.toString = function () {
  10013. for (var a = "", b = this; !b.zero();) {
  10014. b = b.div(10);
  10015. var c = b[0];
  10016. a = b[1].lo + a;
  10017. b = c;
  10018. }
  10019. "" == a && (a = "0");
  10020. return a;
  10021. };
  10022. jspb.arith.UInt64.fromString = function (a) {
  10023. for (var b = new jspb.arith.UInt64(0, 0), c = new jspb.arith.UInt64(0, 0), d = 0; d < a.length; d++) {
  10024. if ("0" > a[d] || "9" < a[d]) return null;
  10025. var e = parseInt(a[d], 10);
  10026. c.lo = e;
  10027. b = b.mul(10).add(c);
  10028. }
  10029. return b;
  10030. };
  10031. jspb.arith.UInt64.prototype.clone = function () {
  10032. return new jspb.arith.UInt64(this.lo, this.hi);
  10033. };
  10034. jspb.arith.Int64 = function (a, b) {
  10035. this.lo = a;
  10036. this.hi = b;
  10037. };
  10038. jspb.arith.Int64.prototype.add = function (a) {
  10039. return new jspb.arith.Int64((this.lo + a.lo & 4294967295) >>> 0 >>> 0, ((this.hi + a.hi & 4294967295) >>> 0) + (4294967296 <= this.lo + a.lo ? 1 : 0) >>> 0);
  10040. };
  10041. jspb.arith.Int64.prototype.sub = function (a) {
  10042. return new jspb.arith.Int64((this.lo - a.lo & 4294967295) >>> 0 >>> 0, ((this.hi - a.hi & 4294967295) >>> 0) - (0 > this.lo - a.lo ? 1 : 0) >>> 0);
  10043. };
  10044. jspb.arith.Int64.prototype.clone = function () {
  10045. return new jspb.arith.Int64(this.lo, this.hi);
  10046. };
  10047. jspb.arith.Int64.prototype.toString = function () {
  10048. var a = 0 != (this.hi & 2147483648),
  10049. b = new jspb.arith.UInt64(this.lo, this.hi);
  10050. a && (b = new jspb.arith.UInt64(0, 0).sub(b));
  10051. return (a ? "-" : "") + b.toString();
  10052. };
  10053. jspb.arith.Int64.fromString = function (a) {
  10054. var b = 0 < a.length && "-" == a[0];
  10055. b && (a = a.substring(1));
  10056. a = jspb.arith.UInt64.fromString(a);
  10057. if (null === a) return null;
  10058. b && (a = new jspb.arith.UInt64(0, 0).sub(a));
  10059. return new jspb.arith.Int64(a.lo, a.hi);
  10060. };
  10061. jspb.BinaryWriter = function () {
  10062. this.blocks_ = [];
  10063. this.totalLength_ = 0;
  10064. this.encoder_ = new jspb.BinaryEncoder();
  10065. this.bookmarks_ = [];
  10066. };
  10067. jspb.BinaryWriter.prototype.appendUint8Array_ = function (a) {
  10068. var b = this.encoder_.end();
  10069. this.blocks_.push(b);
  10070. this.blocks_.push(a);
  10071. this.totalLength_ += b.length + a.length;
  10072. };
  10073. jspb.BinaryWriter.prototype.beginDelimited_ = function (a) {
  10074. this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED);
  10075. a = this.encoder_.end();
  10076. this.blocks_.push(a);
  10077. this.totalLength_ += a.length;
  10078. a.push(this.totalLength_);
  10079. return a;
  10080. };
  10081. jspb.BinaryWriter.prototype.endDelimited_ = function (a) {
  10082. var b = a.pop();
  10083. b = this.totalLength_ + this.encoder_.length() - b;
  10084. for (jspb.asserts.assert(0 <= b); 127 < b;) {
  10085. a.push(b & 127 | 128), b >>>= 7, this.totalLength_++;
  10086. }
  10087. a.push(b);
  10088. this.totalLength_++;
  10089. };
  10090. jspb.BinaryWriter.prototype.writeSerializedMessage = function (a, b, c) {
  10091. this.appendUint8Array_(a.subarray(b, c));
  10092. };
  10093. jspb.BinaryWriter.prototype.maybeWriteSerializedMessage = function (a, b, c) {
  10094. null != a && null != b && null != c && this.writeSerializedMessage(a, b, c);
  10095. };
  10096. jspb.BinaryWriter.prototype.reset = function () {
  10097. this.blocks_ = [];
  10098. this.encoder_.end();
  10099. this.totalLength_ = 0;
  10100. this.bookmarks_ = [];
  10101. };
  10102. jspb.BinaryWriter.prototype.getResultBuffer = function () {
  10103. jspb.asserts.assert(0 == this.bookmarks_.length);
  10104. for (var a = new Uint8Array(this.totalLength_ + this.encoder_.length()), b = this.blocks_, c = b.length, d = 0, e = 0; e < c; e++) {
  10105. var f = b[e];
  10106. a.set(f, d);
  10107. d += f.length;
  10108. }
  10109. b = this.encoder_.end();
  10110. a.set(b, d);
  10111. d += b.length;
  10112. jspb.asserts.assert(d == a.length);
  10113. this.blocks_ = [a];
  10114. return a;
  10115. };
  10116. goog.exportProperty(jspb.BinaryWriter.prototype, "getResultBuffer", jspb.BinaryWriter.prototype.getResultBuffer);
  10117. jspb.BinaryWriter.prototype.getResultBase64String = function (a) {
  10118. return goog.crypt.base64.encodeByteArray(this.getResultBuffer(), a);
  10119. };
  10120. jspb.BinaryWriter.prototype.beginSubMessage = function (a) {
  10121. this.bookmarks_.push(this.beginDelimited_(a));
  10122. };
  10123. jspb.BinaryWriter.prototype.endSubMessage = function () {
  10124. jspb.asserts.assert(0 <= this.bookmarks_.length);
  10125. this.endDelimited_(this.bookmarks_.pop());
  10126. };
  10127. jspb.BinaryWriter.prototype.writeFieldHeader_ = function (a, b) {
  10128. jspb.asserts.assert(1 <= a && a == Math.floor(a));
  10129. this.encoder_.writeUnsignedVarint32(8 * a + b);
  10130. };
  10131. jspb.BinaryWriter.prototype.writeAny = function (a, b, c) {
  10132. var d = jspb.BinaryConstants.FieldType;
  10133. switch (a) {
  10134. case d.DOUBLE:
  10135. this.writeDouble(b, c);
  10136. break;
  10137. case d.FLOAT:
  10138. this.writeFloat(b, c);
  10139. break;
  10140. case d.INT64:
  10141. this.writeInt64(b, c);
  10142. break;
  10143. case d.UINT64:
  10144. this.writeUint64(b, c);
  10145. break;
  10146. case d.INT32:
  10147. this.writeInt32(b, c);
  10148. break;
  10149. case d.FIXED64:
  10150. this.writeFixed64(b, c);
  10151. break;
  10152. case d.FIXED32:
  10153. this.writeFixed32(b, c);
  10154. break;
  10155. case d.BOOL:
  10156. this.writeBool(b, c);
  10157. break;
  10158. case d.STRING:
  10159. this.writeString(b, c);
  10160. break;
  10161. case d.GROUP:
  10162. jspb.asserts.fail("Group field type not supported in writeAny()");
  10163. break;
  10164. case d.MESSAGE:
  10165. jspb.asserts.fail("Message field type not supported in writeAny()");
  10166. break;
  10167. case d.BYTES:
  10168. this.writeBytes(b, c);
  10169. break;
  10170. case d.UINT32:
  10171. this.writeUint32(b, c);
  10172. break;
  10173. case d.ENUM:
  10174. this.writeEnum(b, c);
  10175. break;
  10176. case d.SFIXED32:
  10177. this.writeSfixed32(b, c);
  10178. break;
  10179. case d.SFIXED64:
  10180. this.writeSfixed64(b, c);
  10181. break;
  10182. case d.SINT32:
  10183. this.writeSint32(b, c);
  10184. break;
  10185. case d.SINT64:
  10186. this.writeSint64(b, c);
  10187. break;
  10188. case d.FHASH64:
  10189. this.writeFixedHash64(b, c);
  10190. break;
  10191. case d.VHASH64:
  10192. this.writeVarintHash64(b, c);
  10193. break;
  10194. default:
  10195. jspb.asserts.fail("Invalid field type in writeAny()");
  10196. }
  10197. };
  10198. jspb.BinaryWriter.prototype.writeUnsignedVarint32_ = function (a, b) {
  10199. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeUnsignedVarint32(b));
  10200. };
  10201. jspb.BinaryWriter.prototype.writeSignedVarint32_ = function (a, b) {
  10202. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(b));
  10203. };
  10204. jspb.BinaryWriter.prototype.writeUnsignedVarint64_ = function (a, b) {
  10205. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeUnsignedVarint64(b));
  10206. };
  10207. jspb.BinaryWriter.prototype.writeSignedVarint64_ = function (a, b) {
  10208. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint64(b));
  10209. };
  10210. jspb.BinaryWriter.prototype.writeZigzagVarint32_ = function (a, b) {
  10211. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint32(b));
  10212. };
  10213. jspb.BinaryWriter.prototype.writeZigzagVarint64_ = function (a, b) {
  10214. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint64(b));
  10215. };
  10216. jspb.BinaryWriter.prototype.writeZigzagVarint64String_ = function (a, b) {
  10217. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint64String(b));
  10218. };
  10219. jspb.BinaryWriter.prototype.writeZigzagVarintHash64_ = function (a, b) {
  10220. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarintHash64(b));
  10221. };
  10222. jspb.BinaryWriter.prototype.writeInt32 = function (a, b) {
  10223. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeSignedVarint32_(a, b));
  10224. };
  10225. goog.exportProperty(jspb.BinaryWriter.prototype, "writeInt32", jspb.BinaryWriter.prototype.writeInt32);
  10226. jspb.BinaryWriter.prototype.writeInt32String = function (a, b) {
  10227. null != b && (b = parseInt(b, 10), jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeSignedVarint32_(a, b));
  10228. };
  10229. jspb.BinaryWriter.prototype.writeInt64 = function (a, b) {
  10230. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeSignedVarint64_(a, b));
  10231. };
  10232. goog.exportProperty(jspb.BinaryWriter.prototype, "writeInt64", jspb.BinaryWriter.prototype.writeInt64);
  10233. jspb.BinaryWriter.prototype.writeInt64String = function (a, b) {
  10234. null != b && (b = jspb.arith.Int64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSplitVarint64(b.lo, b.hi));
  10235. };
  10236. jspb.BinaryWriter.prototype.writeUint32 = function (a, b) {
  10237. null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeUnsignedVarint32_(a, b));
  10238. };
  10239. goog.exportProperty(jspb.BinaryWriter.prototype, "writeUint32", jspb.BinaryWriter.prototype.writeUint32);
  10240. jspb.BinaryWriter.prototype.writeUint32String = function (a, b) {
  10241. null != b && (b = parseInt(b, 10), jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeUnsignedVarint32_(a, b));
  10242. };
  10243. jspb.BinaryWriter.prototype.writeUint64 = function (a, b) {
  10244. null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_64), this.writeUnsignedVarint64_(a, b));
  10245. };
  10246. goog.exportProperty(jspb.BinaryWriter.prototype, "writeUint64", jspb.BinaryWriter.prototype.writeUint64);
  10247. jspb.BinaryWriter.prototype.writeUint64String = function (a, b) {
  10248. null != b && (b = jspb.arith.UInt64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSplitVarint64(b.lo, b.hi));
  10249. };
  10250. jspb.BinaryWriter.prototype.writeSint32 = function (a, b) {
  10251. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeZigzagVarint32_(a, b));
  10252. };
  10253. goog.exportProperty(jspb.BinaryWriter.prototype, "writeSint32", jspb.BinaryWriter.prototype.writeSint32);
  10254. jspb.BinaryWriter.prototype.writeSint64 = function (a, b) {
  10255. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeZigzagVarint64_(a, b));
  10256. };
  10257. goog.exportProperty(jspb.BinaryWriter.prototype, "writeSint64", jspb.BinaryWriter.prototype.writeSint64);
  10258. jspb.BinaryWriter.prototype.writeSintHash64 = function (a, b) {
  10259. null != b && this.writeZigzagVarintHash64_(a, b);
  10260. };
  10261. jspb.BinaryWriter.prototype.writeSint64String = function (a, b) {
  10262. null != b && this.writeZigzagVarint64String_(a, b);
  10263. };
  10264. jspb.BinaryWriter.prototype.writeFixed32 = function (a, b) {
  10265. null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeUint32(b));
  10266. };
  10267. goog.exportProperty(jspb.BinaryWriter.prototype, "writeFixed32", jspb.BinaryWriter.prototype.writeFixed32);
  10268. jspb.BinaryWriter.prototype.writeFixed64 = function (a, b) {
  10269. null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_64), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeUint64(b));
  10270. };
  10271. goog.exportProperty(jspb.BinaryWriter.prototype, "writeFixed64", jspb.BinaryWriter.prototype.writeFixed64);
  10272. jspb.BinaryWriter.prototype.writeFixed64String = function (a, b) {
  10273. null != b && (b = jspb.arith.UInt64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeSplitFixed64(b.lo, b.hi));
  10274. };
  10275. jspb.BinaryWriter.prototype.writeSfixed32 = function (a, b) {
  10276. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeInt32(b));
  10277. };
  10278. goog.exportProperty(jspb.BinaryWriter.prototype, "writeSfixed32", jspb.BinaryWriter.prototype.writeSfixed32);
  10279. jspb.BinaryWriter.prototype.writeSfixed64 = function (a, b) {
  10280. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeInt64(b));
  10281. };
  10282. goog.exportProperty(jspb.BinaryWriter.prototype, "writeSfixed64", jspb.BinaryWriter.prototype.writeSfixed64);
  10283. jspb.BinaryWriter.prototype.writeSfixed64String = function (a, b) {
  10284. null != b && (b = jspb.arith.Int64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeSplitFixed64(b.lo, b.hi));
  10285. };
  10286. jspb.BinaryWriter.prototype.writeFloat = function (a, b) {
  10287. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeFloat(b));
  10288. };
  10289. goog.exportProperty(jspb.BinaryWriter.prototype, "writeFloat", jspb.BinaryWriter.prototype.writeFloat);
  10290. jspb.BinaryWriter.prototype.writeDouble = function (a, b) {
  10291. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeDouble(b));
  10292. };
  10293. goog.exportProperty(jspb.BinaryWriter.prototype, "writeDouble", jspb.BinaryWriter.prototype.writeDouble);
  10294. jspb.BinaryWriter.prototype.writeBool = function (a, b) {
  10295. null != b && (jspb.asserts.assert("boolean" === typeof b || "number" === typeof b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeBool(b));
  10296. };
  10297. goog.exportProperty(jspb.BinaryWriter.prototype, "writeBool", jspb.BinaryWriter.prototype.writeBool);
  10298. jspb.BinaryWriter.prototype.writeEnum = function (a, b) {
  10299. null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(b));
  10300. };
  10301. goog.exportProperty(jspb.BinaryWriter.prototype, "writeEnum", jspb.BinaryWriter.prototype.writeEnum);
  10302. jspb.BinaryWriter.prototype.writeString = function (a, b) {
  10303. null != b && (a = this.beginDelimited_(a), this.encoder_.writeString(b), this.endDelimited_(a));
  10304. };
  10305. goog.exportProperty(jspb.BinaryWriter.prototype, "writeString", jspb.BinaryWriter.prototype.writeString);
  10306. jspb.BinaryWriter.prototype.writeBytes = function (a, b) {
  10307. null != b && (b = jspb.utils.byteSourceToUint8Array(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(b.length), this.appendUint8Array_(b));
  10308. };
  10309. goog.exportProperty(jspb.BinaryWriter.prototype, "writeBytes", jspb.BinaryWriter.prototype.writeBytes);
  10310. jspb.BinaryWriter.prototype.writeMessage = function (a, b, c) {
  10311. null != b && (a = this.beginDelimited_(a), c(b, this), this.endDelimited_(a));
  10312. };
  10313. goog.exportProperty(jspb.BinaryWriter.prototype, "writeMessage", jspb.BinaryWriter.prototype.writeMessage);
  10314. jspb.BinaryWriter.prototype.writeMessageSet = function (a, b, c) {
  10315. null != b && (this.writeFieldHeader_(1, jspb.BinaryConstants.WireType.START_GROUP), this.writeFieldHeader_(2, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(a), a = this.beginDelimited_(3), c(b, this), this.endDelimited_(a), this.writeFieldHeader_(1, jspb.BinaryConstants.WireType.END_GROUP));
  10316. };
  10317. jspb.BinaryWriter.prototype.writeGroup = function (a, b, c) {
  10318. null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.START_GROUP), c(b, this), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.END_GROUP));
  10319. };
  10320. goog.exportProperty(jspb.BinaryWriter.prototype, "writeGroup", jspb.BinaryWriter.prototype.writeGroup);
  10321. jspb.BinaryWriter.prototype.writeFixedHash64 = function (a, b) {
  10322. null != b && (jspb.asserts.assert(8 == b.length), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeFixedHash64(b));
  10323. };
  10324. jspb.BinaryWriter.prototype.writeVarintHash64 = function (a, b) {
  10325. null != b && (jspb.asserts.assert(8 == b.length), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeVarintHash64(b));
  10326. };
  10327. jspb.BinaryWriter.prototype.writeSplitFixed64 = function (a, b, c) {
  10328. this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64);
  10329. this.encoder_.writeSplitFixed64(b, c);
  10330. };
  10331. jspb.BinaryWriter.prototype.writeSplitVarint64 = function (a, b, c) {
  10332. this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT);
  10333. this.encoder_.writeSplitVarint64(b, c);
  10334. };
  10335. jspb.BinaryWriter.prototype.writeSplitZigzagVarint64 = function (a, b, c) {
  10336. this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT);
  10337. var d = this.encoder_;
  10338. jspb.utils.toZigzag64(b, c, function (a, b) {
  10339. d.writeSplitVarint64(a >>> 0, b >>> 0);
  10340. });
  10341. };
  10342. jspb.BinaryWriter.prototype.writeRepeatedInt32 = function (a, b) {
  10343. if (null != b) for (var c = 0; c < b.length; c++) {
  10344. this.writeSignedVarint32_(a, b[c]);
  10345. }
  10346. };
  10347. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedInt32", jspb.BinaryWriter.prototype.writeRepeatedInt32);
  10348. jspb.BinaryWriter.prototype.writeRepeatedInt32String = function (a, b) {
  10349. if (null != b) for (var c = 0; c < b.length; c++) {
  10350. this.writeInt32String(a, b[c]);
  10351. }
  10352. };
  10353. jspb.BinaryWriter.prototype.writeRepeatedInt64 = function (a, b) {
  10354. if (null != b) for (var c = 0; c < b.length; c++) {
  10355. this.writeSignedVarint64_(a, b[c]);
  10356. }
  10357. };
  10358. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedInt64", jspb.BinaryWriter.prototype.writeRepeatedInt64);
  10359. jspb.BinaryWriter.prototype.writeRepeatedSplitFixed64 = function (a, b, c, d) {
  10360. if (null != b) for (var e = 0; e < b.length; e++) {
  10361. this.writeSplitFixed64(a, c(b[e]), d(b[e]));
  10362. }
  10363. };
  10364. jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64 = function (a, b, c, d) {
  10365. if (null != b) for (var e = 0; e < b.length; e++) {
  10366. this.writeSplitVarint64(a, c(b[e]), d(b[e]));
  10367. }
  10368. };
  10369. jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64 = function (a, b, c, d) {
  10370. if (null != b) for (var e = 0; e < b.length; e++) {
  10371. this.writeSplitZigzagVarint64(a, c(b[e]), d(b[e]));
  10372. }
  10373. };
  10374. jspb.BinaryWriter.prototype.writeRepeatedInt64String = function (a, b) {
  10375. if (null != b) for (var c = 0; c < b.length; c++) {
  10376. this.writeInt64String(a, b[c]);
  10377. }
  10378. };
  10379. jspb.BinaryWriter.prototype.writeRepeatedUint32 = function (a, b) {
  10380. if (null != b) for (var c = 0; c < b.length; c++) {
  10381. this.writeUnsignedVarint32_(a, b[c]);
  10382. }
  10383. };
  10384. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedUint32", jspb.BinaryWriter.prototype.writeRepeatedUint32);
  10385. jspb.BinaryWriter.prototype.writeRepeatedUint32String = function (a, b) {
  10386. if (null != b) for (var c = 0; c < b.length; c++) {
  10387. this.writeUint32String(a, b[c]);
  10388. }
  10389. };
  10390. jspb.BinaryWriter.prototype.writeRepeatedUint64 = function (a, b) {
  10391. if (null != b) for (var c = 0; c < b.length; c++) {
  10392. this.writeUnsignedVarint64_(a, b[c]);
  10393. }
  10394. };
  10395. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedUint64", jspb.BinaryWriter.prototype.writeRepeatedUint64);
  10396. jspb.BinaryWriter.prototype.writeRepeatedUint64String = function (a, b) {
  10397. if (null != b) for (var c = 0; c < b.length; c++) {
  10398. this.writeUint64String(a, b[c]);
  10399. }
  10400. };
  10401. jspb.BinaryWriter.prototype.writeRepeatedSint32 = function (a, b) {
  10402. if (null != b) for (var c = 0; c < b.length; c++) {
  10403. this.writeZigzagVarint32_(a, b[c]);
  10404. }
  10405. };
  10406. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSint32", jspb.BinaryWriter.prototype.writeRepeatedSint32);
  10407. jspb.BinaryWriter.prototype.writeRepeatedSint64 = function (a, b) {
  10408. if (null != b) for (var c = 0; c < b.length; c++) {
  10409. this.writeZigzagVarint64_(a, b[c]);
  10410. }
  10411. };
  10412. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSint64", jspb.BinaryWriter.prototype.writeRepeatedSint64);
  10413. jspb.BinaryWriter.prototype.writeRepeatedSint64String = function (a, b) {
  10414. if (null != b) for (var c = 0; c < b.length; c++) {
  10415. this.writeZigzagVarint64String_(a, b[c]);
  10416. }
  10417. };
  10418. jspb.BinaryWriter.prototype.writeRepeatedSintHash64 = function (a, b) {
  10419. if (null != b) for (var c = 0; c < b.length; c++) {
  10420. this.writeZigzagVarintHash64_(a, b[c]);
  10421. }
  10422. };
  10423. jspb.BinaryWriter.prototype.writeRepeatedFixed32 = function (a, b) {
  10424. if (null != b) for (var c = 0; c < b.length; c++) {
  10425. this.writeFixed32(a, b[c]);
  10426. }
  10427. };
  10428. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed32", jspb.BinaryWriter.prototype.writeRepeatedFixed32);
  10429. jspb.BinaryWriter.prototype.writeRepeatedFixed64 = function (a, b) {
  10430. if (null != b) for (var c = 0; c < b.length; c++) {
  10431. this.writeFixed64(a, b[c]);
  10432. }
  10433. };
  10434. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed64", jspb.BinaryWriter.prototype.writeRepeatedFixed64);
  10435. jspb.BinaryWriter.prototype.writeRepeatedFixed64String = function (a, b) {
  10436. if (null != b) for (var c = 0; c < b.length; c++) {
  10437. this.writeFixed64String(a, b[c]);
  10438. }
  10439. };
  10440. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed64String", jspb.BinaryWriter.prototype.writeRepeatedFixed64String);
  10441. jspb.BinaryWriter.prototype.writeRepeatedSfixed32 = function (a, b) {
  10442. if (null != b) for (var c = 0; c < b.length; c++) {
  10443. this.writeSfixed32(a, b[c]);
  10444. }
  10445. };
  10446. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSfixed32", jspb.BinaryWriter.prototype.writeRepeatedSfixed32);
  10447. jspb.BinaryWriter.prototype.writeRepeatedSfixed64 = function (a, b) {
  10448. if (null != b) for (var c = 0; c < b.length; c++) {
  10449. this.writeSfixed64(a, b[c]);
  10450. }
  10451. };
  10452. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSfixed64", jspb.BinaryWriter.prototype.writeRepeatedSfixed64);
  10453. jspb.BinaryWriter.prototype.writeRepeatedSfixed64String = function (a, b) {
  10454. if (null != b) for (var c = 0; c < b.length; c++) {
  10455. this.writeSfixed64String(a, b[c]);
  10456. }
  10457. };
  10458. jspb.BinaryWriter.prototype.writeRepeatedFloat = function (a, b) {
  10459. if (null != b) for (var c = 0; c < b.length; c++) {
  10460. this.writeFloat(a, b[c]);
  10461. }
  10462. };
  10463. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFloat", jspb.BinaryWriter.prototype.writeRepeatedFloat);
  10464. jspb.BinaryWriter.prototype.writeRepeatedDouble = function (a, b) {
  10465. if (null != b) for (var c = 0; c < b.length; c++) {
  10466. this.writeDouble(a, b[c]);
  10467. }
  10468. };
  10469. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedDouble", jspb.BinaryWriter.prototype.writeRepeatedDouble);
  10470. jspb.BinaryWriter.prototype.writeRepeatedBool = function (a, b) {
  10471. if (null != b) for (var c = 0; c < b.length; c++) {
  10472. this.writeBool(a, b[c]);
  10473. }
  10474. };
  10475. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedBool", jspb.BinaryWriter.prototype.writeRepeatedBool);
  10476. jspb.BinaryWriter.prototype.writeRepeatedEnum = function (a, b) {
  10477. if (null != b) for (var c = 0; c < b.length; c++) {
  10478. this.writeEnum(a, b[c]);
  10479. }
  10480. };
  10481. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedEnum", jspb.BinaryWriter.prototype.writeRepeatedEnum);
  10482. jspb.BinaryWriter.prototype.writeRepeatedString = function (a, b) {
  10483. if (null != b) for (var c = 0; c < b.length; c++) {
  10484. this.writeString(a, b[c]);
  10485. }
  10486. };
  10487. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedString", jspb.BinaryWriter.prototype.writeRepeatedString);
  10488. jspb.BinaryWriter.prototype.writeRepeatedBytes = function (a, b) {
  10489. if (null != b) for (var c = 0; c < b.length; c++) {
  10490. this.writeBytes(a, b[c]);
  10491. }
  10492. };
  10493. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedBytes", jspb.BinaryWriter.prototype.writeRepeatedBytes);
  10494. jspb.BinaryWriter.prototype.writeRepeatedMessage = function (a, b, c) {
  10495. if (null != b) for (var d = 0; d < b.length; d++) {
  10496. var e = this.beginDelimited_(a);
  10497. c(b[d], this);
  10498. this.endDelimited_(e);
  10499. }
  10500. };
  10501. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedMessage", jspb.BinaryWriter.prototype.writeRepeatedMessage);
  10502. jspb.BinaryWriter.prototype.writeRepeatedGroup = function (a, b, c) {
  10503. if (null != b) for (var d = 0; d < b.length; d++) {
  10504. this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.START_GROUP), c(b[d], this), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.END_GROUP);
  10505. }
  10506. };
  10507. goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedGroup", jspb.BinaryWriter.prototype.writeRepeatedGroup);
  10508. jspb.BinaryWriter.prototype.writeRepeatedFixedHash64 = function (a, b) {
  10509. if (null != b) for (var c = 0; c < b.length; c++) {
  10510. this.writeFixedHash64(a, b[c]);
  10511. }
  10512. };
  10513. jspb.BinaryWriter.prototype.writeRepeatedVarintHash64 = function (a, b) {
  10514. if (null != b) for (var c = 0; c < b.length; c++) {
  10515. this.writeVarintHash64(a, b[c]);
  10516. }
  10517. };
  10518. jspb.BinaryWriter.prototype.writePackedInt32 = function (a, b) {
  10519. if (null != b && b.length) {
  10520. a = this.beginDelimited_(a);
  10521. for (var c = 0; c < b.length; c++) {
  10522. this.encoder_.writeSignedVarint32(b[c]);
  10523. }
  10524. this.endDelimited_(a);
  10525. }
  10526. };
  10527. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedInt32", jspb.BinaryWriter.prototype.writePackedInt32);
  10528. jspb.BinaryWriter.prototype.writePackedInt32String = function (a, b) {
  10529. if (null != b && b.length) {
  10530. a = this.beginDelimited_(a);
  10531. for (var c = 0; c < b.length; c++) {
  10532. this.encoder_.writeSignedVarint32(parseInt(b[c], 10));
  10533. }
  10534. this.endDelimited_(a);
  10535. }
  10536. };
  10537. jspb.BinaryWriter.prototype.writePackedInt64 = function (a, b) {
  10538. if (null != b && b.length) {
  10539. a = this.beginDelimited_(a);
  10540. for (var c = 0; c < b.length; c++) {
  10541. this.encoder_.writeSignedVarint64(b[c]);
  10542. }
  10543. this.endDelimited_(a);
  10544. }
  10545. };
  10546. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedInt64", jspb.BinaryWriter.prototype.writePackedInt64);
  10547. jspb.BinaryWriter.prototype.writePackedSplitFixed64 = function (a, b, c, d) {
  10548. if (null != b) {
  10549. a = this.beginDelimited_(a);
  10550. for (var e = 0; e < b.length; e++) {
  10551. this.encoder_.writeSplitFixed64(c(b[e]), d(b[e]));
  10552. }
  10553. this.endDelimited_(a);
  10554. }
  10555. };
  10556. jspb.BinaryWriter.prototype.writePackedSplitVarint64 = function (a, b, c, d) {
  10557. if (null != b) {
  10558. a = this.beginDelimited_(a);
  10559. for (var e = 0; e < b.length; e++) {
  10560. this.encoder_.writeSplitVarint64(c(b[e]), d(b[e]));
  10561. }
  10562. this.endDelimited_(a);
  10563. }
  10564. };
  10565. jspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64 = function (a, b, c, d) {
  10566. if (null != b) {
  10567. a = this.beginDelimited_(a);
  10568. for (var e = this.encoder_, f = 0; f < b.length; f++) {
  10569. jspb.utils.toZigzag64(c(b[f]), d(b[f]), function (a, b) {
  10570. e.writeSplitVarint64(a >>> 0, b >>> 0);
  10571. });
  10572. }
  10573. this.endDelimited_(a);
  10574. }
  10575. };
  10576. jspb.BinaryWriter.prototype.writePackedInt64String = function (a, b) {
  10577. if (null != b && b.length) {
  10578. a = this.beginDelimited_(a);
  10579. for (var c = 0; c < b.length; c++) {
  10580. var d = jspb.arith.Int64.fromString(b[c]);
  10581. this.encoder_.writeSplitVarint64(d.lo, d.hi);
  10582. }
  10583. this.endDelimited_(a);
  10584. }
  10585. };
  10586. jspb.BinaryWriter.prototype.writePackedUint32 = function (a, b) {
  10587. if (null != b && b.length) {
  10588. a = this.beginDelimited_(a);
  10589. for (var c = 0; c < b.length; c++) {
  10590. this.encoder_.writeUnsignedVarint32(b[c]);
  10591. }
  10592. this.endDelimited_(a);
  10593. }
  10594. };
  10595. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedUint32", jspb.BinaryWriter.prototype.writePackedUint32);
  10596. jspb.BinaryWriter.prototype.writePackedUint32String = function (a, b) {
  10597. if (null != b && b.length) {
  10598. a = this.beginDelimited_(a);
  10599. for (var c = 0; c < b.length; c++) {
  10600. this.encoder_.writeUnsignedVarint32(parseInt(b[c], 10));
  10601. }
  10602. this.endDelimited_(a);
  10603. }
  10604. };
  10605. jspb.BinaryWriter.prototype.writePackedUint64 = function (a, b) {
  10606. if (null != b && b.length) {
  10607. a = this.beginDelimited_(a);
  10608. for (var c = 0; c < b.length; c++) {
  10609. this.encoder_.writeUnsignedVarint64(b[c]);
  10610. }
  10611. this.endDelimited_(a);
  10612. }
  10613. };
  10614. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedUint64", jspb.BinaryWriter.prototype.writePackedUint64);
  10615. jspb.BinaryWriter.prototype.writePackedUint64String = function (a, b) {
  10616. if (null != b && b.length) {
  10617. a = this.beginDelimited_(a);
  10618. for (var c = 0; c < b.length; c++) {
  10619. var d = jspb.arith.UInt64.fromString(b[c]);
  10620. this.encoder_.writeSplitVarint64(d.lo, d.hi);
  10621. }
  10622. this.endDelimited_(a);
  10623. }
  10624. };
  10625. jspb.BinaryWriter.prototype.writePackedSint32 = function (a, b) {
  10626. if (null != b && b.length) {
  10627. a = this.beginDelimited_(a);
  10628. for (var c = 0; c < b.length; c++) {
  10629. this.encoder_.writeZigzagVarint32(b[c]);
  10630. }
  10631. this.endDelimited_(a);
  10632. }
  10633. };
  10634. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSint32", jspb.BinaryWriter.prototype.writePackedSint32);
  10635. jspb.BinaryWriter.prototype.writePackedSint64 = function (a, b) {
  10636. if (null != b && b.length) {
  10637. a = this.beginDelimited_(a);
  10638. for (var c = 0; c < b.length; c++) {
  10639. this.encoder_.writeZigzagVarint64(b[c]);
  10640. }
  10641. this.endDelimited_(a);
  10642. }
  10643. };
  10644. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSint64", jspb.BinaryWriter.prototype.writePackedSint64);
  10645. jspb.BinaryWriter.prototype.writePackedSint64String = function (a, b) {
  10646. if (null != b && b.length) {
  10647. a = this.beginDelimited_(a);
  10648. for (var c = 0; c < b.length; c++) {
  10649. this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(b[c]));
  10650. }
  10651. this.endDelimited_(a);
  10652. }
  10653. };
  10654. jspb.BinaryWriter.prototype.writePackedSintHash64 = function (a, b) {
  10655. if (null != b && b.length) {
  10656. a = this.beginDelimited_(a);
  10657. for (var c = 0; c < b.length; c++) {
  10658. this.encoder_.writeZigzagVarintHash64(b[c]);
  10659. }
  10660. this.endDelimited_(a);
  10661. }
  10662. };
  10663. jspb.BinaryWriter.prototype.writePackedFixed32 = function (a, b) {
  10664. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) {
  10665. this.encoder_.writeUint32(b[a]);
  10666. }
  10667. };
  10668. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFixed32", jspb.BinaryWriter.prototype.writePackedFixed32);
  10669. jspb.BinaryWriter.prototype.writePackedFixed64 = function (a, b) {
  10670. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
  10671. this.encoder_.writeUint64(b[a]);
  10672. }
  10673. };
  10674. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFixed64", jspb.BinaryWriter.prototype.writePackedFixed64);
  10675. jspb.BinaryWriter.prototype.writePackedFixed64String = function (a, b) {
  10676. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
  10677. var c = jspb.arith.UInt64.fromString(b[a]);
  10678. this.encoder_.writeSplitFixed64(c.lo, c.hi);
  10679. }
  10680. };
  10681. jspb.BinaryWriter.prototype.writePackedSfixed32 = function (a, b) {
  10682. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) {
  10683. this.encoder_.writeInt32(b[a]);
  10684. }
  10685. };
  10686. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSfixed32", jspb.BinaryWriter.prototype.writePackedSfixed32);
  10687. jspb.BinaryWriter.prototype.writePackedSfixed64 = function (a, b) {
  10688. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
  10689. this.encoder_.writeInt64(b[a]);
  10690. }
  10691. };
  10692. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSfixed64", jspb.BinaryWriter.prototype.writePackedSfixed64);
  10693. jspb.BinaryWriter.prototype.writePackedSfixed64String = function (a, b) {
  10694. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
  10695. this.encoder_.writeInt64String(b[a]);
  10696. }
  10697. };
  10698. jspb.BinaryWriter.prototype.writePackedFloat = function (a, b) {
  10699. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) {
  10700. this.encoder_.writeFloat(b[a]);
  10701. }
  10702. };
  10703. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFloat", jspb.BinaryWriter.prototype.writePackedFloat);
  10704. jspb.BinaryWriter.prototype.writePackedDouble = function (a, b) {
  10705. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
  10706. this.encoder_.writeDouble(b[a]);
  10707. }
  10708. };
  10709. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedDouble", jspb.BinaryWriter.prototype.writePackedDouble);
  10710. jspb.BinaryWriter.prototype.writePackedBool = function (a, b) {
  10711. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(b.length), a = 0; a < b.length; a++) {
  10712. this.encoder_.writeBool(b[a]);
  10713. }
  10714. };
  10715. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedBool", jspb.BinaryWriter.prototype.writePackedBool);
  10716. jspb.BinaryWriter.prototype.writePackedEnum = function (a, b) {
  10717. if (null != b && b.length) {
  10718. a = this.beginDelimited_(a);
  10719. for (var c = 0; c < b.length; c++) {
  10720. this.encoder_.writeEnum(b[c]);
  10721. }
  10722. this.endDelimited_(a);
  10723. }
  10724. };
  10725. goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedEnum", jspb.BinaryWriter.prototype.writePackedEnum);
  10726. jspb.BinaryWriter.prototype.writePackedFixedHash64 = function (a, b) {
  10727. if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
  10728. this.encoder_.writeFixedHash64(b[a]);
  10729. }
  10730. };
  10731. jspb.BinaryWriter.prototype.writePackedVarintHash64 = function (a, b) {
  10732. if (null != b && b.length) {
  10733. a = this.beginDelimited_(a);
  10734. for (var c = 0; c < b.length; c++) {
  10735. this.encoder_.writeVarintHash64(b[c]);
  10736. }
  10737. this.endDelimited_(a);
  10738. }
  10739. };
  10740. jspb.Map = function (a, b) {
  10741. this.arr_ = a;
  10742. this.valueCtor_ = b;
  10743. this.map_ = {};
  10744. this.arrClean = !0;
  10745. 0 < this.arr_.length && this.loadFromArray_();
  10746. };
  10747. goog.exportSymbol("jspb.Map", jspb.Map);
  10748. jspb.Map.prototype.loadFromArray_ = function () {
  10749. for (var a = 0; a < this.arr_.length; a++) {
  10750. var b = this.arr_[a],
  10751. c = b[0];
  10752. this.map_[c.toString()] = new jspb.Map.Entry_(c, b[1]);
  10753. }
  10754. this.arrClean = !0;
  10755. };
  10756. jspb.Map.prototype.toArray = function () {
  10757. if (this.arrClean) {
  10758. if (this.valueCtor_) {
  10759. var a = this.map_,
  10760. b;
  10761. for (b in a) {
  10762. if (Object.prototype.hasOwnProperty.call(a, b)) {
  10763. var c = a[b].valueWrapper;
  10764. c && c.toArray();
  10765. }
  10766. }
  10767. }
  10768. } else {
  10769. this.arr_.length = 0;
  10770. a = this.stringKeys_();
  10771. a.sort();
  10772. for (b = 0; b < a.length; b++) {
  10773. var d = this.map_[a[b]];
  10774. (c = d.valueWrapper) && c.toArray();
  10775. this.arr_.push([d.key, d.value]);
  10776. }
  10777. this.arrClean = !0;
  10778. }
  10779. return this.arr_;
  10780. };
  10781. goog.exportProperty(jspb.Map.prototype, "toArray", jspb.Map.prototype.toArray);
  10782. jspb.Map.prototype.toObject = function (a, b) {
  10783. for (var c = this.toArray(), d = [], e = 0; e < c.length; e++) {
  10784. var f = this.map_[c[e][0].toString()];
  10785. this.wrapEntry_(f);
  10786. var g = f.valueWrapper;
  10787. g ? (jspb.asserts.assert(b), d.push([f.key, b(a, g)])) : d.push([f.key, f.value]);
  10788. }
  10789. return d;
  10790. };
  10791. goog.exportProperty(jspb.Map.prototype, "toObject", jspb.Map.prototype.toObject);
  10792. jspb.Map.fromObject = function (a, b, c) {
  10793. b = new jspb.Map([], b);
  10794. for (var d = 0; d < a.length; d++) {
  10795. var e = a[d][0],
  10796. f = c(a[d][1]);
  10797. b.set(e, f);
  10798. }
  10799. return b;
  10800. };
  10801. goog.exportProperty(jspb.Map, "fromObject", jspb.Map.fromObject);
  10802. jspb.Map.ArrayIteratorIterable_ = function (a) {
  10803. this.idx_ = 0;
  10804. this.arr_ = a;
  10805. };
  10806. jspb.Map.ArrayIteratorIterable_.prototype.next = function () {
  10807. return this.idx_ < this.arr_.length ? {
  10808. done: !1,
  10809. value: this.arr_[this.idx_++]
  10810. } : {
  10811. done: !0,
  10812. value: void 0
  10813. };
  10814. };
  10815. "undefined" != typeof Symbol && (jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator] = function () {
  10816. return this;
  10817. });
  10818. jspb.Map.prototype.getLength = function () {
  10819. return this.stringKeys_().length;
  10820. };
  10821. goog.exportProperty(jspb.Map.prototype, "getLength", jspb.Map.prototype.getLength);
  10822. jspb.Map.prototype.clear = function () {
  10823. this.map_ = {};
  10824. this.arrClean = !1;
  10825. };
  10826. goog.exportProperty(jspb.Map.prototype, "clear", jspb.Map.prototype.clear);
  10827. jspb.Map.prototype.del = function (a) {
  10828. a = a.toString();
  10829. var b = this.map_.hasOwnProperty(a);
  10830. delete this.map_[a];
  10831. this.arrClean = !1;
  10832. return b;
  10833. };
  10834. goog.exportProperty(jspb.Map.prototype, "del", jspb.Map.prototype.del);
  10835. jspb.Map.prototype.getEntryList = function () {
  10836. var a = [],
  10837. b = this.stringKeys_();
  10838. b.sort();
  10839. for (var c = 0; c < b.length; c++) {
  10840. var d = this.map_[b[c]];
  10841. a.push([d.key, d.value]);
  10842. }
  10843. return a;
  10844. };
  10845. goog.exportProperty(jspb.Map.prototype, "getEntryList", jspb.Map.prototype.getEntryList);
  10846. jspb.Map.prototype.entries = function () {
  10847. var a = [],
  10848. b = this.stringKeys_();
  10849. b.sort();
  10850. for (var c = 0; c < b.length; c++) {
  10851. var d = this.map_[b[c]];
  10852. a.push([d.key, this.wrapEntry_(d)]);
  10853. }
  10854. return new jspb.Map.ArrayIteratorIterable_(a);
  10855. };
  10856. goog.exportProperty(jspb.Map.prototype, "entries", jspb.Map.prototype.entries);
  10857. jspb.Map.prototype.keys = function () {
  10858. var a = [],
  10859. b = this.stringKeys_();
  10860. b.sort();
  10861. for (var c = 0; c < b.length; c++) {
  10862. a.push(this.map_[b[c]].key);
  10863. }
  10864. return new jspb.Map.ArrayIteratorIterable_(a);
  10865. };
  10866. goog.exportProperty(jspb.Map.prototype, "keys", jspb.Map.prototype.keys);
  10867. jspb.Map.prototype.values = function () {
  10868. var a = [],
  10869. b = this.stringKeys_();
  10870. b.sort();
  10871. for (var c = 0; c < b.length; c++) {
  10872. a.push(this.wrapEntry_(this.map_[b[c]]));
  10873. }
  10874. return new jspb.Map.ArrayIteratorIterable_(a);
  10875. };
  10876. goog.exportProperty(jspb.Map.prototype, "values", jspb.Map.prototype.values);
  10877. jspb.Map.prototype.forEach = function (a, b) {
  10878. var c = this.stringKeys_();
  10879. c.sort();
  10880. for (var d = 0; d < c.length; d++) {
  10881. var e = this.map_[c[d]];
  10882. a.call(b, this.wrapEntry_(e), e.key, this);
  10883. }
  10884. };
  10885. goog.exportProperty(jspb.Map.prototype, "forEach", jspb.Map.prototype.forEach);
  10886. jspb.Map.prototype.set = function (a, b) {
  10887. var c = new jspb.Map.Entry_(a);
  10888. this.valueCtor_ ? (c.valueWrapper = b, c.value = b.toArray()) : c.value = b;
  10889. this.map_[a.toString()] = c;
  10890. this.arrClean = !1;
  10891. return this;
  10892. };
  10893. goog.exportProperty(jspb.Map.prototype, "set", jspb.Map.prototype.set);
  10894. jspb.Map.prototype.wrapEntry_ = function (a) {
  10895. return this.valueCtor_ ? (a.valueWrapper || (a.valueWrapper = new this.valueCtor_(a.value)), a.valueWrapper) : a.value;
  10896. };
  10897. jspb.Map.prototype.get = function (a) {
  10898. if (a = this.map_[a.toString()]) return this.wrapEntry_(a);
  10899. };
  10900. goog.exportProperty(jspb.Map.prototype, "get", jspb.Map.prototype.get);
  10901. jspb.Map.prototype.has = function (a) {
  10902. return a.toString() in this.map_;
  10903. };
  10904. goog.exportProperty(jspb.Map.prototype, "has", jspb.Map.prototype.has);
  10905. jspb.Map.prototype.serializeBinary = function (a, b, c, d, e) {
  10906. var f = this.stringKeys_();
  10907. f.sort();
  10908. for (var g = 0; g < f.length; g++) {
  10909. var h = this.map_[f[g]];
  10910. b.beginSubMessage(a);
  10911. c.call(b, 1, h.key);
  10912. this.valueCtor_ ? d.call(b, 2, this.wrapEntry_(h), e) : d.call(b, 2, h.value);
  10913. b.endSubMessage();
  10914. }
  10915. };
  10916. goog.exportProperty(jspb.Map.prototype, "serializeBinary", jspb.Map.prototype.serializeBinary);
  10917. jspb.Map.deserializeBinary = function (a, b, c, d, e, f, g) {
  10918. for (; b.nextField() && !b.isEndGroup();) {
  10919. var h = b.getFieldNumber();
  10920. 1 == h ? f = c.call(b) : 2 == h && (a.valueCtor_ ? (jspb.asserts.assert(e), g || (g = new a.valueCtor_()), d.call(b, g, e)) : g = d.call(b));
  10921. }
  10922. jspb.asserts.assert(void 0 != f);
  10923. jspb.asserts.assert(void 0 != g);
  10924. a.set(f, g);
  10925. };
  10926. goog.exportProperty(jspb.Map, "deserializeBinary", jspb.Map.deserializeBinary);
  10927. jspb.Map.prototype.stringKeys_ = function () {
  10928. var a = this.map_,
  10929. b = [],
  10930. c;
  10931. for (c in a) {
  10932. Object.prototype.hasOwnProperty.call(a, c) && b.push(c);
  10933. }
  10934. return b;
  10935. };
  10936. jspb.Map.Entry_ = function (a, b) {
  10937. this.key = a;
  10938. this.value = b;
  10939. this.valueWrapper = void 0;
  10940. };
  10941. jspb.ExtensionFieldInfo = function (a, b, c, d, e) {
  10942. this.fieldIndex = a;
  10943. this.fieldName = b;
  10944. this.ctor = c;
  10945. this.toObjectFn = d;
  10946. this.isRepeated = e;
  10947. };
  10948. goog.exportSymbol("jspb.ExtensionFieldInfo", jspb.ExtensionFieldInfo);
  10949. jspb.ExtensionFieldBinaryInfo = function (a, b, c, d, e, f) {
  10950. this.fieldInfo = a;
  10951. this.binaryReaderFn = b;
  10952. this.binaryWriterFn = c;
  10953. this.binaryMessageSerializeFn = d;
  10954. this.binaryMessageDeserializeFn = e;
  10955. this.isPacked = f;
  10956. };
  10957. goog.exportSymbol("jspb.ExtensionFieldBinaryInfo", jspb.ExtensionFieldBinaryInfo);
  10958. jspb.ExtensionFieldInfo.prototype.isMessageType = function () {
  10959. return !!this.ctor;
  10960. };
  10961. goog.exportProperty(jspb.ExtensionFieldInfo.prototype, "isMessageType", jspb.ExtensionFieldInfo.prototype.isMessageType);
  10962. jspb.Message = function () {};
  10963. goog.exportSymbol("jspb.Message", jspb.Message);
  10964. jspb.Message.GENERATE_TO_OBJECT = !0;
  10965. goog.exportProperty(jspb.Message, "GENERATE_TO_OBJECT", jspb.Message.GENERATE_TO_OBJECT);
  10966. jspb.Message.GENERATE_FROM_OBJECT = !goog.DISALLOW_TEST_ONLY_CODE;
  10967. goog.exportProperty(jspb.Message, "GENERATE_FROM_OBJECT", jspb.Message.GENERATE_FROM_OBJECT);
  10968. jspb.Message.GENERATE_TO_STRING = !0;
  10969. jspb.Message.ASSUME_LOCAL_ARRAYS = !1;
  10970. jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS = !0;
  10971. jspb.Message.SUPPORTS_UINT8ARRAY_ = "function" == typeof Uint8Array;
  10972. jspb.Message.prototype.getJsPbMessageId = function () {
  10973. return this.messageId_;
  10974. };
  10975. goog.exportProperty(jspb.Message.prototype, "getJsPbMessageId", jspb.Message.prototype.getJsPbMessageId);
  10976. jspb.Message.getIndex_ = function (a, b) {
  10977. return b + a.arrayIndexOffset_;
  10978. };
  10979. jspb.Message.hiddenES6Property_ = function () {};
  10980. jspb.Message.getFieldNumber_ = function (a, b) {
  10981. return b - a.arrayIndexOffset_;
  10982. };
  10983. jspb.Message.initialize = function (a, b, c, d, e, f) {
  10984. a.wrappers_ = null;
  10985. b || (b = c ? [c] : []);
  10986. a.messageId_ = c ? String(c) : void 0;
  10987. a.arrayIndexOffset_ = 0 === c ? -1 : 0;
  10988. a.array = b;
  10989. jspb.Message.initPivotAndExtensionObject_(a, d);
  10990. a.convertedPrimitiveFields_ = {};
  10991. jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS || (a.repeatedFields = e);
  10992. if (e) for (b = 0; b < e.length; b++) {
  10993. c = e[b], c < a.pivot_ ? (c = jspb.Message.getIndex_(a, c), a.array[c] = a.array[c] || jspb.Message.EMPTY_LIST_SENTINEL_) : (jspb.Message.maybeInitEmptyExtensionObject_(a), a.extensionObject_[c] = a.extensionObject_[c] || jspb.Message.EMPTY_LIST_SENTINEL_);
  10994. }
  10995. if (f && f.length) for (b = 0; b < f.length; b++) {
  10996. jspb.Message.computeOneofCase(a, f[b]);
  10997. }
  10998. };
  10999. goog.exportProperty(jspb.Message, "initialize", jspb.Message.initialize);
  11000. jspb.Message.EMPTY_LIST_SENTINEL_ = goog.DEBUG && Object.freeze ? Object.freeze([]) : [];
  11001. jspb.Message.isArray_ = function (a) {
  11002. return jspb.Message.ASSUME_LOCAL_ARRAYS ? a instanceof Array : Array.isArray(a);
  11003. };
  11004. jspb.Message.isExtensionObject_ = function (a) {
  11005. return null !== a && "object" == _typeof(a) && !jspb.Message.isArray_(a) && !(jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array);
  11006. };
  11007. jspb.Message.initPivotAndExtensionObject_ = function (a, b) {
  11008. var c = a.array.length,
  11009. d = -1;
  11010. if (c && (d = c - 1, c = a.array[d], jspb.Message.isExtensionObject_(c))) {
  11011. a.pivot_ = jspb.Message.getFieldNumber_(a, d);
  11012. a.extensionObject_ = c;
  11013. return;
  11014. }
  11015. -1 < b ? (a.pivot_ = Math.max(b, jspb.Message.getFieldNumber_(a, d + 1)), a.extensionObject_ = null) : a.pivot_ = Number.MAX_VALUE;
  11016. };
  11017. jspb.Message.maybeInitEmptyExtensionObject_ = function (a) {
  11018. var b = jspb.Message.getIndex_(a, a.pivot_);
  11019. a.array[b] || (a.extensionObject_ = a.array[b] = {});
  11020. };
  11021. jspb.Message.toObjectList = function (a, b, c) {
  11022. for (var d = [], e = 0; e < a.length; e++) {
  11023. d[e] = b.call(a[e], c, a[e]);
  11024. }
  11025. return d;
  11026. };
  11027. goog.exportProperty(jspb.Message, "toObjectList", jspb.Message.toObjectList);
  11028. jspb.Message.toObjectExtension = function (a, b, c, d, e) {
  11029. for (var f in c) {
  11030. var g = c[f],
  11031. h = d.call(a, g);
  11032. if (null != h) {
  11033. for (var k in g.fieldName) {
  11034. if (g.fieldName.hasOwnProperty(k)) break;
  11035. }
  11036. b[k] = g.toObjectFn ? g.isRepeated ? jspb.Message.toObjectList(h, g.toObjectFn, e) : g.toObjectFn(e, h) : h;
  11037. }
  11038. }
  11039. };
  11040. goog.exportProperty(jspb.Message, "toObjectExtension", jspb.Message.toObjectExtension);
  11041. jspb.Message.serializeBinaryExtensions = function (a, b, c, d) {
  11042. for (var e in c) {
  11043. var f = c[e],
  11044. g = f.fieldInfo;
  11045. if (!f.binaryWriterFn) throw Error("Message extension present that was generated without binary serialization support");
  11046. var h = d.call(a, g);
  11047. if (null != h) if (g.isMessageType()) {
  11048. if (f.binaryMessageSerializeFn) f.binaryWriterFn.call(b, g.fieldIndex, h, f.binaryMessageSerializeFn);else throw Error("Message extension present holding submessage without binary support enabled, and message is being serialized to binary format");
  11049. } else f.binaryWriterFn.call(b, g.fieldIndex, h);
  11050. }
  11051. };
  11052. goog.exportProperty(jspb.Message, "serializeBinaryExtensions", jspb.Message.serializeBinaryExtensions);
  11053. jspb.Message.readBinaryExtension = function (a, b, c, d, e) {
  11054. var f = c[b.getFieldNumber()];
  11055. if (f) {
  11056. c = f.fieldInfo;
  11057. if (!f.binaryReaderFn) throw Error("Deserializing extension whose generated code does not support binary format");
  11058. if (c.isMessageType()) {
  11059. var g = new c.ctor();
  11060. f.binaryReaderFn.call(b, g, f.binaryMessageDeserializeFn);
  11061. } else g = f.binaryReaderFn.call(b);
  11062. c.isRepeated && !f.isPacked ? (b = d.call(a, c)) ? b.push(g) : e.call(a, c, [g]) : e.call(a, c, g);
  11063. } else b.skipField();
  11064. };
  11065. goog.exportProperty(jspb.Message, "readBinaryExtension", jspb.Message.readBinaryExtension);
  11066. jspb.Message.getField = function (a, b) {
  11067. if (b < a.pivot_) {
  11068. b = jspb.Message.getIndex_(a, b);
  11069. var c = a.array[b];
  11070. return c === jspb.Message.EMPTY_LIST_SENTINEL_ ? a.array[b] = [] : c;
  11071. }
  11072. if (a.extensionObject_) return c = a.extensionObject_[b], c === jspb.Message.EMPTY_LIST_SENTINEL_ ? a.extensionObject_[b] = [] : c;
  11073. };
  11074. goog.exportProperty(jspb.Message, "getField", jspb.Message.getField);
  11075. jspb.Message.getRepeatedField = function (a, b) {
  11076. return jspb.Message.getField(a, b);
  11077. };
  11078. goog.exportProperty(jspb.Message, "getRepeatedField", jspb.Message.getRepeatedField);
  11079. jspb.Message.getOptionalFloatingPointField = function (a, b) {
  11080. a = jspb.Message.getField(a, b);
  11081. return null == a ? a : +a;
  11082. };
  11083. goog.exportProperty(jspb.Message, "getOptionalFloatingPointField", jspb.Message.getOptionalFloatingPointField);
  11084. jspb.Message.getBooleanField = function (a, b) {
  11085. a = jspb.Message.getField(a, b);
  11086. return null == a ? a : !!a;
  11087. };
  11088. goog.exportProperty(jspb.Message, "getBooleanField", jspb.Message.getBooleanField);
  11089. jspb.Message.getRepeatedFloatingPointField = function (a, b) {
  11090. var c = jspb.Message.getRepeatedField(a, b);
  11091. a.convertedPrimitiveFields_ || (a.convertedPrimitiveFields_ = {});
  11092. if (!a.convertedPrimitiveFields_[b]) {
  11093. for (var d = 0; d < c.length; d++) {
  11094. c[d] = +c[d];
  11095. }
  11096. a.convertedPrimitiveFields_[b] = !0;
  11097. }
  11098. return c;
  11099. };
  11100. goog.exportProperty(jspb.Message, "getRepeatedFloatingPointField", jspb.Message.getRepeatedFloatingPointField);
  11101. jspb.Message.getRepeatedBooleanField = function (a, b) {
  11102. var c = jspb.Message.getRepeatedField(a, b);
  11103. a.convertedPrimitiveFields_ || (a.convertedPrimitiveFields_ = {});
  11104. if (!a.convertedPrimitiveFields_[b]) {
  11105. for (var d = 0; d < c.length; d++) {
  11106. c[d] = !!c[d];
  11107. }
  11108. a.convertedPrimitiveFields_[b] = !0;
  11109. }
  11110. return c;
  11111. };
  11112. goog.exportProperty(jspb.Message, "getRepeatedBooleanField", jspb.Message.getRepeatedBooleanField);
  11113. jspb.Message.bytesAsB64 = function (a) {
  11114. if (null == a || "string" === typeof a) return a;
  11115. if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) return goog.crypt.base64.encodeByteArray(a);
  11116. jspb.asserts.fail("Cannot coerce to b64 string: " + goog.typeOf(a));
  11117. return null;
  11118. };
  11119. goog.exportProperty(jspb.Message, "bytesAsB64", jspb.Message.bytesAsB64);
  11120. jspb.Message.bytesAsU8 = function (a) {
  11121. if (null == a || a instanceof Uint8Array) return a;
  11122. if ("string" === typeof a) return goog.crypt.base64.decodeStringToUint8Array(a);
  11123. jspb.asserts.fail("Cannot coerce to Uint8Array: " + goog.typeOf(a));
  11124. return null;
  11125. };
  11126. goog.exportProperty(jspb.Message, "bytesAsU8", jspb.Message.bytesAsU8);
  11127. jspb.Message.bytesListAsB64 = function (a) {
  11128. jspb.Message.assertConsistentTypes_(a);
  11129. return a.length && "string" !== typeof a[0] ? goog.array.map(a, jspb.Message.bytesAsB64) : a;
  11130. };
  11131. goog.exportProperty(jspb.Message, "bytesListAsB64", jspb.Message.bytesListAsB64);
  11132. jspb.Message.bytesListAsU8 = function (a) {
  11133. jspb.Message.assertConsistentTypes_(a);
  11134. return !a.length || a[0] instanceof Uint8Array ? a : goog.array.map(a, jspb.Message.bytesAsU8);
  11135. };
  11136. goog.exportProperty(jspb.Message, "bytesListAsU8", jspb.Message.bytesListAsU8);
  11137. jspb.Message.assertConsistentTypes_ = function (a) {
  11138. if (goog.DEBUG && a && 1 < a.length) {
  11139. var b = goog.typeOf(a[0]);
  11140. goog.array.forEach(a, function (a) {
  11141. goog.typeOf(a) != b && jspb.asserts.fail("Inconsistent type in JSPB repeated field array. Got " + goog.typeOf(a) + " expected " + b);
  11142. });
  11143. }
  11144. };
  11145. jspb.Message.getFieldWithDefault = function (a, b, c) {
  11146. a = jspb.Message.getField(a, b);
  11147. return null == a ? c : a;
  11148. };
  11149. goog.exportProperty(jspb.Message, "getFieldWithDefault", jspb.Message.getFieldWithDefault);
  11150. jspb.Message.getBooleanFieldWithDefault = function (a, b, c) {
  11151. a = jspb.Message.getBooleanField(a, b);
  11152. return null == a ? c : a;
  11153. };
  11154. goog.exportProperty(jspb.Message, "getBooleanFieldWithDefault", jspb.Message.getBooleanFieldWithDefault);
  11155. jspb.Message.getFloatingPointFieldWithDefault = function (a, b, c) {
  11156. a = jspb.Message.getOptionalFloatingPointField(a, b);
  11157. return null == a ? c : a;
  11158. };
  11159. goog.exportProperty(jspb.Message, "getFloatingPointFieldWithDefault", jspb.Message.getFloatingPointFieldWithDefault);
  11160. jspb.Message.getFieldProto3 = jspb.Message.getFieldWithDefault;
  11161. goog.exportProperty(jspb.Message, "getFieldProto3", jspb.Message.getFieldProto3);
  11162. jspb.Message.getMapField = function (a, b, c, d) {
  11163. a.wrappers_ || (a.wrappers_ = {});
  11164. if (b in a.wrappers_) return a.wrappers_[b];
  11165. var e = jspb.Message.getField(a, b);
  11166. if (!e) {
  11167. if (c) return;
  11168. e = [];
  11169. jspb.Message.setField(a, b, e);
  11170. }
  11171. return a.wrappers_[b] = new jspb.Map(e, d);
  11172. };
  11173. goog.exportProperty(jspb.Message, "getMapField", jspb.Message.getMapField);
  11174. jspb.Message.setField = function (a, b, c) {
  11175. jspb.asserts.assertInstanceof(a, jspb.Message);
  11176. b < a.pivot_ ? a.array[jspb.Message.getIndex_(a, b)] = c : (jspb.Message.maybeInitEmptyExtensionObject_(a), a.extensionObject_[b] = c);
  11177. return a;
  11178. };
  11179. goog.exportProperty(jspb.Message, "setField", jspb.Message.setField);
  11180. jspb.Message.setProto3IntField = function (a, b, c) {
  11181. return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0);
  11182. };
  11183. goog.exportProperty(jspb.Message, "setProto3IntField", jspb.Message.setProto3IntField);
  11184. jspb.Message.setProto3FloatField = function (a, b, c) {
  11185. return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0);
  11186. };
  11187. goog.exportProperty(jspb.Message, "setProto3FloatField", jspb.Message.setProto3FloatField);
  11188. jspb.Message.setProto3BooleanField = function (a, b, c) {
  11189. return jspb.Message.setFieldIgnoringDefault_(a, b, c, !1);
  11190. };
  11191. goog.exportProperty(jspb.Message, "setProto3BooleanField", jspb.Message.setProto3BooleanField);
  11192. jspb.Message.setProto3StringField = function (a, b, c) {
  11193. return jspb.Message.setFieldIgnoringDefault_(a, b, c, "");
  11194. };
  11195. goog.exportProperty(jspb.Message, "setProto3StringField", jspb.Message.setProto3StringField);
  11196. jspb.Message.setProto3BytesField = function (a, b, c) {
  11197. return jspb.Message.setFieldIgnoringDefault_(a, b, c, "");
  11198. };
  11199. goog.exportProperty(jspb.Message, "setProto3BytesField", jspb.Message.setProto3BytesField);
  11200. jspb.Message.setProto3EnumField = function (a, b, c) {
  11201. return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0);
  11202. };
  11203. goog.exportProperty(jspb.Message, "setProto3EnumField", jspb.Message.setProto3EnumField);
  11204. jspb.Message.setProto3StringIntField = function (a, b, c) {
  11205. return jspb.Message.setFieldIgnoringDefault_(a, b, c, "0");
  11206. };
  11207. goog.exportProperty(jspb.Message, "setProto3StringIntField", jspb.Message.setProto3StringIntField);
  11208. jspb.Message.setFieldIgnoringDefault_ = function (a, b, c, d) {
  11209. jspb.asserts.assertInstanceof(a, jspb.Message);
  11210. c !== d ? jspb.Message.setField(a, b, c) : b < a.pivot_ ? a.array[jspb.Message.getIndex_(a, b)] = null : (jspb.Message.maybeInitEmptyExtensionObject_(a), delete a.extensionObject_[b]);
  11211. return a;
  11212. };
  11213. jspb.Message.addToRepeatedField = function (a, b, c, d) {
  11214. jspb.asserts.assertInstanceof(a, jspb.Message);
  11215. b = jspb.Message.getRepeatedField(a, b);
  11216. void 0 != d ? b.splice(d, 0, c) : b.push(c);
  11217. return a;
  11218. };
  11219. goog.exportProperty(jspb.Message, "addToRepeatedField", jspb.Message.addToRepeatedField);
  11220. jspb.Message.setOneofField = function (a, b, c, d) {
  11221. jspb.asserts.assertInstanceof(a, jspb.Message);
  11222. (c = jspb.Message.computeOneofCase(a, c)) && c !== b && void 0 !== d && (a.wrappers_ && c in a.wrappers_ && (a.wrappers_[c] = void 0), jspb.Message.setField(a, c, void 0));
  11223. return jspb.Message.setField(a, b, d);
  11224. };
  11225. goog.exportProperty(jspb.Message, "setOneofField", jspb.Message.setOneofField);
  11226. jspb.Message.computeOneofCase = function (a, b) {
  11227. for (var c, d, e = 0; e < b.length; e++) {
  11228. var f = b[e],
  11229. g = jspb.Message.getField(a, f);
  11230. null != g && (c = f, d = g, jspb.Message.setField(a, f, void 0));
  11231. }
  11232. return c ? (jspb.Message.setField(a, c, d), c) : 0;
  11233. };
  11234. goog.exportProperty(jspb.Message, "computeOneofCase", jspb.Message.computeOneofCase);
  11235. jspb.Message.getWrapperField = function (a, b, c, d) {
  11236. a.wrappers_ || (a.wrappers_ = {});
  11237. if (!a.wrappers_[c]) {
  11238. var e = jspb.Message.getField(a, c);
  11239. if (d || e) a.wrappers_[c] = new b(e);
  11240. }
  11241. return a.wrappers_[c];
  11242. };
  11243. goog.exportProperty(jspb.Message, "getWrapperField", jspb.Message.getWrapperField);
  11244. jspb.Message.getRepeatedWrapperField = function (a, b, c) {
  11245. jspb.Message.wrapRepeatedField_(a, b, c);
  11246. b = a.wrappers_[c];
  11247. b == jspb.Message.EMPTY_LIST_SENTINEL_ && (b = a.wrappers_[c] = []);
  11248. return b;
  11249. };
  11250. goog.exportProperty(jspb.Message, "getRepeatedWrapperField", jspb.Message.getRepeatedWrapperField);
  11251. jspb.Message.wrapRepeatedField_ = function (a, b, c) {
  11252. a.wrappers_ || (a.wrappers_ = {});
  11253. if (!a.wrappers_[c]) {
  11254. for (var d = jspb.Message.getRepeatedField(a, c), e = [], f = 0; f < d.length; f++) {
  11255. e[f] = new b(d[f]);
  11256. }
  11257. a.wrappers_[c] = e;
  11258. }
  11259. };
  11260. jspb.Message.setWrapperField = function (a, b, c) {
  11261. jspb.asserts.assertInstanceof(a, jspb.Message);
  11262. a.wrappers_ || (a.wrappers_ = {});
  11263. var d = c ? c.toArray() : c;
  11264. a.wrappers_[b] = c;
  11265. return jspb.Message.setField(a, b, d);
  11266. };
  11267. goog.exportProperty(jspb.Message, "setWrapperField", jspb.Message.setWrapperField);
  11268. jspb.Message.setOneofWrapperField = function (a, b, c, d) {
  11269. jspb.asserts.assertInstanceof(a, jspb.Message);
  11270. a.wrappers_ || (a.wrappers_ = {});
  11271. var e = d ? d.toArray() : d;
  11272. a.wrappers_[b] = d;
  11273. return jspb.Message.setOneofField(a, b, c, e);
  11274. };
  11275. goog.exportProperty(jspb.Message, "setOneofWrapperField", jspb.Message.setOneofWrapperField);
  11276. jspb.Message.setRepeatedWrapperField = function (a, b, c) {
  11277. jspb.asserts.assertInstanceof(a, jspb.Message);
  11278. a.wrappers_ || (a.wrappers_ = {});
  11279. c = c || [];
  11280. for (var d = [], e = 0; e < c.length; e++) {
  11281. d[e] = c[e].toArray();
  11282. }
  11283. a.wrappers_[b] = c;
  11284. return jspb.Message.setField(a, b, d);
  11285. };
  11286. goog.exportProperty(jspb.Message, "setRepeatedWrapperField", jspb.Message.setRepeatedWrapperField);
  11287. jspb.Message.addToRepeatedWrapperField = function (a, b, c, d, e) {
  11288. jspb.Message.wrapRepeatedField_(a, d, b);
  11289. var f = a.wrappers_[b];
  11290. f || (f = a.wrappers_[b] = []);
  11291. c = c ? c : new d();
  11292. a = jspb.Message.getRepeatedField(a, b);
  11293. void 0 != e ? (f.splice(e, 0, c), a.splice(e, 0, c.toArray())) : (f.push(c), a.push(c.toArray()));
  11294. return c;
  11295. };
  11296. goog.exportProperty(jspb.Message, "addToRepeatedWrapperField", jspb.Message.addToRepeatedWrapperField);
  11297. jspb.Message.toMap = function (a, b, c, d) {
  11298. for (var e = {}, f = 0; f < a.length; f++) {
  11299. e[b.call(a[f])] = c ? c.call(a[f], d, a[f]) : a[f];
  11300. }
  11301. return e;
  11302. };
  11303. goog.exportProperty(jspb.Message, "toMap", jspb.Message.toMap);
  11304. jspb.Message.prototype.syncMapFields_ = function () {
  11305. if (this.wrappers_) for (var a in this.wrappers_) {
  11306. var b = this.wrappers_[a];
  11307. if (Array.isArray(b)) for (var c = 0; c < b.length; c++) {
  11308. b[c] && b[c].toArray();
  11309. } else b && b.toArray();
  11310. }
  11311. };
  11312. jspb.Message.prototype.toArray = function () {
  11313. this.syncMapFields_();
  11314. return this.array;
  11315. };
  11316. goog.exportProperty(jspb.Message.prototype, "toArray", jspb.Message.prototype.toArray);
  11317. jspb.Message.GENERATE_TO_STRING && (jspb.Message.prototype.toString = function () {
  11318. this.syncMapFields_();
  11319. return this.array.toString();
  11320. });
  11321. jspb.Message.prototype.getExtension = function (a) {
  11322. if (this.extensionObject_) {
  11323. this.wrappers_ || (this.wrappers_ = {});
  11324. var b = a.fieldIndex;
  11325. if (a.isRepeated) {
  11326. if (a.isMessageType()) return this.wrappers_[b] || (this.wrappers_[b] = goog.array.map(this.extensionObject_[b] || [], function (b) {
  11327. return new a.ctor(b);
  11328. })), this.wrappers_[b];
  11329. } else if (a.isMessageType()) return !this.wrappers_[b] && this.extensionObject_[b] && (this.wrappers_[b] = new a.ctor(this.extensionObject_[b])), this.wrappers_[b];
  11330. return this.extensionObject_[b];
  11331. }
  11332. };
  11333. goog.exportProperty(jspb.Message.prototype, "getExtension", jspb.Message.prototype.getExtension);
  11334. jspb.Message.prototype.setExtension = function (a, b) {
  11335. this.wrappers_ || (this.wrappers_ = {});
  11336. jspb.Message.maybeInitEmptyExtensionObject_(this);
  11337. var c = a.fieldIndex;
  11338. a.isRepeated ? (b = b || [], a.isMessageType() ? (this.wrappers_[c] = b, this.extensionObject_[c] = goog.array.map(b, function (a) {
  11339. return a.toArray();
  11340. })) : this.extensionObject_[c] = b) : a.isMessageType() ? (this.wrappers_[c] = b, this.extensionObject_[c] = b ? b.toArray() : b) : this.extensionObject_[c] = b;
  11341. return this;
  11342. };
  11343. goog.exportProperty(jspb.Message.prototype, "setExtension", jspb.Message.prototype.setExtension);
  11344. jspb.Message.difference = function (a, b) {
  11345. if (!(a instanceof b.constructor)) throw Error("Messages have different types.");
  11346. var c = a.toArray();
  11347. b = b.toArray();
  11348. var d = [],
  11349. e = 0,
  11350. f = c.length > b.length ? c.length : b.length;
  11351. a.getJsPbMessageId() && (d[0] = a.getJsPbMessageId(), e = 1);
  11352. for (; e < f; e++) {
  11353. jspb.Message.compareFields(c[e], b[e]) || (d[e] = b[e]);
  11354. }
  11355. return new a.constructor(d);
  11356. };
  11357. goog.exportProperty(jspb.Message, "difference", jspb.Message.difference);
  11358. jspb.Message.equals = function (a, b) {
  11359. return a == b || !(!a || !b) && a instanceof b.constructor && jspb.Message.compareFields(a.toArray(), b.toArray());
  11360. };
  11361. goog.exportProperty(jspb.Message, "equals", jspb.Message.equals);
  11362. jspb.Message.compareExtensions = function (a, b) {
  11363. a = a || {};
  11364. b = b || {};
  11365. var c = {},
  11366. d;
  11367. for (d in a) {
  11368. c[d] = 0;
  11369. }
  11370. for (d in b) {
  11371. c[d] = 0;
  11372. }
  11373. for (d in c) {
  11374. if (!jspb.Message.compareFields(a[d], b[d])) return !1;
  11375. }
  11376. return !0;
  11377. };
  11378. goog.exportProperty(jspb.Message, "compareExtensions", jspb.Message.compareExtensions);
  11379. jspb.Message.compareFields = function (a, b) {
  11380. if (a == b) return !0;
  11381. if (!goog.isObject(a) || !goog.isObject(b)) return "number" === typeof a && isNaN(a) || "number" === typeof b && isNaN(b) ? String(a) == String(b) : !1;
  11382. if (a.constructor != b.constructor) return !1;
  11383. if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a.constructor === Uint8Array) {
  11384. if (a.length != b.length) return !1;
  11385. for (var c = 0; c < a.length; c++) {
  11386. if (a[c] != b[c]) return !1;
  11387. }
  11388. return !0;
  11389. }
  11390. if (a.constructor === Array) {
  11391. var d = void 0,
  11392. e = void 0,
  11393. f = Math.max(a.length, b.length);
  11394. for (c = 0; c < f; c++) {
  11395. var g = a[c],
  11396. h = b[c];
  11397. g && g.constructor == Object && (jspb.asserts.assert(void 0 === d), jspb.asserts.assert(c === a.length - 1), d = g, g = void 0);
  11398. h && h.constructor == Object && (jspb.asserts.assert(void 0 === e), jspb.asserts.assert(c === b.length - 1), e = h, h = void 0);
  11399. if (!jspb.Message.compareFields(g, h)) return !1;
  11400. }
  11401. return d || e ? (d = d || {}, e = e || {}, jspb.Message.compareExtensions(d, e)) : !0;
  11402. }
  11403. if (a.constructor === Object) return jspb.Message.compareExtensions(a, b);
  11404. throw Error("Invalid type in JSPB array");
  11405. };
  11406. goog.exportProperty(jspb.Message, "compareFields", jspb.Message.compareFields);
  11407. jspb.Message.prototype.cloneMessage = function () {
  11408. return jspb.Message.cloneMessage(this);
  11409. };
  11410. goog.exportProperty(jspb.Message.prototype, "cloneMessage", jspb.Message.prototype.cloneMessage);
  11411. jspb.Message.prototype.clone = function () {
  11412. return jspb.Message.cloneMessage(this);
  11413. };
  11414. goog.exportProperty(jspb.Message.prototype, "clone", jspb.Message.prototype.clone);
  11415. jspb.Message.clone = function (a) {
  11416. return jspb.Message.cloneMessage(a);
  11417. };
  11418. goog.exportProperty(jspb.Message, "clone", jspb.Message.clone);
  11419. jspb.Message.cloneMessage = function (a) {
  11420. return new a.constructor(jspb.Message.clone_(a.toArray()));
  11421. };
  11422. jspb.Message.copyInto = function (a, b) {
  11423. jspb.asserts.assertInstanceof(a, jspb.Message);
  11424. jspb.asserts.assertInstanceof(b, jspb.Message);
  11425. jspb.asserts.assert(a.constructor == b.constructor, "Copy source and target message should have the same type.");
  11426. a = jspb.Message.clone(a);
  11427. for (var c = b.toArray(), d = a.toArray(), e = c.length = 0; e < d.length; e++) {
  11428. c[e] = d[e];
  11429. }
  11430. b.wrappers_ = a.wrappers_;
  11431. b.extensionObject_ = a.extensionObject_;
  11432. };
  11433. goog.exportProperty(jspb.Message, "copyInto", jspb.Message.copyInto);
  11434. jspb.Message.clone_ = function (a) {
  11435. if (Array.isArray(a)) {
  11436. for (var b = Array(a.length), c = 0; c < a.length; c++) {
  11437. var d = a[c];
  11438. null != d && (b[c] = "object" == _typeof(d) ? jspb.Message.clone_(jspb.asserts.assert(d)) : d);
  11439. }
  11440. return b;
  11441. }
  11442. if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) return new Uint8Array(a);
  11443. b = {};
  11444. for (c in a) {
  11445. d = a[c], null != d && (b[c] = "object" == _typeof(d) ? jspb.Message.clone_(jspb.asserts.assert(d)) : d);
  11446. }
  11447. return b;
  11448. };
  11449. jspb.Message.registerMessageType = function (a, b) {
  11450. b.messageId = a;
  11451. };
  11452. goog.exportProperty(jspb.Message, "registerMessageType", jspb.Message.registerMessageType);
  11453. jspb.Message.messageSetExtensions = {};
  11454. jspb.Message.messageSetExtensionsBinary = {};
  11455. jspb.Export = {};
  11456. "object" === ( false ? undefined : _typeof(exports)) && (exports.Map = jspb.Map, exports.Message = jspb.Message, exports.BinaryReader = jspb.BinaryReader, exports.BinaryWriter = jspb.BinaryWriter, exports.ExtensionFieldInfo = jspb.ExtensionFieldInfo, exports.ExtensionFieldBinaryInfo = jspb.ExtensionFieldBinaryInfo, exports.exportSymbol = goog.exportSymbol, exports.inherits = goog.inherits, exports.object = {
  11457. extend: goog.object.extend
  11458. }, exports.typeOf = goog.typeOf);
  11459. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js */ 24)))
  11460. /***/ }),
  11461. /* 24 */
  11462. /*!***********************************!*\
  11463. !*** (webpack)/buildin/global.js ***!
  11464. \***********************************/
  11465. /*! no static exports found */
  11466. /***/ (function(module, exports) {
  11467. var g;
  11468. // This works in non-strict mode
  11469. g = (function() {
  11470. return this;
  11471. })();
  11472. try {
  11473. // This works if eval is allowed (see CSP)
  11474. g = g || new Function("return this")();
  11475. } catch (e) {
  11476. // This works if the window reference is available
  11477. if (typeof window === "object") g = window;
  11478. }
  11479. // g can still be undefined, but nothing to do about it...
  11480. // We return undefined, instead of nothing here, so it's
  11481. // easier to handle this case. if(!global) { ...}
  11482. module.exports = g;
  11483. /***/ }),
  11484. /* 25 */
  11485. /*!*******************************************************************************************************!*\
  11486. !*** D:/Work2/Orienteering/TrackOffical/node_modules/google-protobuf/google/protobuf/timestamp_pb.js ***!
  11487. \*******************************************************************************************************/
  11488. /*! no static exports found */
  11489. /***/ (function(module, exports, __webpack_require__) {
  11490. // source: google/protobuf/timestamp.proto
  11491. /**
  11492. * @fileoverview
  11493. * @enhanceable
  11494. * @suppress {missingRequire} reports error on implicit type usages.
  11495. * @suppress {messageConventions} JS Compiler reports an error if a variable or
  11496. * field starts with 'MSG_' and isn't a translatable message.
  11497. * @public
  11498. */
  11499. // GENERATED CODE -- DO NOT EDIT!
  11500. /* eslint-disable */
  11501. // @ts-nocheck
  11502. var jspb = __webpack_require__(/*! google-protobuf */ 23);
  11503. var goog = jspb;
  11504. var global = typeof globalThis !== 'undefined' && globalThis || typeof window !== 'undefined' && window || typeof global !== 'undefined' && global || typeof self !== 'undefined' && self || function () {
  11505. return this;
  11506. }.call(null) || Function('return this')();
  11507. goog.exportSymbol('proto.google.protobuf.Timestamp', null, global);
  11508. /**
  11509. * Generated by JsPbCodeGenerator.
  11510. * @param {Array=} opt_data Optional initial data array, typically from a
  11511. * server response, or constructed directly in Javascript. The array is used
  11512. * in place and becomes part of the constructed object. It is not cloned.
  11513. * If no data is provided, the constructed object will be empty, but still
  11514. * valid.
  11515. * @extends {jspb.Message}
  11516. * @constructor
  11517. */
  11518. proto.google.protobuf.Timestamp = function (opt_data) {
  11519. jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  11520. };
  11521. goog.inherits(proto.google.protobuf.Timestamp, jspb.Message);
  11522. if (goog.DEBUG && !COMPILED) {
  11523. /**
  11524. * @public
  11525. * @override
  11526. */
  11527. proto.google.protobuf.Timestamp.displayName = 'proto.google.protobuf.Timestamp';
  11528. }
  11529. if (jspb.Message.GENERATE_TO_OBJECT) {
  11530. /**
  11531. * Creates an object representation of this proto.
  11532. * Field names that are reserved in JavaScript and will be renamed to pb_name.
  11533. * Optional fields that are not set will be set to undefined.
  11534. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
  11535. * For the list of reserved names please see:
  11536. * net/proto2/compiler/js/internal/generator.cc#kKeyword.
  11537. * @param {boolean=} opt_includeInstance Deprecated. whether to include the
  11538. * JSPB instance for transitional soy proto support:
  11539. * http://goto/soy-param-migration
  11540. * @return {!Object}
  11541. */
  11542. proto.google.protobuf.Timestamp.prototype.toObject = function (opt_includeInstance) {
  11543. return proto.google.protobuf.Timestamp.toObject(opt_includeInstance, this);
  11544. };
  11545. /**
  11546. * Static version of the {@see toObject} method.
  11547. * @param {boolean|undefined} includeInstance Deprecated. Whether to include
  11548. * the JSPB instance for transitional soy proto support:
  11549. * http://goto/soy-param-migration
  11550. * @param {!proto.google.protobuf.Timestamp} msg The msg instance to transform.
  11551. * @return {!Object}
  11552. * @suppress {unusedLocalVariables} f is only used for nested messages
  11553. */
  11554. proto.google.protobuf.Timestamp.toObject = function (includeInstance, msg) {
  11555. var f,
  11556. obj = {
  11557. seconds: jspb.Message.getFieldWithDefault(msg, 1, 0),
  11558. nanos: jspb.Message.getFieldWithDefault(msg, 2, 0)
  11559. };
  11560. if (includeInstance) {
  11561. obj.$jspbMessageInstance = msg;
  11562. }
  11563. return obj;
  11564. };
  11565. }
  11566. /**
  11567. * Deserializes binary data (in protobuf wire format).
  11568. * @param {jspb.ByteSource} bytes The bytes to deserialize.
  11569. * @return {!proto.google.protobuf.Timestamp}
  11570. */
  11571. proto.google.protobuf.Timestamp.deserializeBinary = function (bytes) {
  11572. var reader = new jspb.BinaryReader(bytes);
  11573. var msg = new proto.google.protobuf.Timestamp();
  11574. return proto.google.protobuf.Timestamp.deserializeBinaryFromReader(msg, reader);
  11575. };
  11576. /**
  11577. * Deserializes binary data (in protobuf wire format) from the
  11578. * given reader into the given message object.
  11579. * @param {!proto.google.protobuf.Timestamp} msg The message object to deserialize into.
  11580. * @param {!jspb.BinaryReader} reader The BinaryReader to use.
  11581. * @return {!proto.google.protobuf.Timestamp}
  11582. */
  11583. proto.google.protobuf.Timestamp.deserializeBinaryFromReader = function (msg, reader) {
  11584. while (reader.nextField()) {
  11585. if (reader.isEndGroup()) {
  11586. break;
  11587. }
  11588. var field = reader.getFieldNumber();
  11589. switch (field) {
  11590. case 1:
  11591. var value = /** @type {number} */reader.readInt64();
  11592. msg.setSeconds(value);
  11593. break;
  11594. case 2:
  11595. var value = /** @type {number} */reader.readInt32();
  11596. msg.setNanos(value);
  11597. break;
  11598. default:
  11599. reader.skipField();
  11600. break;
  11601. }
  11602. }
  11603. return msg;
  11604. };
  11605. /**
  11606. * Serializes the message to binary data (in protobuf wire format).
  11607. * @return {!Uint8Array}
  11608. */
  11609. proto.google.protobuf.Timestamp.prototype.serializeBinary = function () {
  11610. var writer = new jspb.BinaryWriter();
  11611. proto.google.protobuf.Timestamp.serializeBinaryToWriter(this, writer);
  11612. return writer.getResultBuffer();
  11613. };
  11614. /**
  11615. * Serializes the given message to binary data (in protobuf wire
  11616. * format), writing to the given BinaryWriter.
  11617. * @param {!proto.google.protobuf.Timestamp} message
  11618. * @param {!jspb.BinaryWriter} writer
  11619. * @suppress {unusedLocalVariables} f is only used for nested messages
  11620. */
  11621. proto.google.protobuf.Timestamp.serializeBinaryToWriter = function (message, writer) {
  11622. var f = undefined;
  11623. f = message.getSeconds();
  11624. if (f !== 0) {
  11625. writer.writeInt64(1, f);
  11626. }
  11627. f = message.getNanos();
  11628. if (f !== 0) {
  11629. writer.writeInt32(2, f);
  11630. }
  11631. };
  11632. /**
  11633. * optional int64 seconds = 1;
  11634. * @return {number}
  11635. */
  11636. proto.google.protobuf.Timestamp.prototype.getSeconds = function () {
  11637. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
  11638. );
  11639. };
  11640. /**
  11641. * @param {number} value
  11642. * @return {!proto.google.protobuf.Timestamp} returns this
  11643. */
  11644. proto.google.protobuf.Timestamp.prototype.setSeconds = function (value) {
  11645. return jspb.Message.setProto3IntField(this, 1, value);
  11646. };
  11647. /**
  11648. * optional int32 nanos = 2;
  11649. * @return {number}
  11650. */
  11651. proto.google.protobuf.Timestamp.prototype.getNanos = function () {
  11652. return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 2, 0)
  11653. );
  11654. };
  11655. /**
  11656. * @param {number} value
  11657. * @return {!proto.google.protobuf.Timestamp} returns this
  11658. */
  11659. proto.google.protobuf.Timestamp.prototype.setNanos = function (value) {
  11660. return jspb.Message.setProto3IntField(this, 2, value);
  11661. };
  11662. goog.object.extend(exports, proto.google.protobuf);
  11663. /* This code will be inserted into generated code for
  11664. * google/protobuf/timestamp.proto. */
  11665. /**
  11666. * Returns a JavaScript 'Date' object corresponding to this Timestamp.
  11667. * @return {!Date}
  11668. */
  11669. proto.google.protobuf.Timestamp.prototype.toDate = function () {
  11670. var seconds = this.getSeconds();
  11671. var nanos = this.getNanos();
  11672. return new Date(seconds * 1000 + nanos / 1000000);
  11673. };
  11674. /**
  11675. * Sets the value of this Timestamp object to be the given Date.
  11676. * @param {!Date} value The value to set.
  11677. */
  11678. proto.google.protobuf.Timestamp.prototype.fromDate = function (value) {
  11679. this.setSeconds(Math.floor(value.getTime() / 1000));
  11680. this.setNanos(value.getMilliseconds() * 1000000);
  11681. };
  11682. /**
  11683. * Factory method that returns a Timestamp object with value equal to
  11684. * the given Date.
  11685. * @param {!Date} value The value to set.
  11686. * @return {!proto.google.protobuf.Timestamp}
  11687. */
  11688. proto.google.protobuf.Timestamp.fromDate = function (value) {
  11689. var timestamp = new proto.google.protobuf.Timestamp();
  11690. timestamp.fromDate(value);
  11691. return timestamp;
  11692. };
  11693. /***/ }),
  11694. /* 26 */
  11695. /*!*********************************************************************!*\
  11696. !*** D:/Work2/Orienteering/TrackOffical/utils/map/leafletHelper.js ***!
  11697. \*********************************************************************/
  11698. /*! no static exports found */
  11699. /***/ (function(module, exports, __webpack_require__) {
  11700. "use strict";
  11701. /* WEBPACK VAR INJECTION */(function(__f__) {
  11702. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 8);
  11703. Object.defineProperty(exports, "__esModule", {
  11704. value: true
  11705. });
  11706. exports.default = void 0;
  11707. var _leaflet = _interopRequireDefault(__webpack_require__(/*! leaflet */ 27));
  11708. var _patch = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/patch */ 72));
  11709. var _config = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/config */ 71));
  11710. var _global = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/global */ 74));
  11711. var _player = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/player */ 73));
  11712. var _checkPoint = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/checkPoint */ 75));
  11713. // leaflet 地图组件
  11714. // author: wzx
  11715. // version: 1.0
  11716. // import 'leaflet.motion/dist/leaflet.motion.min.js'
  11717. var _default = {
  11718. global: _global.default,
  11719. config: _config.default,
  11720. player: _player.default,
  11721. checkPoint: _checkPoint.default,
  11722. // 地图初始化
  11723. // mapid <string> 地图容器的id
  11724. // centPoint <array> 地图的初始地理中心坐标
  11725. // zoomNum <int> 初始地图缩放级别
  11726. init: function init(mapid, centPoint) {
  11727. var zoomNum = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 17;
  11728. _patch.default.run();
  11729. _global.default.map = _leaflet.default.map(mapid, {
  11730. center: centPoint,
  11731. zoom: zoomNum,
  11732. zoomControl: true,
  11733. attributionControl: false
  11734. });
  11735. // global.map = L.map(mapid, {
  11736. // attributionControl: false
  11737. // }).setView(centPoint, zoomNum);
  11738. _leaflet.default.control.attribution({
  11739. prefix: '&copy; 小飞龙定向' // 地图右下角属性文本的前缀内容
  11740. // prefix: false // 地图右下角属性文本的前缀内容
  11741. }).addTo(_global.default.map);
  11742. _leaflet.default.control.scale({
  11743. maxWidth: 200,
  11744. // 控件的最大宽度,单位是像素
  11745. metric: true,
  11746. // 是否显示公制比例线(米/公里)
  11747. imperial: false,
  11748. // 是否显示英制比例线(英里/英尺)
  11749. position: 'topright' // 控件的位置(地图的一个角)。可能的值是 ‘topleft’、 ‘topright’、 ‘bottomleft’ 或 ‘bottomright’
  11750. }).addTo(_global.default.map);
  11751. // 添加地图点击弹窗
  11752. _global.default.map.on('click', function (e) {
  11753. __f__("log", "坐标", e.latlng.toString(), " at utils/map/leafletHelper.js:51");
  11754. // L.popup().setLatLng(e.latlng)
  11755. // .setContent("坐标:" + e.latlng.toString())
  11756. // .openOn(global.map);
  11757. });
  11758. _global.default.map.on('zoomstart', function (e) {
  11759. // console.log("[zoomstart] 即将开始地图缩放", e)
  11760. _player.default.onZoomStart(e);
  11761. _checkPoint.default.onZoomStart(e);
  11762. });
  11763. _global.default.map.on('zoom', function (e) {
  11764. // console.log("[zoom] 地图缩放", e)
  11765. _player.default.onZoom(e);
  11766. _checkPoint.default.onZoom(e);
  11767. });
  11768. _global.default.map.on('zoomend', function (e) {
  11769. // console.log("[zoomend] 地图缩放结束", e)
  11770. _player.default.onZoomEnd(e);
  11771. _checkPoint.default.onZoomEnd(e);
  11772. });
  11773. // global.map.on('zoomanim', (e) => {
  11774. // console.log("地图缩放中...", e)
  11775. // // player.onZoomEnd(e)
  11776. // // checkPoint.onZoomEnd(e)
  11777. // });
  11778. _player.default.init();
  11779. _checkPoint.default.init();
  11780. },
  11781. addMapLayer: function addMapLayer(mapid) {
  11782. var minZoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;
  11783. var maxZoom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 20;
  11784. var url = 'static/map/' + mapid + '/{z}/{x}/{y}.png';
  11785. _global.default.map_layer = _leaflet.default.tileLayer(url, {
  11786. minZoom: minZoom,
  11787. maxZoom: maxZoom,
  11788. tms: false,
  11789. // 是否反转Y轴坐标
  11790. attribution: '版权所有'
  11791. }).addTo(_global.default.map);
  11792. },
  11793. test: function test() {},
  11794. free: function free() {
  11795. _player.default.free();
  11796. _checkPoint.default.free();
  11797. }
  11798. };
  11799. exports.default = _default;
  11800. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 7)["default"]))
  11801. /***/ }),
  11802. /* 27 */
  11803. /*!***********************************************************************************!*\
  11804. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/leaflet-src.js ***!
  11805. \***********************************************************************************/
  11806. /*! no static exports found */
  11807. /***/ (function(module, exports, __webpack_require__) {
  11808. /* WEBPACK VAR INJECTION */(function(__f__) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 10);
  11809. /* @preserve
  11810. * Leaflet 1.9.3, a JS library for interactive maps. https://leafletjs.com
  11811. * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade
  11812. */
  11813. (function (global, factory) {
  11814. ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
  11815. __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
  11816. (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
  11817. __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined);
  11818. })(this, function (exports) {
  11819. 'use strict';
  11820. var version = "1.9.3";
  11821. /*
  11822. * @namespace Util
  11823. *
  11824. * Various utility functions, used by Leaflet internally.
  11825. */
  11826. // @function extend(dest: Object, src?: Object): Object
  11827. // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.
  11828. function extend(dest) {
  11829. var i, j, len, src;
  11830. for (j = 1, len = arguments.length; j < len; j++) {
  11831. src = arguments[j];
  11832. for (i in src) {
  11833. dest[i] = src[i];
  11834. }
  11835. }
  11836. return dest;
  11837. }
  11838. // @function create(proto: Object, properties?: Object): Object
  11839. // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)
  11840. var create$2 = Object.create || function () {
  11841. function F() {}
  11842. return function (proto) {
  11843. F.prototype = proto;
  11844. return new F();
  11845. };
  11846. }();
  11847. // @function bind(fn: Function, …): Function
  11848. // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).
  11849. // Has a `L.bind()` shortcut.
  11850. function bind(fn, obj) {
  11851. var slice = Array.prototype.slice;
  11852. if (fn.bind) {
  11853. return fn.bind.apply(fn, slice.call(arguments, 1));
  11854. }
  11855. var args = slice.call(arguments, 2);
  11856. return function () {
  11857. return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);
  11858. };
  11859. }
  11860. // @property lastId: Number
  11861. // Last unique ID used by [`stamp()`](#util-stamp)
  11862. var lastId = 0;
  11863. // @function stamp(obj: Object): Number
  11864. // Returns the unique ID of an object, assigning it one if it doesn't have it.
  11865. function stamp(obj) {
  11866. if (!('_leaflet_id' in obj)) {
  11867. obj['_leaflet_id'] = ++lastId;
  11868. }
  11869. return obj._leaflet_id;
  11870. }
  11871. // @function throttle(fn: Function, time: Number, context: Object): Function
  11872. // Returns a function which executes function `fn` with the given scope `context`
  11873. // (so that the `this` keyword refers to `context` inside `fn`'s code). The function
  11874. // `fn` will be called no more than one time per given amount of `time`. The arguments
  11875. // received by the bound function will be any arguments passed when binding the
  11876. // function, followed by any arguments passed when invoking the bound function.
  11877. // Has an `L.throttle` shortcut.
  11878. function throttle(fn, time, context) {
  11879. var lock, args, wrapperFn, later;
  11880. later = function later() {
  11881. // reset lock and call if queued
  11882. lock = false;
  11883. if (args) {
  11884. wrapperFn.apply(context, args);
  11885. args = false;
  11886. }
  11887. };
  11888. wrapperFn = function wrapperFn() {
  11889. if (lock) {
  11890. // called too soon, queue to call later
  11891. args = arguments;
  11892. } else {
  11893. // call and lock until later
  11894. fn.apply(context, arguments);
  11895. setTimeout(later, time);
  11896. lock = true;
  11897. }
  11898. };
  11899. return wrapperFn;
  11900. }
  11901. // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number
  11902. // Returns the number `num` modulo `range` in such a way so it lies within
  11903. // `range[0]` and `range[1]`. The returned value will be always smaller than
  11904. // `range[1]` unless `includeMax` is set to `true`.
  11905. function wrapNum(x, range, includeMax) {
  11906. var max = range[1],
  11907. min = range[0],
  11908. d = max - min;
  11909. return x === max && includeMax ? x : ((x - min) % d + d) % d + min;
  11910. }
  11911. // @function falseFn(): Function
  11912. // Returns a function which always returns `false`.
  11913. function falseFn() {
  11914. return false;
  11915. }
  11916. // @function formatNum(num: Number, precision?: Number|false): Number
  11917. // Returns the number `num` rounded with specified `precision`.
  11918. // The default `precision` value is 6 decimal places.
  11919. // `false` can be passed to skip any processing (can be useful to avoid round-off errors).
  11920. function formatNum(num, precision) {
  11921. if (precision === false) {
  11922. return num;
  11923. }
  11924. var pow = Math.pow(10, precision === undefined ? 6 : precision);
  11925. return Math.round(num * pow) / pow;
  11926. }
  11927. // @function trim(str: String): String
  11928. // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)
  11929. function trim(str) {
  11930. return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
  11931. }
  11932. // @function splitWords(str: String): String[]
  11933. // Trims and splits the string on whitespace and returns the array of parts.
  11934. function splitWords(str) {
  11935. return trim(str).split(/\s+/);
  11936. }
  11937. // @function setOptions(obj: Object, options: Object): Object
  11938. // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.
  11939. function setOptions(obj, options) {
  11940. if (!Object.prototype.hasOwnProperty.call(obj, 'options')) {
  11941. obj.options = obj.options ? create$2(obj.options) : {};
  11942. }
  11943. for (var i in options) {
  11944. obj.options[i] = options[i];
  11945. }
  11946. return obj.options;
  11947. }
  11948. // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String
  11949. // Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}`
  11950. // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will
  11951. // be appended at the end. If `uppercase` is `true`, the parameter names will
  11952. // be uppercased (e.g. `'?A=foo&B=bar'`)
  11953. function getParamString(obj, existingUrl, uppercase) {
  11954. var params = [];
  11955. for (var i in obj) {
  11956. params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));
  11957. }
  11958. return (!existingUrl || existingUrl.indexOf('?') === -1 ? '?' : '&') + params.join('&');
  11959. }
  11960. var templateRe = /\{ *([\w_ -]+) *\}/g;
  11961. // @function template(str: String, data: Object): String
  11962. // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`
  11963. // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string
  11964. // `('Hello foo, bar')`. You can also specify functions instead of strings for
  11965. // data values — they will be evaluated passing `data` as an argument.
  11966. function template(str, data) {
  11967. return str.replace(templateRe, function (str, key) {
  11968. var value = data[key];
  11969. if (value === undefined) {
  11970. throw new Error('No value provided for variable ' + str);
  11971. } else if (typeof value === 'function') {
  11972. value = value(data);
  11973. }
  11974. return value;
  11975. });
  11976. }
  11977. // @function isArray(obj): Boolean
  11978. // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)
  11979. var isArray = Array.isArray || function (obj) {
  11980. return Object.prototype.toString.call(obj) === '[object Array]';
  11981. };
  11982. // @function indexOf(array: Array, el: Object): Number
  11983. // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)
  11984. function indexOf(array, el) {
  11985. for (var i = 0; i < array.length; i++) {
  11986. if (array[i] === el) {
  11987. return i;
  11988. }
  11989. }
  11990. return -1;
  11991. }
  11992. // @property emptyImageUrl: String
  11993. // Data URI string containing a base64-encoded empty GIF image.
  11994. // Used as a hack to free memory from unused images on WebKit-powered
  11995. // mobile devices (by setting image `src` to this string).
  11996. var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
  11997. // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/
  11998. function getPrefixed(name) {
  11999. return window['webkit' + name] || window['moz' + name] || window['ms' + name];
  12000. }
  12001. var lastTime = 0;
  12002. // fallback for IE 7-8
  12003. function timeoutDefer(fn) {
  12004. var time = +new Date(),
  12005. timeToCall = Math.max(0, 16 - (time - lastTime));
  12006. lastTime = time + timeToCall;
  12007. return window.setTimeout(fn, timeToCall);
  12008. }
  12009. var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;
  12010. var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || getPrefixed('CancelRequestAnimationFrame') || function (id) {
  12011. window.clearTimeout(id);
  12012. };
  12013. // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number
  12014. // Schedules `fn` to be executed when the browser repaints. `fn` is bound to
  12015. // `context` if given. When `immediate` is set, `fn` is called immediately if
  12016. // the browser doesn't have native support for
  12017. // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),
  12018. // otherwise it's delayed. Returns a request ID that can be used to cancel the request.
  12019. function requestAnimFrame(fn, context, immediate) {
  12020. if (immediate && requestFn === timeoutDefer) {
  12021. fn.call(context);
  12022. } else {
  12023. return requestFn.call(window, bind(fn, context));
  12024. }
  12025. }
  12026. // @function cancelAnimFrame(id: Number): undefined
  12027. // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).
  12028. function cancelAnimFrame(id) {
  12029. if (id) {
  12030. cancelFn.call(window, id);
  12031. }
  12032. }
  12033. var Util = {
  12034. __proto__: null,
  12035. extend: extend,
  12036. create: create$2,
  12037. bind: bind,
  12038. get lastId() {
  12039. return lastId;
  12040. },
  12041. stamp: stamp,
  12042. throttle: throttle,
  12043. wrapNum: wrapNum,
  12044. falseFn: falseFn,
  12045. formatNum: formatNum,
  12046. trim: trim,
  12047. splitWords: splitWords,
  12048. setOptions: setOptions,
  12049. getParamString: getParamString,
  12050. template: template,
  12051. isArray: isArray,
  12052. indexOf: indexOf,
  12053. emptyImageUrl: emptyImageUrl,
  12054. requestFn: requestFn,
  12055. cancelFn: cancelFn,
  12056. requestAnimFrame: requestAnimFrame,
  12057. cancelAnimFrame: cancelAnimFrame
  12058. };
  12059. // @class Class
  12060. // @aka L.Class
  12061. // @section
  12062. // @uninheritable
  12063. // Thanks to John Resig and Dean Edwards for inspiration!
  12064. function Class() {}
  12065. Class.extend = function (props) {
  12066. // @function extend(props: Object): Function
  12067. // [Extends the current class](#class-inheritance) given the properties to be included.
  12068. // Returns a Javascript function that is a class constructor (to be called with `new`).
  12069. var NewClass = function NewClass() {
  12070. setOptions(this);
  12071. // call the constructor
  12072. if (this.initialize) {
  12073. this.initialize.apply(this, arguments);
  12074. }
  12075. // call all constructor hooks
  12076. this.callInitHooks();
  12077. };
  12078. var parentProto = NewClass.__super__ = this.prototype;
  12079. var proto = create$2(parentProto);
  12080. proto.constructor = NewClass;
  12081. NewClass.prototype = proto;
  12082. // inherit parent's statics
  12083. for (var i in this) {
  12084. if (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {
  12085. NewClass[i] = this[i];
  12086. }
  12087. }
  12088. // mix static properties into the class
  12089. if (props.statics) {
  12090. extend(NewClass, props.statics);
  12091. }
  12092. // mix includes into the prototype
  12093. if (props.includes) {
  12094. checkDeprecatedMixinEvents(props.includes);
  12095. extend.apply(null, [proto].concat(props.includes));
  12096. }
  12097. // mix given properties into the prototype
  12098. extend(proto, props);
  12099. delete proto.statics;
  12100. delete proto.includes;
  12101. // merge options
  12102. if (proto.options) {
  12103. proto.options = parentProto.options ? create$2(parentProto.options) : {};
  12104. extend(proto.options, props.options);
  12105. }
  12106. proto._initHooks = [];
  12107. // add method for calling all hooks
  12108. proto.callInitHooks = function () {
  12109. if (this._initHooksCalled) {
  12110. return;
  12111. }
  12112. if (parentProto.callInitHooks) {
  12113. parentProto.callInitHooks.call(this);
  12114. }
  12115. this._initHooksCalled = true;
  12116. for (var i = 0, len = proto._initHooks.length; i < len; i++) {
  12117. proto._initHooks[i].call(this);
  12118. }
  12119. };
  12120. return NewClass;
  12121. };
  12122. // @function include(properties: Object): this
  12123. // [Includes a mixin](#class-includes) into the current class.
  12124. Class.include = function (props) {
  12125. var parentOptions = this.prototype.options;
  12126. extend(this.prototype, props);
  12127. if (props.options) {
  12128. this.prototype.options = parentOptions;
  12129. this.mergeOptions(props.options);
  12130. }
  12131. return this;
  12132. };
  12133. // @function mergeOptions(options: Object): this
  12134. // [Merges `options`](#class-options) into the defaults of the class.
  12135. Class.mergeOptions = function (options) {
  12136. extend(this.prototype.options, options);
  12137. return this;
  12138. };
  12139. // @function addInitHook(fn: Function): this
  12140. // Adds a [constructor hook](#class-constructor-hooks) to the class.
  12141. Class.addInitHook = function (fn) {
  12142. // (Function) || (String, args...)
  12143. var args = Array.prototype.slice.call(arguments, 1);
  12144. var init = typeof fn === 'function' ? fn : function () {
  12145. this[fn].apply(this, args);
  12146. };
  12147. this.prototype._initHooks = this.prototype._initHooks || [];
  12148. this.prototype._initHooks.push(init);
  12149. return this;
  12150. };
  12151. function checkDeprecatedMixinEvents(includes) {
  12152. /* global L: true */
  12153. if (typeof L === 'undefined' || !L || !L.Mixin) {
  12154. return;
  12155. }
  12156. includes = isArray(includes) ? includes : [includes];
  12157. for (var i = 0; i < includes.length; i++) {
  12158. if (includes[i] === L.Mixin.Events) {
  12159. __f__("warn", 'Deprecated include of L.Mixin.Events: ' + 'this property will be removed in future releases, ' + 'please inherit from L.Evented instead.', new Error().stack, " at node_modules/leaflet/dist/leaflet-src.js:408");
  12160. }
  12161. }
  12162. }
  12163. /*
  12164. * @class Evented
  12165. * @aka L.Evented
  12166. * @inherits Class
  12167. *
  12168. * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).
  12169. *
  12170. * @example
  12171. *
  12172. * ```js
  12173. * map.on('click', function(e) {
  12174. * alert(e.latlng);
  12175. * } );
  12176. * ```
  12177. *
  12178. * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:
  12179. *
  12180. * ```js
  12181. * function onClick(e) { ... }
  12182. *
  12183. * map.on('click', onClick);
  12184. * map.off('click', onClick);
  12185. * ```
  12186. */
  12187. var Events = {
  12188. /* @method on(type: String, fn: Function, context?: Object): this
  12189. * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).
  12190. *
  12191. * @alternative
  12192. * @method on(eventMap: Object): this
  12193. * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`
  12194. */
  12195. on: function on(types, fn, context) {
  12196. // types can be a map of types/handlers
  12197. if (_typeof(types) === 'object') {
  12198. for (var type in types) {
  12199. // we don't process space-separated events here for performance;
  12200. // it's a hot path since Layer uses the on(obj) syntax
  12201. this._on(type, types[type], fn);
  12202. }
  12203. } else {
  12204. // types can be a string of space-separated words
  12205. types = splitWords(types);
  12206. for (var i = 0, len = types.length; i < len; i++) {
  12207. this._on(types[i], fn, context);
  12208. }
  12209. }
  12210. return this;
  12211. },
  12212. /* @method off(type: String, fn?: Function, context?: Object): this
  12213. * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.
  12214. *
  12215. * @alternative
  12216. * @method off(eventMap: Object): this
  12217. * Removes a set of type/listener pairs.
  12218. *
  12219. * @alternative
  12220. * @method off: this
  12221. * Removes all listeners to all events on the object. This includes implicitly attached events.
  12222. */
  12223. off: function off(types, fn, context) {
  12224. if (!arguments.length) {
  12225. // clear all listeners if called without arguments
  12226. delete this._events;
  12227. } else if (_typeof(types) === 'object') {
  12228. for (var type in types) {
  12229. this._off(type, types[type], fn);
  12230. }
  12231. } else {
  12232. types = splitWords(types);
  12233. var removeAll = arguments.length === 1;
  12234. for (var i = 0, len = types.length; i < len; i++) {
  12235. if (removeAll) {
  12236. this._off(types[i]);
  12237. } else {
  12238. this._off(types[i], fn, context);
  12239. }
  12240. }
  12241. }
  12242. return this;
  12243. },
  12244. // attach listener (without syntactic sugar now)
  12245. _on: function _on(type, fn, context, _once) {
  12246. if (typeof fn !== 'function') {
  12247. __f__("warn", 'wrong listener type: ' + _typeof(fn), " at node_modules/leaflet/dist/leaflet-src.js:511");
  12248. return;
  12249. }
  12250. // check if fn already there
  12251. if (this._listens(type, fn, context) !== false) {
  12252. return;
  12253. }
  12254. if (context === this) {
  12255. // Less memory footprint.
  12256. context = undefined;
  12257. }
  12258. var newListener = {
  12259. fn: fn,
  12260. ctx: context
  12261. };
  12262. if (_once) {
  12263. newListener.once = true;
  12264. }
  12265. this._events = this._events || {};
  12266. this._events[type] = this._events[type] || [];
  12267. this._events[type].push(newListener);
  12268. },
  12269. _off: function _off(type, fn, context) {
  12270. var listeners, i, len;
  12271. if (!this._events) {
  12272. return;
  12273. }
  12274. listeners = this._events[type];
  12275. if (!listeners) {
  12276. return;
  12277. }
  12278. if (arguments.length === 1) {
  12279. // remove all
  12280. if (this._firingCount) {
  12281. // Set all removed listeners to noop
  12282. // so they are not called if remove happens in fire
  12283. for (i = 0, len = listeners.length; i < len; i++) {
  12284. listeners[i].fn = falseFn;
  12285. }
  12286. }
  12287. // clear all listeners for a type if function isn't specified
  12288. delete this._events[type];
  12289. return;
  12290. }
  12291. if (typeof fn !== 'function') {
  12292. __f__("warn", 'wrong listener type: ' + _typeof(fn), " at node_modules/leaflet/dist/leaflet-src.js:563");
  12293. return;
  12294. }
  12295. // find fn and remove it
  12296. var index = this._listens(type, fn, context);
  12297. if (index !== false) {
  12298. var listener = listeners[index];
  12299. if (this._firingCount) {
  12300. // set the removed listener to noop so that's not called if remove happens in fire
  12301. listener.fn = falseFn;
  12302. /* copy array in case events are being fired */
  12303. this._events[type] = listeners = listeners.slice();
  12304. }
  12305. listeners.splice(index, 1);
  12306. }
  12307. },
  12308. // @method fire(type: String, data?: Object, propagate?: Boolean): this
  12309. // Fires an event of the specified type. You can optionally provide a data
  12310. // object — the first argument of the listener function will contain its
  12311. // properties. The event can optionally be propagated to event parents.
  12312. fire: function fire(type, data, propagate) {
  12313. if (!this.listens(type, propagate)) {
  12314. return this;
  12315. }
  12316. var event = extend({}, data, {
  12317. type: type,
  12318. target: this,
  12319. sourceTarget: data && data.sourceTarget || this
  12320. });
  12321. if (this._events) {
  12322. var listeners = this._events[type];
  12323. if (listeners) {
  12324. this._firingCount = this._firingCount + 1 || 1;
  12325. for (var i = 0, len = listeners.length; i < len; i++) {
  12326. var l = listeners[i];
  12327. // off overwrites l.fn, so we need to copy fn to a var
  12328. var fn = l.fn;
  12329. if (l.once) {
  12330. this.off(type, fn, l.ctx);
  12331. }
  12332. fn.call(l.ctx || this, event);
  12333. }
  12334. this._firingCount--;
  12335. }
  12336. }
  12337. if (propagate) {
  12338. // propagate the event to parents (set with addEventParent)
  12339. this._propagateEvent(event);
  12340. }
  12341. return this;
  12342. },
  12343. // @method listens(type: String, propagate?: Boolean): Boolean
  12344. // @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean
  12345. // Returns `true` if a particular event type has any listeners attached to it.
  12346. // The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.
  12347. listens: function listens(type, fn, context, propagate) {
  12348. if (typeof type !== 'string') {
  12349. __f__("warn", '"string" type argument expected', " at node_modules/leaflet/dist/leaflet-src.js:627");
  12350. }
  12351. // we don't overwrite the input `fn` value, because we need to use it for propagation
  12352. var _fn = fn;
  12353. if (typeof fn !== 'function') {
  12354. propagate = !!fn;
  12355. _fn = undefined;
  12356. context = undefined;
  12357. }
  12358. var listeners = this._events && this._events[type];
  12359. if (listeners && listeners.length) {
  12360. if (this._listens(type, _fn, context) !== false) {
  12361. return true;
  12362. }
  12363. }
  12364. if (propagate) {
  12365. // also check parents for listeners if event propagates
  12366. for (var id in this._eventParents) {
  12367. if (this._eventParents[id].listens(type, fn, context, propagate)) {
  12368. return true;
  12369. }
  12370. }
  12371. }
  12372. return false;
  12373. },
  12374. // returns the index (number) or false
  12375. _listens: function _listens(type, fn, context) {
  12376. if (!this._events) {
  12377. return false;
  12378. }
  12379. var listeners = this._events[type] || [];
  12380. if (!fn) {
  12381. return !!listeners.length;
  12382. }
  12383. if (context === this) {
  12384. // Less memory footprint.
  12385. context = undefined;
  12386. }
  12387. for (var i = 0, len = listeners.length; i < len; i++) {
  12388. if (listeners[i].fn === fn && listeners[i].ctx === context) {
  12389. return i;
  12390. }
  12391. }
  12392. return false;
  12393. },
  12394. // @method once(…): this
  12395. // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.
  12396. once: function once(types, fn, context) {
  12397. // types can be a map of types/handlers
  12398. if (_typeof(types) === 'object') {
  12399. for (var type in types) {
  12400. // we don't process space-separated events here for performance;
  12401. // it's a hot path since Layer uses the on(obj) syntax
  12402. this._on(type, types[type], fn, true);
  12403. }
  12404. } else {
  12405. // types can be a string of space-separated words
  12406. types = splitWords(types);
  12407. for (var i = 0, len = types.length; i < len; i++) {
  12408. this._on(types[i], fn, context, true);
  12409. }
  12410. }
  12411. return this;
  12412. },
  12413. // @method addEventParent(obj: Evented): this
  12414. // Adds an event parent - an `Evented` that will receive propagated events
  12415. addEventParent: function addEventParent(obj) {
  12416. this._eventParents = this._eventParents || {};
  12417. this._eventParents[stamp(obj)] = obj;
  12418. return this;
  12419. },
  12420. // @method removeEventParent(obj: Evented): this
  12421. // Removes an event parent, so it will stop receiving propagated events
  12422. removeEventParent: function removeEventParent(obj) {
  12423. if (this._eventParents) {
  12424. delete this._eventParents[stamp(obj)];
  12425. }
  12426. return this;
  12427. },
  12428. _propagateEvent: function _propagateEvent(e) {
  12429. for (var id in this._eventParents) {
  12430. this._eventParents[id].fire(e.type, extend({
  12431. layer: e.target,
  12432. propagatedFrom: e.target
  12433. }, e), true);
  12434. }
  12435. }
  12436. };
  12437. // aliases; we should ditch those eventually
  12438. // @method addEventListener(…): this
  12439. // Alias to [`on(…)`](#evented-on)
  12440. Events.addEventListener = Events.on;
  12441. // @method removeEventListener(…): this
  12442. // Alias to [`off(…)`](#evented-off)
  12443. // @method clearAllEventListeners(…): this
  12444. // Alias to [`off()`](#evented-off)
  12445. Events.removeEventListener = Events.clearAllEventListeners = Events.off;
  12446. // @method addOneTimeEventListener(…): this
  12447. // Alias to [`once(…)`](#evented-once)
  12448. Events.addOneTimeEventListener = Events.once;
  12449. // @method fireEvent(…): this
  12450. // Alias to [`fire(…)`](#evented-fire)
  12451. Events.fireEvent = Events.fire;
  12452. // @method hasEventListeners(…): Boolean
  12453. // Alias to [`listens(…)`](#evented-listens)
  12454. Events.hasEventListeners = Events.listens;
  12455. var Evented = Class.extend(Events);
  12456. /*
  12457. * @class Point
  12458. * @aka L.Point
  12459. *
  12460. * Represents a point with `x` and `y` coordinates in pixels.
  12461. *
  12462. * @example
  12463. *
  12464. * ```js
  12465. * var point = L.point(200, 300);
  12466. * ```
  12467. *
  12468. * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:
  12469. *
  12470. * ```js
  12471. * map.panBy([200, 300]);
  12472. * map.panBy(L.point(200, 300));
  12473. * ```
  12474. *
  12475. * Note that `Point` does not inherit from Leaflet's `Class` object,
  12476. * which means new classes can't inherit from it, and new methods
  12477. * can't be added to it with the `include` function.
  12478. */
  12479. function Point(x, y, round) {
  12480. // @property x: Number; The `x` coordinate of the point
  12481. this.x = round ? Math.round(x) : x;
  12482. // @property y: Number; The `y` coordinate of the point
  12483. this.y = round ? Math.round(y) : y;
  12484. }
  12485. var trunc = Math.trunc || function (v) {
  12486. return v > 0 ? Math.floor(v) : Math.ceil(v);
  12487. };
  12488. Point.prototype = {
  12489. // @method clone(): Point
  12490. // Returns a copy of the current point.
  12491. clone: function clone() {
  12492. return new Point(this.x, this.y);
  12493. },
  12494. // @method add(otherPoint: Point): Point
  12495. // Returns the result of addition of the current and the given points.
  12496. add: function add(point) {
  12497. // non-destructive, returns a new point
  12498. return this.clone()._add(toPoint(point));
  12499. },
  12500. _add: function _add(point) {
  12501. // destructive, used directly for performance in situations where it's safe to modify existing point
  12502. this.x += point.x;
  12503. this.y += point.y;
  12504. return this;
  12505. },
  12506. // @method subtract(otherPoint: Point): Point
  12507. // Returns the result of subtraction of the given point from the current.
  12508. subtract: function subtract(point) {
  12509. return this.clone()._subtract(toPoint(point));
  12510. },
  12511. _subtract: function _subtract(point) {
  12512. this.x -= point.x;
  12513. this.y -= point.y;
  12514. return this;
  12515. },
  12516. // @method divideBy(num: Number): Point
  12517. // Returns the result of division of the current point by the given number.
  12518. divideBy: function divideBy(num) {
  12519. return this.clone()._divideBy(num);
  12520. },
  12521. _divideBy: function _divideBy(num) {
  12522. this.x /= num;
  12523. this.y /= num;
  12524. return this;
  12525. },
  12526. // @method multiplyBy(num: Number): Point
  12527. // Returns the result of multiplication of the current point by the given number.
  12528. multiplyBy: function multiplyBy(num) {
  12529. return this.clone()._multiplyBy(num);
  12530. },
  12531. _multiplyBy: function _multiplyBy(num) {
  12532. this.x *= num;
  12533. this.y *= num;
  12534. return this;
  12535. },
  12536. // @method scaleBy(scale: Point): Point
  12537. // Multiply each coordinate of the current point by each coordinate of
  12538. // `scale`. In linear algebra terms, multiply the point by the
  12539. // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)
  12540. // defined by `scale`.
  12541. scaleBy: function scaleBy(point) {
  12542. return new Point(this.x * point.x, this.y * point.y);
  12543. },
  12544. // @method unscaleBy(scale: Point): Point
  12545. // Inverse of `scaleBy`. Divide each coordinate of the current point by
  12546. // each coordinate of `scale`.
  12547. unscaleBy: function unscaleBy(point) {
  12548. return new Point(this.x / point.x, this.y / point.y);
  12549. },
  12550. // @method round(): Point
  12551. // Returns a copy of the current point with rounded coordinates.
  12552. round: function round() {
  12553. return this.clone()._round();
  12554. },
  12555. _round: function _round() {
  12556. this.x = Math.round(this.x);
  12557. this.y = Math.round(this.y);
  12558. return this;
  12559. },
  12560. // @method floor(): Point
  12561. // Returns a copy of the current point with floored coordinates (rounded down).
  12562. floor: function floor() {
  12563. return this.clone()._floor();
  12564. },
  12565. _floor: function _floor() {
  12566. this.x = Math.floor(this.x);
  12567. this.y = Math.floor(this.y);
  12568. return this;
  12569. },
  12570. // @method ceil(): Point
  12571. // Returns a copy of the current point with ceiled coordinates (rounded up).
  12572. ceil: function ceil() {
  12573. return this.clone()._ceil();
  12574. },
  12575. _ceil: function _ceil() {
  12576. this.x = Math.ceil(this.x);
  12577. this.y = Math.ceil(this.y);
  12578. return this;
  12579. },
  12580. // @method trunc(): Point
  12581. // Returns a copy of the current point with truncated coordinates (rounded towards zero).
  12582. trunc: function trunc() {
  12583. return this.clone()._trunc();
  12584. },
  12585. _trunc: function _trunc() {
  12586. this.x = trunc(this.x);
  12587. this.y = trunc(this.y);
  12588. return this;
  12589. },
  12590. // @method distanceTo(otherPoint: Point): Number
  12591. // Returns the cartesian distance between the current and the given points.
  12592. distanceTo: function distanceTo(point) {
  12593. point = toPoint(point);
  12594. var x = point.x - this.x,
  12595. y = point.y - this.y;
  12596. return Math.sqrt(x * x + y * y);
  12597. },
  12598. // @method equals(otherPoint: Point): Boolean
  12599. // Returns `true` if the given point has the same coordinates.
  12600. equals: function equals(point) {
  12601. point = toPoint(point);
  12602. return point.x === this.x && point.y === this.y;
  12603. },
  12604. // @method contains(otherPoint: Point): Boolean
  12605. // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).
  12606. contains: function contains(point) {
  12607. point = toPoint(point);
  12608. return Math.abs(point.x) <= Math.abs(this.x) && Math.abs(point.y) <= Math.abs(this.y);
  12609. },
  12610. // @method toString(): String
  12611. // Returns a string representation of the point for debugging purposes.
  12612. toString: function toString() {
  12613. return 'Point(' + formatNum(this.x) + ', ' + formatNum(this.y) + ')';
  12614. }
  12615. };
  12616. // @factory L.point(x: Number, y: Number, round?: Boolean)
  12617. // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.
  12618. // @alternative
  12619. // @factory L.point(coords: Number[])
  12620. // Expects an array of the form `[x, y]` instead.
  12621. // @alternative
  12622. // @factory L.point(coords: Object)
  12623. // Expects a plain object of the form `{x: Number, y: Number}` instead.
  12624. function toPoint(x, y, round) {
  12625. if (x instanceof Point) {
  12626. return x;
  12627. }
  12628. if (isArray(x)) {
  12629. return new Point(x[0], x[1]);
  12630. }
  12631. if (x === undefined || x === null) {
  12632. return x;
  12633. }
  12634. if (_typeof(x) === 'object' && 'x' in x && 'y' in x) {
  12635. return new Point(x.x, x.y);
  12636. }
  12637. return new Point(x, y, round);
  12638. }
  12639. /*
  12640. * @class Bounds
  12641. * @aka L.Bounds
  12642. *
  12643. * Represents a rectangular area in pixel coordinates.
  12644. *
  12645. * @example
  12646. *
  12647. * ```js
  12648. * var p1 = L.point(10, 10),
  12649. * p2 = L.point(40, 60),
  12650. * bounds = L.bounds(p1, p2);
  12651. * ```
  12652. *
  12653. * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:
  12654. *
  12655. * ```js
  12656. * otherBounds.intersects([[10, 10], [40, 60]]);
  12657. * ```
  12658. *
  12659. * Note that `Bounds` does not inherit from Leaflet's `Class` object,
  12660. * which means new classes can't inherit from it, and new methods
  12661. * can't be added to it with the `include` function.
  12662. */
  12663. function Bounds(a, b) {
  12664. if (!a) {
  12665. return;
  12666. }
  12667. var points = b ? [a, b] : a;
  12668. for (var i = 0, len = points.length; i < len; i++) {
  12669. this.extend(points[i]);
  12670. }
  12671. }
  12672. Bounds.prototype = {
  12673. // @method extend(point: Point): this
  12674. // Extends the bounds to contain the given point.
  12675. // @alternative
  12676. // @method extend(otherBounds: Bounds): this
  12677. // Extend the bounds to contain the given bounds
  12678. extend: function extend(obj) {
  12679. var min2, max2;
  12680. if (!obj) {
  12681. return this;
  12682. }
  12683. if (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {
  12684. min2 = max2 = toPoint(obj);
  12685. } else {
  12686. obj = toBounds(obj);
  12687. min2 = obj.min;
  12688. max2 = obj.max;
  12689. if (!min2 || !max2) {
  12690. return this;
  12691. }
  12692. }
  12693. // @property min: Point
  12694. // The top left corner of the rectangle.
  12695. // @property max: Point
  12696. // The bottom right corner of the rectangle.
  12697. if (!this.min && !this.max) {
  12698. this.min = min2.clone();
  12699. this.max = max2.clone();
  12700. } else {
  12701. this.min.x = Math.min(min2.x, this.min.x);
  12702. this.max.x = Math.max(max2.x, this.max.x);
  12703. this.min.y = Math.min(min2.y, this.min.y);
  12704. this.max.y = Math.max(max2.y, this.max.y);
  12705. }
  12706. return this;
  12707. },
  12708. // @method getCenter(round?: Boolean): Point
  12709. // Returns the center point of the bounds.
  12710. getCenter: function getCenter(round) {
  12711. return toPoint((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, round);
  12712. },
  12713. // @method getBottomLeft(): Point
  12714. // Returns the bottom-left point of the bounds.
  12715. getBottomLeft: function getBottomLeft() {
  12716. return toPoint(this.min.x, this.max.y);
  12717. },
  12718. // @method getTopRight(): Point
  12719. // Returns the top-right point of the bounds.
  12720. getTopRight: function getTopRight() {
  12721. // -> Point
  12722. return toPoint(this.max.x, this.min.y);
  12723. },
  12724. // @method getTopLeft(): Point
  12725. // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).
  12726. getTopLeft: function getTopLeft() {
  12727. return this.min; // left, top
  12728. },
  12729. // @method getBottomRight(): Point
  12730. // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).
  12731. getBottomRight: function getBottomRight() {
  12732. return this.max; // right, bottom
  12733. },
  12734. // @method getSize(): Point
  12735. // Returns the size of the given bounds
  12736. getSize: function getSize() {
  12737. return this.max.subtract(this.min);
  12738. },
  12739. // @method contains(otherBounds: Bounds): Boolean
  12740. // Returns `true` if the rectangle contains the given one.
  12741. // @alternative
  12742. // @method contains(point: Point): Boolean
  12743. // Returns `true` if the rectangle contains the given point.
  12744. contains: function contains(obj) {
  12745. var min, max;
  12746. if (typeof obj[0] === 'number' || obj instanceof Point) {
  12747. obj = toPoint(obj);
  12748. } else {
  12749. obj = toBounds(obj);
  12750. }
  12751. if (obj instanceof Bounds) {
  12752. min = obj.min;
  12753. max = obj.max;
  12754. } else {
  12755. min = max = obj;
  12756. }
  12757. return min.x >= this.min.x && max.x <= this.max.x && min.y >= this.min.y && max.y <= this.max.y;
  12758. },
  12759. // @method intersects(otherBounds: Bounds): Boolean
  12760. // Returns `true` if the rectangle intersects the given bounds. Two bounds
  12761. // intersect if they have at least one point in common.
  12762. intersects: function intersects(bounds) {
  12763. // (Bounds) -> Boolean
  12764. bounds = toBounds(bounds);
  12765. var min = this.min,
  12766. max = this.max,
  12767. min2 = bounds.min,
  12768. max2 = bounds.max,
  12769. xIntersects = max2.x >= min.x && min2.x <= max.x,
  12770. yIntersects = max2.y >= min.y && min2.y <= max.y;
  12771. return xIntersects && yIntersects;
  12772. },
  12773. // @method overlaps(otherBounds: Bounds): Boolean
  12774. // Returns `true` if the rectangle overlaps the given bounds. Two bounds
  12775. // overlap if their intersection is an area.
  12776. overlaps: function overlaps(bounds) {
  12777. // (Bounds) -> Boolean
  12778. bounds = toBounds(bounds);
  12779. var min = this.min,
  12780. max = this.max,
  12781. min2 = bounds.min,
  12782. max2 = bounds.max,
  12783. xOverlaps = max2.x > min.x && min2.x < max.x,
  12784. yOverlaps = max2.y > min.y && min2.y < max.y;
  12785. return xOverlaps && yOverlaps;
  12786. },
  12787. // @method isValid(): Boolean
  12788. // Returns `true` if the bounds are properly initialized.
  12789. isValid: function isValid() {
  12790. return !!(this.min && this.max);
  12791. },
  12792. // @method pad(bufferRatio: Number): Bounds
  12793. // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.
  12794. // For example, a ratio of 0.5 extends the bounds by 50% in each direction.
  12795. // Negative values will retract the bounds.
  12796. pad: function pad(bufferRatio) {
  12797. var min = this.min,
  12798. max = this.max,
  12799. heightBuffer = Math.abs(min.x - max.x) * bufferRatio,
  12800. widthBuffer = Math.abs(min.y - max.y) * bufferRatio;
  12801. return toBounds(toPoint(min.x - heightBuffer, min.y - widthBuffer), toPoint(max.x + heightBuffer, max.y + widthBuffer));
  12802. },
  12803. // @method equals(otherBounds: Bounds): Boolean
  12804. // Returns `true` if the rectangle is equivalent to the given bounds.
  12805. equals: function equals(bounds) {
  12806. if (!bounds) {
  12807. return false;
  12808. }
  12809. bounds = toBounds(bounds);
  12810. return this.min.equals(bounds.getTopLeft()) && this.max.equals(bounds.getBottomRight());
  12811. }
  12812. };
  12813. // @factory L.bounds(corner1: Point, corner2: Point)
  12814. // Creates a Bounds object from two corners coordinate pairs.
  12815. // @alternative
  12816. // @factory L.bounds(points: Point[])
  12817. // Creates a Bounds object from the given array of points.
  12818. function toBounds(a, b) {
  12819. if (!a || a instanceof Bounds) {
  12820. return a;
  12821. }
  12822. return new Bounds(a, b);
  12823. }
  12824. /*
  12825. * @class LatLngBounds
  12826. * @aka L.LatLngBounds
  12827. *
  12828. * Represents a rectangular geographical area on a map.
  12829. *
  12830. * @example
  12831. *
  12832. * ```js
  12833. * var corner1 = L.latLng(40.712, -74.227),
  12834. * corner2 = L.latLng(40.774, -74.125),
  12835. * bounds = L.latLngBounds(corner1, corner2);
  12836. * ```
  12837. *
  12838. * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:
  12839. *
  12840. * ```js
  12841. * map.fitBounds([
  12842. * [40.712, -74.227],
  12843. * [40.774, -74.125]
  12844. * ]);
  12845. * ```
  12846. *
  12847. * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.
  12848. *
  12849. * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,
  12850. * which means new classes can't inherit from it, and new methods
  12851. * can't be added to it with the `include` function.
  12852. */
  12853. function LatLngBounds(corner1, corner2) {
  12854. // (LatLng, LatLng) or (LatLng[])
  12855. if (!corner1) {
  12856. return;
  12857. }
  12858. var latlngs = corner2 ? [corner1, corner2] : corner1;
  12859. for (var i = 0, len = latlngs.length; i < len; i++) {
  12860. this.extend(latlngs[i]);
  12861. }
  12862. }
  12863. LatLngBounds.prototype = {
  12864. // @method extend(latlng: LatLng): this
  12865. // Extend the bounds to contain the given point
  12866. // @alternative
  12867. // @method extend(otherBounds: LatLngBounds): this
  12868. // Extend the bounds to contain the given bounds
  12869. extend: function extend(obj) {
  12870. var sw = this._southWest,
  12871. ne = this._northEast,
  12872. sw2,
  12873. ne2;
  12874. if (obj instanceof LatLng) {
  12875. sw2 = obj;
  12876. ne2 = obj;
  12877. } else if (obj instanceof LatLngBounds) {
  12878. sw2 = obj._southWest;
  12879. ne2 = obj._northEast;
  12880. if (!sw2 || !ne2) {
  12881. return this;
  12882. }
  12883. } else {
  12884. return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;
  12885. }
  12886. if (!sw && !ne) {
  12887. this._southWest = new LatLng(sw2.lat, sw2.lng);
  12888. this._northEast = new LatLng(ne2.lat, ne2.lng);
  12889. } else {
  12890. sw.lat = Math.min(sw2.lat, sw.lat);
  12891. sw.lng = Math.min(sw2.lng, sw.lng);
  12892. ne.lat = Math.max(ne2.lat, ne.lat);
  12893. ne.lng = Math.max(ne2.lng, ne.lng);
  12894. }
  12895. return this;
  12896. },
  12897. // @method pad(bufferRatio: Number): LatLngBounds
  12898. // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.
  12899. // For example, a ratio of 0.5 extends the bounds by 50% in each direction.
  12900. // Negative values will retract the bounds.
  12901. pad: function pad(bufferRatio) {
  12902. var sw = this._southWest,
  12903. ne = this._northEast,
  12904. heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,
  12905. widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;
  12906. return new LatLngBounds(new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));
  12907. },
  12908. // @method getCenter(): LatLng
  12909. // Returns the center point of the bounds.
  12910. getCenter: function getCenter() {
  12911. return new LatLng((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this._northEast.lng) / 2);
  12912. },
  12913. // @method getSouthWest(): LatLng
  12914. // Returns the south-west point of the bounds.
  12915. getSouthWest: function getSouthWest() {
  12916. return this._southWest;
  12917. },
  12918. // @method getNorthEast(): LatLng
  12919. // Returns the north-east point of the bounds.
  12920. getNorthEast: function getNorthEast() {
  12921. return this._northEast;
  12922. },
  12923. // @method getNorthWest(): LatLng
  12924. // Returns the north-west point of the bounds.
  12925. getNorthWest: function getNorthWest() {
  12926. return new LatLng(this.getNorth(), this.getWest());
  12927. },
  12928. // @method getSouthEast(): LatLng
  12929. // Returns the south-east point of the bounds.
  12930. getSouthEast: function getSouthEast() {
  12931. return new LatLng(this.getSouth(), this.getEast());
  12932. },
  12933. // @method getWest(): Number
  12934. // Returns the west longitude of the bounds
  12935. getWest: function getWest() {
  12936. return this._southWest.lng;
  12937. },
  12938. // @method getSouth(): Number
  12939. // Returns the south latitude of the bounds
  12940. getSouth: function getSouth() {
  12941. return this._southWest.lat;
  12942. },
  12943. // @method getEast(): Number
  12944. // Returns the east longitude of the bounds
  12945. getEast: function getEast() {
  12946. return this._northEast.lng;
  12947. },
  12948. // @method getNorth(): Number
  12949. // Returns the north latitude of the bounds
  12950. getNorth: function getNorth() {
  12951. return this._northEast.lat;
  12952. },
  12953. // @method contains(otherBounds: LatLngBounds): Boolean
  12954. // Returns `true` if the rectangle contains the given one.
  12955. // @alternative
  12956. // @method contains (latlng: LatLng): Boolean
  12957. // Returns `true` if the rectangle contains the given point.
  12958. contains: function contains(obj) {
  12959. // (LatLngBounds) or (LatLng) -> Boolean
  12960. if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {
  12961. obj = toLatLng(obj);
  12962. } else {
  12963. obj = toLatLngBounds(obj);
  12964. }
  12965. var sw = this._southWest,
  12966. ne = this._northEast,
  12967. sw2,
  12968. ne2;
  12969. if (obj instanceof LatLngBounds) {
  12970. sw2 = obj.getSouthWest();
  12971. ne2 = obj.getNorthEast();
  12972. } else {
  12973. sw2 = ne2 = obj;
  12974. }
  12975. return sw2.lat >= sw.lat && ne2.lat <= ne.lat && sw2.lng >= sw.lng && ne2.lng <= ne.lng;
  12976. },
  12977. // @method intersects(otherBounds: LatLngBounds): Boolean
  12978. // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.
  12979. intersects: function intersects(bounds) {
  12980. bounds = toLatLngBounds(bounds);
  12981. var sw = this._southWest,
  12982. ne = this._northEast,
  12983. sw2 = bounds.getSouthWest(),
  12984. ne2 = bounds.getNorthEast(),
  12985. latIntersects = ne2.lat >= sw.lat && sw2.lat <= ne.lat,
  12986. lngIntersects = ne2.lng >= sw.lng && sw2.lng <= ne.lng;
  12987. return latIntersects && lngIntersects;
  12988. },
  12989. // @method overlaps(otherBounds: LatLngBounds): Boolean
  12990. // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.
  12991. overlaps: function overlaps(bounds) {
  12992. bounds = toLatLngBounds(bounds);
  12993. var sw = this._southWest,
  12994. ne = this._northEast,
  12995. sw2 = bounds.getSouthWest(),
  12996. ne2 = bounds.getNorthEast(),
  12997. latOverlaps = ne2.lat > sw.lat && sw2.lat < ne.lat,
  12998. lngOverlaps = ne2.lng > sw.lng && sw2.lng < ne.lng;
  12999. return latOverlaps && lngOverlaps;
  13000. },
  13001. // @method toBBoxString(): String
  13002. // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.
  13003. toBBoxString: function toBBoxString() {
  13004. return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');
  13005. },
  13006. // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean
  13007. // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.
  13008. equals: function equals(bounds, maxMargin) {
  13009. if (!bounds) {
  13010. return false;
  13011. }
  13012. bounds = toLatLngBounds(bounds);
  13013. return this._southWest.equals(bounds.getSouthWest(), maxMargin) && this._northEast.equals(bounds.getNorthEast(), maxMargin);
  13014. },
  13015. // @method isValid(): Boolean
  13016. // Returns `true` if the bounds are properly initialized.
  13017. isValid: function isValid() {
  13018. return !!(this._southWest && this._northEast);
  13019. }
  13020. };
  13021. // TODO International date line?
  13022. // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)
  13023. // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.
  13024. // @alternative
  13025. // @factory L.latLngBounds(latlngs: LatLng[])
  13026. // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).
  13027. function toLatLngBounds(a, b) {
  13028. if (a instanceof LatLngBounds) {
  13029. return a;
  13030. }
  13031. return new LatLngBounds(a, b);
  13032. }
  13033. /* @class LatLng
  13034. * @aka L.LatLng
  13035. *
  13036. * Represents a geographical point with a certain latitude and longitude.
  13037. *
  13038. * @example
  13039. *
  13040. * ```
  13041. * var latlng = L.latLng(50.5, 30.5);
  13042. * ```
  13043. *
  13044. * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:
  13045. *
  13046. * ```
  13047. * map.panTo([50, 30]);
  13048. * map.panTo({lon: 30, lat: 50});
  13049. * map.panTo({lat: 50, lng: 30});
  13050. * map.panTo(L.latLng(50, 30));
  13051. * ```
  13052. *
  13053. * Note that `LatLng` does not inherit from Leaflet's `Class` object,
  13054. * which means new classes can't inherit from it, and new methods
  13055. * can't be added to it with the `include` function.
  13056. */
  13057. function LatLng(lat, lng, alt) {
  13058. if (isNaN(lat) || isNaN(lng)) {
  13059. throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');
  13060. }
  13061. // @property lat: Number
  13062. // Latitude in degrees
  13063. this.lat = +lat;
  13064. // @property lng: Number
  13065. // Longitude in degrees
  13066. this.lng = +lng;
  13067. // @property alt: Number
  13068. // Altitude in meters (optional)
  13069. if (alt !== undefined) {
  13070. this.alt = +alt;
  13071. }
  13072. }
  13073. LatLng.prototype = {
  13074. // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean
  13075. // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.
  13076. equals: function equals(obj, maxMargin) {
  13077. if (!obj) {
  13078. return false;
  13079. }
  13080. obj = toLatLng(obj);
  13081. var margin = Math.max(Math.abs(this.lat - obj.lat), Math.abs(this.lng - obj.lng));
  13082. return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);
  13083. },
  13084. // @method toString(): String
  13085. // Returns a string representation of the point (for debugging purposes).
  13086. toString: function toString(precision) {
  13087. return 'LatLng(' + formatNum(this.lat, precision) + ', ' + formatNum(this.lng, precision) + ')';
  13088. },
  13089. // @method distanceTo(otherLatLng: LatLng): Number
  13090. // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).
  13091. distanceTo: function distanceTo(other) {
  13092. return Earth.distance(this, toLatLng(other));
  13093. },
  13094. // @method wrap(): LatLng
  13095. // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.
  13096. wrap: function wrap() {
  13097. return Earth.wrapLatLng(this);
  13098. },
  13099. // @method toBounds(sizeInMeters: Number): LatLngBounds
  13100. // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.
  13101. toBounds: function toBounds(sizeInMeters) {
  13102. var latAccuracy = 180 * sizeInMeters / 40075017,
  13103. lngAccuracy = latAccuracy / Math.cos(Math.PI / 180 * this.lat);
  13104. return toLatLngBounds([this.lat - latAccuracy, this.lng - lngAccuracy], [this.lat + latAccuracy, this.lng + lngAccuracy]);
  13105. },
  13106. clone: function clone() {
  13107. return new LatLng(this.lat, this.lng, this.alt);
  13108. }
  13109. };
  13110. // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng
  13111. // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).
  13112. // @alternative
  13113. // @factory L.latLng(coords: Array): LatLng
  13114. // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.
  13115. // @alternative
  13116. // @factory L.latLng(coords: Object): LatLng
  13117. // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.
  13118. function toLatLng(a, b, c) {
  13119. if (a instanceof LatLng) {
  13120. return a;
  13121. }
  13122. if (isArray(a) && _typeof(a[0]) !== 'object') {
  13123. if (a.length === 3) {
  13124. return new LatLng(a[0], a[1], a[2]);
  13125. }
  13126. if (a.length === 2) {
  13127. return new LatLng(a[0], a[1]);
  13128. }
  13129. return null;
  13130. }
  13131. if (a === undefined || a === null) {
  13132. return a;
  13133. }
  13134. if (_typeof(a) === 'object' && 'lat' in a) {
  13135. return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);
  13136. }
  13137. if (b === undefined) {
  13138. return null;
  13139. }
  13140. return new LatLng(a, b, c);
  13141. }
  13142. /*
  13143. * @namespace CRS
  13144. * @crs L.CRS.Base
  13145. * Object that defines coordinate reference systems for projecting
  13146. * geographical points into pixel (screen) coordinates and back (and to
  13147. * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See
  13148. * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).
  13149. *
  13150. * Leaflet defines the most usual CRSs by default. If you want to use a
  13151. * CRS not defined by default, take a look at the
  13152. * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.
  13153. *
  13154. * Note that the CRS instances do not inherit from Leaflet's `Class` object,
  13155. * and can't be instantiated. Also, new classes can't inherit from them,
  13156. * and methods can't be added to them with the `include` function.
  13157. */
  13158. var CRS = {
  13159. // @method latLngToPoint(latlng: LatLng, zoom: Number): Point
  13160. // Projects geographical coordinates into pixel coordinates for a given zoom.
  13161. latLngToPoint: function latLngToPoint(latlng, zoom) {
  13162. var projectedPoint = this.projection.project(latlng),
  13163. scale = this.scale(zoom);
  13164. return this.transformation._transform(projectedPoint, scale);
  13165. },
  13166. // @method pointToLatLng(point: Point, zoom: Number): LatLng
  13167. // The inverse of `latLngToPoint`. Projects pixel coordinates on a given
  13168. // zoom into geographical coordinates.
  13169. pointToLatLng: function pointToLatLng(point, zoom) {
  13170. var scale = this.scale(zoom),
  13171. untransformedPoint = this.transformation.untransform(point, scale);
  13172. return this.projection.unproject(untransformedPoint);
  13173. },
  13174. // @method project(latlng: LatLng): Point
  13175. // Projects geographical coordinates into coordinates in units accepted for
  13176. // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).
  13177. project: function project(latlng) {
  13178. return this.projection.project(latlng);
  13179. },
  13180. // @method unproject(point: Point): LatLng
  13181. // Given a projected coordinate returns the corresponding LatLng.
  13182. // The inverse of `project`.
  13183. unproject: function unproject(point) {
  13184. return this.projection.unproject(point);
  13185. },
  13186. // @method scale(zoom: Number): Number
  13187. // Returns the scale used when transforming projected coordinates into
  13188. // pixel coordinates for a particular zoom. For example, it returns
  13189. // `256 * 2^zoom` for Mercator-based CRS.
  13190. scale: function scale(zoom) {
  13191. return 256 * Math.pow(2, zoom);
  13192. },
  13193. // @method zoom(scale: Number): Number
  13194. // Inverse of `scale()`, returns the zoom level corresponding to a scale
  13195. // factor of `scale`.
  13196. zoom: function zoom(scale) {
  13197. return Math.log(scale / 256) / Math.LN2;
  13198. },
  13199. // @method getProjectedBounds(zoom: Number): Bounds
  13200. // Returns the projection's bounds scaled and transformed for the provided `zoom`.
  13201. getProjectedBounds: function getProjectedBounds(zoom) {
  13202. if (this.infinite) {
  13203. return null;
  13204. }
  13205. var b = this.projection.bounds,
  13206. s = this.scale(zoom),
  13207. min = this.transformation.transform(b.min, s),
  13208. max = this.transformation.transform(b.max, s);
  13209. return new Bounds(min, max);
  13210. },
  13211. // @method distance(latlng1: LatLng, latlng2: LatLng): Number
  13212. // Returns the distance between two geographical coordinates.
  13213. // @property code: String
  13214. // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)
  13215. //
  13216. // @property wrapLng: Number[]
  13217. // An array of two numbers defining whether the longitude (horizontal) coordinate
  13218. // axis wraps around a given range and how. Defaults to `[-180, 180]` in most
  13219. // geographical CRSs. If `undefined`, the longitude axis does not wrap around.
  13220. //
  13221. // @property wrapLat: Number[]
  13222. // Like `wrapLng`, but for the latitude (vertical) axis.
  13223. // wrapLng: [min, max],
  13224. // wrapLat: [min, max],
  13225. // @property infinite: Boolean
  13226. // If true, the coordinate space will be unbounded (infinite in both axes)
  13227. infinite: false,
  13228. // @method wrapLatLng(latlng: LatLng): LatLng
  13229. // Returns a `LatLng` where lat and lng has been wrapped according to the
  13230. // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.
  13231. wrapLatLng: function wrapLatLng(latlng) {
  13232. var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,
  13233. lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,
  13234. alt = latlng.alt;
  13235. return new LatLng(lat, lng, alt);
  13236. },
  13237. // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds
  13238. // Returns a `LatLngBounds` with the same size as the given one, ensuring
  13239. // that its center is within the CRS's bounds.
  13240. // Only accepts actual `L.LatLngBounds` instances, not arrays.
  13241. wrapLatLngBounds: function wrapLatLngBounds(bounds) {
  13242. var center = bounds.getCenter(),
  13243. newCenter = this.wrapLatLng(center),
  13244. latShift = center.lat - newCenter.lat,
  13245. lngShift = center.lng - newCenter.lng;
  13246. if (latShift === 0 && lngShift === 0) {
  13247. return bounds;
  13248. }
  13249. var sw = bounds.getSouthWest(),
  13250. ne = bounds.getNorthEast(),
  13251. newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),
  13252. newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);
  13253. return new LatLngBounds(newSw, newNe);
  13254. }
  13255. };
  13256. /*
  13257. * @namespace CRS
  13258. * @crs L.CRS.Earth
  13259. *
  13260. * Serves as the base for CRS that are global such that they cover the earth.
  13261. * Can only be used as the base for other CRS and cannot be used directly,
  13262. * since it does not have a `code`, `projection` or `transformation`. `distance()` returns
  13263. * meters.
  13264. */
  13265. var Earth = extend({}, CRS, {
  13266. wrapLng: [-180, 180],
  13267. // Mean Earth Radius, as recommended for use by
  13268. // the International Union of Geodesy and Geophysics,
  13269. // see https://rosettacode.org/wiki/Haversine_formula
  13270. R: 6371000,
  13271. // distance between two geographical points using spherical law of cosines approximation
  13272. distance: function distance(latlng1, latlng2) {
  13273. var rad = Math.PI / 180,
  13274. lat1 = latlng1.lat * rad,
  13275. lat2 = latlng2.lat * rad,
  13276. sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),
  13277. sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),
  13278. a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,
  13279. c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  13280. return this.R * c;
  13281. }
  13282. });
  13283. /*
  13284. * @namespace Projection
  13285. * @projection L.Projection.SphericalMercator
  13286. *
  13287. * Spherical Mercator projection — the most common projection for online maps,
  13288. * used by almost all free and commercial tile providers. Assumes that Earth is
  13289. * a sphere. Used by the `EPSG:3857` CRS.
  13290. */
  13291. var earthRadius = 6378137;
  13292. var SphericalMercator = {
  13293. R: earthRadius,
  13294. MAX_LATITUDE: 85.0511287798,
  13295. project: function project(latlng) {
  13296. var d = Math.PI / 180,
  13297. max = this.MAX_LATITUDE,
  13298. lat = Math.max(Math.min(max, latlng.lat), -max),
  13299. sin = Math.sin(lat * d);
  13300. return new Point(this.R * latlng.lng * d, this.R * Math.log((1 + sin) / (1 - sin)) / 2);
  13301. },
  13302. unproject: function unproject(point) {
  13303. var d = 180 / Math.PI;
  13304. return new LatLng((2 * Math.atan(Math.exp(point.y / this.R)) - Math.PI / 2) * d, point.x * d / this.R);
  13305. },
  13306. bounds: function () {
  13307. var d = earthRadius * Math.PI;
  13308. return new Bounds([-d, -d], [d, d]);
  13309. }()
  13310. };
  13311. /*
  13312. * @class Transformation
  13313. * @aka L.Transformation
  13314. *
  13315. * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`
  13316. * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing
  13317. * the reverse. Used by Leaflet in its projections code.
  13318. *
  13319. * @example
  13320. *
  13321. * ```js
  13322. * var transformation = L.transformation(2, 5, -1, 10),
  13323. * p = L.point(1, 2),
  13324. * p2 = transformation.transform(p), // L.point(7, 8)
  13325. * p3 = transformation.untransform(p2); // L.point(1, 2)
  13326. * ```
  13327. */
  13328. // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)
  13329. // Creates a `Transformation` object with the given coefficients.
  13330. function Transformation(a, b, c, d) {
  13331. if (isArray(a)) {
  13332. // use array properties
  13333. this._a = a[0];
  13334. this._b = a[1];
  13335. this._c = a[2];
  13336. this._d = a[3];
  13337. return;
  13338. }
  13339. this._a = a;
  13340. this._b = b;
  13341. this._c = c;
  13342. this._d = d;
  13343. }
  13344. Transformation.prototype = {
  13345. // @method transform(point: Point, scale?: Number): Point
  13346. // Returns a transformed point, optionally multiplied by the given scale.
  13347. // Only accepts actual `L.Point` instances, not arrays.
  13348. transform: function transform(point, scale) {
  13349. // (Point, Number) -> Point
  13350. return this._transform(point.clone(), scale);
  13351. },
  13352. // destructive transform (faster)
  13353. _transform: function _transform(point, scale) {
  13354. scale = scale || 1;
  13355. point.x = scale * (this._a * point.x + this._b);
  13356. point.y = scale * (this._c * point.y + this._d);
  13357. return point;
  13358. },
  13359. // @method untransform(point: Point, scale?: Number): Point
  13360. // Returns the reverse transformation of the given point, optionally divided
  13361. // by the given scale. Only accepts actual `L.Point` instances, not arrays.
  13362. untransform: function untransform(point, scale) {
  13363. scale = scale || 1;
  13364. return new Point((point.x / scale - this._b) / this._a, (point.y / scale - this._d) / this._c);
  13365. }
  13366. };
  13367. // factory L.transformation(a: Number, b: Number, c: Number, d: Number)
  13368. // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)
  13369. // Instantiates a Transformation object with the given coefficients.
  13370. // @alternative
  13371. // @factory L.transformation(coefficients: Array): Transformation
  13372. // Expects an coefficients array of the form
  13373. // `[a: Number, b: Number, c: Number, d: Number]`.
  13374. function toTransformation(a, b, c, d) {
  13375. return new Transformation(a, b, c, d);
  13376. }
  13377. /*
  13378. * @namespace CRS
  13379. * @crs L.CRS.EPSG3857
  13380. *
  13381. * The most common CRS for online maps, used by almost all free and commercial
  13382. * tile providers. Uses Spherical Mercator projection. Set in by default in
  13383. * Map's `crs` option.
  13384. */
  13385. var EPSG3857 = extend({}, Earth, {
  13386. code: 'EPSG:3857',
  13387. projection: SphericalMercator,
  13388. transformation: function () {
  13389. var scale = 0.5 / (Math.PI * SphericalMercator.R);
  13390. return toTransformation(scale, 0.5, -scale, 0.5);
  13391. }()
  13392. });
  13393. var EPSG900913 = extend({}, EPSG3857, {
  13394. code: 'EPSG:900913'
  13395. });
  13396. // @namespace SVG; @section
  13397. // There are several static functions which can be called without instantiating L.SVG:
  13398. // @function create(name: String): SVGElement
  13399. // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),
  13400. // corresponding to the class name passed. For example, using 'line' will return
  13401. // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).
  13402. function svgCreate(name) {
  13403. return document.createElementNS('http://www.w3.org/2000/svg', name);
  13404. }
  13405. // @function pointsToPath(rings: Point[], closed: Boolean): String
  13406. // Generates a SVG path string for multiple rings, with each ring turning
  13407. // into "M..L..L.." instructions
  13408. function pointsToPath(rings, closed) {
  13409. var str = '',
  13410. i,
  13411. j,
  13412. len,
  13413. len2,
  13414. points,
  13415. p;
  13416. for (i = 0, len = rings.length; i < len; i++) {
  13417. points = rings[i];
  13418. for (j = 0, len2 = points.length; j < len2; j++) {
  13419. p = points[j];
  13420. str += (j ? 'L' : 'M') + p.x + ' ' + p.y;
  13421. }
  13422. // closes the ring for polygons; "x" is VML syntax
  13423. str += closed ? Browser.svg ? 'z' : 'x' : '';
  13424. }
  13425. // SVG complains about empty path strings
  13426. return str || 'M0 0';
  13427. }
  13428. /*
  13429. * @namespace Browser
  13430. * @aka L.Browser
  13431. *
  13432. * A namespace with static properties for browser/feature detection used by Leaflet internally.
  13433. *
  13434. * @example
  13435. *
  13436. * ```js
  13437. * if (L.Browser.ielt9) {
  13438. * alert('Upgrade your browser, dude!');
  13439. * }
  13440. * ```
  13441. */
  13442. var style = document.documentElement.style;
  13443. // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).
  13444. var ie = ('ActiveXObject' in window);
  13445. // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.
  13446. var ielt9 = ie && !document.addEventListener;
  13447. // @property edge: Boolean; `true` for the Edge web browser.
  13448. var edge = 'msLaunchUri' in navigator && !('documentMode' in document);
  13449. // @property webkit: Boolean;
  13450. // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).
  13451. var webkit = userAgentContains('webkit');
  13452. // @property android: Boolean
  13453. // **Deprecated.** `true` for any browser running on an Android platform.
  13454. var android = userAgentContains('android');
  13455. // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.
  13456. var android23 = userAgentContains('android 2') || userAgentContains('android 3');
  13457. /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */
  13458. var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit
  13459. // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)
  13460. var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);
  13461. // @property opera: Boolean; `true` for the Opera browser
  13462. var opera = !!window.opera;
  13463. // @property chrome: Boolean; `true` for the Chrome browser.
  13464. var chrome = !edge && userAgentContains('chrome');
  13465. // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.
  13466. var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;
  13467. // @property safari: Boolean; `true` for the Safari browser.
  13468. var safari = !chrome && userAgentContains('safari');
  13469. var phantom = userAgentContains('phantom');
  13470. // @property opera12: Boolean
  13471. // `true` for the Opera browser supporting CSS transforms (version 12 or later).
  13472. var opera12 = ('OTransition' in style);
  13473. // @property win: Boolean; `true` when the browser is running in a Windows platform
  13474. var win = navigator.platform.indexOf('Win') === 0;
  13475. // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.
  13476. var ie3d = ie && 'transition' in style;
  13477. // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.
  13478. var webkit3d = 'WebKitCSSMatrix' in window && 'm11' in new window.WebKitCSSMatrix() && !android23;
  13479. // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.
  13480. var gecko3d = ('MozPerspective' in style);
  13481. // @property any3d: Boolean
  13482. // `true` for all browsers supporting CSS transforms.
  13483. var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;
  13484. // @property mobile: Boolean; `true` for all browsers running in a mobile device.
  13485. var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');
  13486. // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.
  13487. var mobileWebkit = mobile && webkit;
  13488. // @property mobileWebkit3d: Boolean
  13489. // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.
  13490. var mobileWebkit3d = mobile && webkit3d;
  13491. // @property msPointer: Boolean
  13492. // `true` for browsers implementing the Microsoft touch events model (notably IE10).
  13493. var msPointer = !window.PointerEvent && window.MSPointerEvent;
  13494. // @property pointer: Boolean
  13495. // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).
  13496. var pointer = !!(window.PointerEvent || msPointer);
  13497. // @property touchNative: Boolean
  13498. // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).
  13499. // **This does not necessarily mean** that the browser is running in a computer with
  13500. // a touchscreen, it only means that the browser is capable of understanding
  13501. // touch events.
  13502. var touchNative = 'ontouchstart' in window || !!window.TouchEvent;
  13503. // @property touch: Boolean
  13504. // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.
  13505. // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.
  13506. var touch = !window.L_NO_TOUCH && (touchNative || pointer);
  13507. // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.
  13508. var mobileOpera = mobile && opera;
  13509. // @property mobileGecko: Boolean
  13510. // `true` for gecko-based browsers running in a mobile device.
  13511. var mobileGecko = mobile && gecko;
  13512. // @property retina: Boolean
  13513. // `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%.
  13514. var retina = (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI) > 1;
  13515. // @property passiveEvents: Boolean
  13516. // `true` for browsers that support passive events.
  13517. var passiveEvents = function () {
  13518. var supportsPassiveOption = false;
  13519. try {
  13520. var opts = Object.defineProperty({}, 'passive', {
  13521. get: function get() {
  13522. // eslint-disable-line getter-return
  13523. supportsPassiveOption = true;
  13524. }
  13525. });
  13526. window.addEventListener('testPassiveEventSupport', falseFn, opts);
  13527. window.removeEventListener('testPassiveEventSupport', falseFn, opts);
  13528. } catch (e) {
  13529. // Errors can safely be ignored since this is only a browser support test.
  13530. }
  13531. return supportsPassiveOption;
  13532. }();
  13533. // @property canvas: Boolean
  13534. // `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).
  13535. var canvas$1 = function () {
  13536. return !!document.createElement('canvas').getContext;
  13537. }();
  13538. // @property svg: Boolean
  13539. // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).
  13540. var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);
  13541. var inlineSvg = !!svg$1 && function () {
  13542. var div = document.createElement('div');
  13543. div.innerHTML = '<svg/>';
  13544. return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';
  13545. }();
  13546. // @property vml: Boolean
  13547. // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).
  13548. var vml = !svg$1 && function () {
  13549. try {
  13550. var div = document.createElement('div');
  13551. div.innerHTML = '<v:shape adj="1"/>';
  13552. var shape = div.firstChild;
  13553. shape.style.behavior = 'url(#default#VML)';
  13554. return shape && _typeof(shape.adj) === 'object';
  13555. } catch (e) {
  13556. return false;
  13557. }
  13558. }();
  13559. // @property mac: Boolean; `true` when the browser is running in a Mac platform
  13560. var mac = navigator.platform.indexOf('Mac') === 0;
  13561. // @property mac: Boolean; `true` when the browser is running in a Linux platform
  13562. var linux = navigator.platform.indexOf('Linux') === 0;
  13563. function userAgentContains(str) {
  13564. return navigator.userAgent.toLowerCase().indexOf(str) >= 0;
  13565. }
  13566. var Browser = {
  13567. ie: ie,
  13568. ielt9: ielt9,
  13569. edge: edge,
  13570. webkit: webkit,
  13571. android: android,
  13572. android23: android23,
  13573. androidStock: androidStock,
  13574. opera: opera,
  13575. chrome: chrome,
  13576. gecko: gecko,
  13577. safari: safari,
  13578. phantom: phantom,
  13579. opera12: opera12,
  13580. win: win,
  13581. ie3d: ie3d,
  13582. webkit3d: webkit3d,
  13583. gecko3d: gecko3d,
  13584. any3d: any3d,
  13585. mobile: mobile,
  13586. mobileWebkit: mobileWebkit,
  13587. mobileWebkit3d: mobileWebkit3d,
  13588. msPointer: msPointer,
  13589. pointer: pointer,
  13590. touch: touch,
  13591. touchNative: touchNative,
  13592. mobileOpera: mobileOpera,
  13593. mobileGecko: mobileGecko,
  13594. retina: retina,
  13595. passiveEvents: passiveEvents,
  13596. canvas: canvas$1,
  13597. svg: svg$1,
  13598. vml: vml,
  13599. inlineSvg: inlineSvg,
  13600. mac: mac,
  13601. linux: linux
  13602. };
  13603. /*
  13604. * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.
  13605. */
  13606. var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';
  13607. var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';
  13608. var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';
  13609. var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';
  13610. var pEvent = {
  13611. touchstart: POINTER_DOWN,
  13612. touchmove: POINTER_MOVE,
  13613. touchend: POINTER_UP,
  13614. touchcancel: POINTER_CANCEL
  13615. };
  13616. var handle = {
  13617. touchstart: _onPointerStart,
  13618. touchmove: _handlePointer,
  13619. touchend: _handlePointer,
  13620. touchcancel: _handlePointer
  13621. };
  13622. var _pointers = {};
  13623. var _pointerDocListener = false;
  13624. // Provides a touch events wrapper for (ms)pointer events.
  13625. // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890
  13626. function addPointerListener(obj, type, handler) {
  13627. if (type === 'touchstart') {
  13628. _addPointerDocListener();
  13629. }
  13630. if (!handle[type]) {
  13631. __f__("warn", 'wrong event specified:', type, " at node_modules/leaflet/dist/leaflet-src.js:2169");
  13632. return falseFn;
  13633. }
  13634. handler = handle[type].bind(this, handler);
  13635. obj.addEventListener(pEvent[type], handler, false);
  13636. return handler;
  13637. }
  13638. function removePointerListener(obj, type, handler) {
  13639. if (!pEvent[type]) {
  13640. __f__("warn", 'wrong event specified:', type, " at node_modules/leaflet/dist/leaflet-src.js:2179");
  13641. return;
  13642. }
  13643. obj.removeEventListener(pEvent[type], handler, false);
  13644. }
  13645. function _globalPointerDown(e) {
  13646. _pointers[e.pointerId] = e;
  13647. }
  13648. function _globalPointerMove(e) {
  13649. if (_pointers[e.pointerId]) {
  13650. _pointers[e.pointerId] = e;
  13651. }
  13652. }
  13653. function _globalPointerUp(e) {
  13654. delete _pointers[e.pointerId];
  13655. }
  13656. function _addPointerDocListener() {
  13657. // need to keep track of what pointers and how many are active to provide e.touches emulation
  13658. if (!_pointerDocListener) {
  13659. // we listen document as any drags that end by moving the touch off the screen get fired there
  13660. document.addEventListener(POINTER_DOWN, _globalPointerDown, true);
  13661. document.addEventListener(POINTER_MOVE, _globalPointerMove, true);
  13662. document.addEventListener(POINTER_UP, _globalPointerUp, true);
  13663. document.addEventListener(POINTER_CANCEL, _globalPointerUp, true);
  13664. _pointerDocListener = true;
  13665. }
  13666. }
  13667. function _handlePointer(handler, e) {
  13668. if (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) {
  13669. return;
  13670. }
  13671. e.touches = [];
  13672. for (var i in _pointers) {
  13673. e.touches.push(_pointers[i]);
  13674. }
  13675. e.changedTouches = [e];
  13676. handler(e);
  13677. }
  13678. function _onPointerStart(handler, e) {
  13679. // IE10 specific: MsTouch needs preventDefault. See #2000
  13680. if (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {
  13681. preventDefault(e);
  13682. }
  13683. _handlePointer(handler, e);
  13684. }
  13685. /*
  13686. * Extends the event handling code with double tap support for mobile browsers.
  13687. *
  13688. * Note: currently most browsers fire native dblclick, with only a few exceptions
  13689. * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)
  13690. */
  13691. function makeDblclick(event) {
  13692. // in modern browsers `type` cannot be just overridden:
  13693. // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only
  13694. var newEvent = {},
  13695. prop,
  13696. i;
  13697. for (i in event) {
  13698. prop = event[i];
  13699. newEvent[i] = prop && prop.bind ? prop.bind(event) : prop;
  13700. }
  13701. event = newEvent;
  13702. newEvent.type = 'dblclick';
  13703. newEvent.detail = 2;
  13704. newEvent.isTrusted = false;
  13705. newEvent._simulated = true; // for debug purposes
  13706. return newEvent;
  13707. }
  13708. var delay = 200;
  13709. function addDoubleTapListener(obj, handler) {
  13710. // Most browsers handle double tap natively
  13711. obj.addEventListener('dblclick', handler);
  13712. // On some platforms the browser doesn't fire native dblclicks for touch events.
  13713. // It seems that in all such cases `detail` property of `click` event is always `1`.
  13714. // So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.
  13715. var last = 0,
  13716. detail;
  13717. function simDblclick(e) {
  13718. if (e.detail !== 1) {
  13719. detail = e.detail; // keep in sync to avoid false dblclick in some cases
  13720. return;
  13721. }
  13722. if (e.pointerType === 'mouse' || e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents) {
  13723. return;
  13724. }
  13725. // When clicking on an <input>, the browser generates a click on its
  13726. // <label> (and vice versa) triggering two clicks in quick succession.
  13727. // This ignores clicks on elements which are a label with a 'for'
  13728. // attribute (or children of such a label), but not children of
  13729. // a <input>.
  13730. var path = getPropagationPath(e);
  13731. if (path.some(function (el) {
  13732. return el instanceof HTMLLabelElement && el.attributes.for;
  13733. }) && !path.some(function (el) {
  13734. return el instanceof HTMLInputElement || el instanceof HTMLSelectElement;
  13735. })) {
  13736. return;
  13737. }
  13738. var now = Date.now();
  13739. if (now - last <= delay) {
  13740. detail++;
  13741. if (detail === 2) {
  13742. handler(makeDblclick(e));
  13743. }
  13744. } else {
  13745. detail = 1;
  13746. }
  13747. last = now;
  13748. }
  13749. obj.addEventListener('click', simDblclick);
  13750. return {
  13751. dblclick: handler,
  13752. simDblclick: simDblclick
  13753. };
  13754. }
  13755. function removeDoubleTapListener(obj, handlers) {
  13756. obj.removeEventListener('dblclick', handlers.dblclick);
  13757. obj.removeEventListener('click', handlers.simDblclick);
  13758. }
  13759. /*
  13760. * @namespace DomUtil
  13761. *
  13762. * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)
  13763. * tree, used by Leaflet internally.
  13764. *
  13765. * Most functions expecting or returning a `HTMLElement` also work for
  13766. * SVG elements. The only difference is that classes refer to CSS classes
  13767. * in HTML and SVG classes in SVG.
  13768. */
  13769. // @property TRANSFORM: String
  13770. // Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).
  13771. var TRANSFORM = testProp(['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);
  13772. // webkitTransition comes first because some browser versions that drop vendor prefix don't do
  13773. // the same for the transitionend event, in particular the Android 4.1 stock browser
  13774. // @property TRANSITION: String
  13775. // Vendor-prefixed transition style name.
  13776. var TRANSITION = testProp(['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);
  13777. // @property TRANSITION_END: String
  13778. // Vendor-prefixed transitionend event name.
  13779. var TRANSITION_END = TRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';
  13780. // @function get(id: String|HTMLElement): HTMLElement
  13781. // Returns an element given its DOM id, or returns the element itself
  13782. // if it was passed directly.
  13783. function get(id) {
  13784. return typeof id === 'string' ? document.getElementById(id) : id;
  13785. }
  13786. // @function getStyle(el: HTMLElement, styleAttrib: String): String
  13787. // Returns the value for a certain style attribute on an element,
  13788. // including computed values or values set through CSS.
  13789. function getStyle(el, style) {
  13790. var value = el.style[style] || el.currentStyle && el.currentStyle[style];
  13791. if ((!value || value === 'auto') && document.defaultView) {
  13792. var css = document.defaultView.getComputedStyle(el, null);
  13793. value = css ? css[style] : null;
  13794. }
  13795. return value === 'auto' ? null : value;
  13796. }
  13797. // @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement
  13798. // Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.
  13799. function create$1(tagName, className, container) {
  13800. var el = document.createElement(tagName);
  13801. el.className = className || '';
  13802. if (container) {
  13803. container.appendChild(el);
  13804. }
  13805. return el;
  13806. }
  13807. // @function remove(el: HTMLElement)
  13808. // Removes `el` from its parent element
  13809. function _remove(el) {
  13810. var parent = el.parentNode;
  13811. if (parent) {
  13812. parent.removeChild(el);
  13813. }
  13814. }
  13815. // @function empty(el: HTMLElement)
  13816. // Removes all of `el`'s children elements from `el`
  13817. function empty(el) {
  13818. while (el.firstChild) {
  13819. el.removeChild(el.firstChild);
  13820. }
  13821. }
  13822. // @function toFront(el: HTMLElement)
  13823. // Makes `el` the last child of its parent, so it renders in front of the other children.
  13824. function toFront(el) {
  13825. var parent = el.parentNode;
  13826. if (parent && parent.lastChild !== el) {
  13827. parent.appendChild(el);
  13828. }
  13829. }
  13830. // @function toBack(el: HTMLElement)
  13831. // Makes `el` the first child of its parent, so it renders behind the other children.
  13832. function toBack(el) {
  13833. var parent = el.parentNode;
  13834. if (parent && parent.firstChild !== el) {
  13835. parent.insertBefore(el, parent.firstChild);
  13836. }
  13837. }
  13838. // @function hasClass(el: HTMLElement, name: String): Boolean
  13839. // Returns `true` if the element's class attribute contains `name`.
  13840. function hasClass(el, name) {
  13841. if (el.classList !== undefined) {
  13842. return el.classList.contains(name);
  13843. }
  13844. var className = getClass(el);
  13845. return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className);
  13846. }
  13847. // @function addClass(el: HTMLElement, name: String)
  13848. // Adds `name` to the element's class attribute.
  13849. function addClass(el, name) {
  13850. if (el.classList !== undefined) {
  13851. var classes = splitWords(name);
  13852. for (var i = 0, len = classes.length; i < len; i++) {
  13853. el.classList.add(classes[i]);
  13854. }
  13855. } else if (!hasClass(el, name)) {
  13856. var className = getClass(el);
  13857. setClass(el, (className ? className + ' ' : '') + name);
  13858. }
  13859. }
  13860. // @function removeClass(el: HTMLElement, name: String)
  13861. // Removes `name` from the element's class attribute.
  13862. function removeClass(el, name) {
  13863. if (el.classList !== undefined) {
  13864. el.classList.remove(name);
  13865. } else {
  13866. setClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));
  13867. }
  13868. }
  13869. // @function setClass(el: HTMLElement, name: String)
  13870. // Sets the element's class.
  13871. function setClass(el, name) {
  13872. if (el.className.baseVal === undefined) {
  13873. el.className = name;
  13874. } else {
  13875. // in case of SVG element
  13876. el.className.baseVal = name;
  13877. }
  13878. }
  13879. // @function getClass(el: HTMLElement): String
  13880. // Returns the element's class.
  13881. function getClass(el) {
  13882. // Check if the element is an SVGElementInstance and use the correspondingElement instead
  13883. // (Required for linked SVG elements in IE11.)
  13884. if (el.correspondingElement) {
  13885. el = el.correspondingElement;
  13886. }
  13887. return el.className.baseVal === undefined ? el.className : el.className.baseVal;
  13888. }
  13889. // @function setOpacity(el: HTMLElement, opacity: Number)
  13890. // Set the opacity of an element (including old IE support).
  13891. // `opacity` must be a number from `0` to `1`.
  13892. function _setOpacity(el, value) {
  13893. if ('opacity' in el.style) {
  13894. el.style.opacity = value;
  13895. } else if ('filter' in el.style) {
  13896. _setOpacityIE(el, value);
  13897. }
  13898. }
  13899. function _setOpacityIE(el, value) {
  13900. var filter = false,
  13901. filterName = 'DXImageTransform.Microsoft.Alpha';
  13902. // filters collection throws an error if we try to retrieve a filter that doesn't exist
  13903. try {
  13904. filter = el.filters.item(filterName);
  13905. } catch (e) {
  13906. // don't set opacity to 1 if we haven't already set an opacity,
  13907. // it isn't needed and breaks transparent pngs.
  13908. if (value === 1) {
  13909. return;
  13910. }
  13911. }
  13912. value = Math.round(value * 100);
  13913. if (filter) {
  13914. filter.Enabled = value !== 100;
  13915. filter.Opacity = value;
  13916. } else {
  13917. el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';
  13918. }
  13919. }
  13920. // @function testProp(props: String[]): String|false
  13921. // Goes through the array of style names and returns the first name
  13922. // that is a valid style name for an element. If no such name is found,
  13923. // it returns false. Useful for vendor-prefixed styles like `transform`.
  13924. function testProp(props) {
  13925. var style = document.documentElement.style;
  13926. for (var i = 0; i < props.length; i++) {
  13927. if (props[i] in style) {
  13928. return props[i];
  13929. }
  13930. }
  13931. return false;
  13932. }
  13933. // @function setTransform(el: HTMLElement, offset: Point, scale?: Number)
  13934. // Resets the 3D CSS transform of `el` so it is translated by `offset` pixels
  13935. // and optionally scaled by `scale`. Does not have an effect if the
  13936. // browser doesn't support 3D CSS transforms.
  13937. function setTransform(el, offset, scale) {
  13938. var pos = offset || new Point(0, 0);
  13939. el.style[TRANSFORM] = (Browser.ie3d ? 'translate(' + pos.x + 'px,' + pos.y + 'px)' : 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') + (scale ? ' scale(' + scale + ')' : '');
  13940. }
  13941. // @function setPosition(el: HTMLElement, position: Point)
  13942. // Sets the position of `el` to coordinates specified by `position`,
  13943. // using CSS translate or top/left positioning depending on the browser
  13944. // (used by Leaflet internally to position its layers).
  13945. function setPosition(el, point) {
  13946. /*eslint-disable */
  13947. el._leaflet_pos = point;
  13948. /* eslint-enable */
  13949. if (Browser.any3d) {
  13950. setTransform(el, point);
  13951. } else {
  13952. el.style.left = point.x + 'px';
  13953. el.style.top = point.y + 'px';
  13954. }
  13955. }
  13956. // @function getPosition(el: HTMLElement): Point
  13957. // Returns the coordinates of an element previously positioned with setPosition.
  13958. function getPosition(el) {
  13959. // this method is only used for elements previously positioned using setPosition,
  13960. // so it's safe to cache the position for performance
  13961. return el._leaflet_pos || new Point(0, 0);
  13962. }
  13963. // @function disableTextSelection()
  13964. // Prevents the user from generating `selectstart` DOM events, usually generated
  13965. // when the user drags the mouse through a page with text. Used internally
  13966. // by Leaflet to override the behaviour of any click-and-drag interaction on
  13967. // the map. Affects drag interactions on the whole document.
  13968. // @function enableTextSelection()
  13969. // Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).
  13970. var disableTextSelection;
  13971. var enableTextSelection;
  13972. var _userSelect;
  13973. if ('onselectstart' in document) {
  13974. disableTextSelection = function disableTextSelection() {
  13975. on(window, 'selectstart', preventDefault);
  13976. };
  13977. enableTextSelection = function enableTextSelection() {
  13978. off(window, 'selectstart', preventDefault);
  13979. };
  13980. } else {
  13981. var userSelectProperty = testProp(['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);
  13982. disableTextSelection = function disableTextSelection() {
  13983. if (userSelectProperty) {
  13984. var style = document.documentElement.style;
  13985. _userSelect = style[userSelectProperty];
  13986. style[userSelectProperty] = 'none';
  13987. }
  13988. };
  13989. enableTextSelection = function enableTextSelection() {
  13990. if (userSelectProperty) {
  13991. document.documentElement.style[userSelectProperty] = _userSelect;
  13992. _userSelect = undefined;
  13993. }
  13994. };
  13995. }
  13996. // @function disableImageDrag()
  13997. // As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but
  13998. // for `dragstart` DOM events, usually generated when the user drags an image.
  13999. function disableImageDrag() {
  14000. on(window, 'dragstart', preventDefault);
  14001. }
  14002. // @function enableImageDrag()
  14003. // Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).
  14004. function enableImageDrag() {
  14005. off(window, 'dragstart', preventDefault);
  14006. }
  14007. var _outlineElement, _outlineStyle;
  14008. // @function preventOutline(el: HTMLElement)
  14009. // Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)
  14010. // of the element `el` invisible. Used internally by Leaflet to prevent
  14011. // focusable elements from displaying an outline when the user performs a
  14012. // drag interaction on them.
  14013. function preventOutline(element) {
  14014. while (element.tabIndex === -1) {
  14015. element = element.parentNode;
  14016. }
  14017. if (!element.style) {
  14018. return;
  14019. }
  14020. restoreOutline();
  14021. _outlineElement = element;
  14022. _outlineStyle = element.style.outline;
  14023. element.style.outline = 'none';
  14024. on(window, 'keydown', restoreOutline);
  14025. }
  14026. // @function restoreOutline()
  14027. // Cancels the effects of a previous [`L.DomUtil.preventOutline`]().
  14028. function restoreOutline() {
  14029. if (!_outlineElement) {
  14030. return;
  14031. }
  14032. _outlineElement.style.outline = _outlineStyle;
  14033. _outlineElement = undefined;
  14034. _outlineStyle = undefined;
  14035. off(window, 'keydown', restoreOutline);
  14036. }
  14037. // @function getSizedParentNode(el: HTMLElement): HTMLElement
  14038. // Finds the closest parent node which size (width and height) is not null.
  14039. function getSizedParentNode(element) {
  14040. do {
  14041. element = element.parentNode;
  14042. } while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);
  14043. return element;
  14044. }
  14045. // @function getScale(el: HTMLElement): Object
  14046. // Computes the CSS scale currently applied on the element.
  14047. // Returns an object with `x` and `y` members as horizontal and vertical scales respectively,
  14048. // and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
  14049. function getScale(element) {
  14050. var rect = element.getBoundingClientRect(); // Read-only in old browsers.
  14051. return {
  14052. x: rect.width / element.offsetWidth || 1,
  14053. y: rect.height / element.offsetHeight || 1,
  14054. boundingClientRect: rect
  14055. };
  14056. }
  14057. var DomUtil = {
  14058. __proto__: null,
  14059. TRANSFORM: TRANSFORM,
  14060. TRANSITION: TRANSITION,
  14061. TRANSITION_END: TRANSITION_END,
  14062. get: get,
  14063. getStyle: getStyle,
  14064. create: create$1,
  14065. remove: _remove,
  14066. empty: empty,
  14067. toFront: toFront,
  14068. toBack: toBack,
  14069. hasClass: hasClass,
  14070. addClass: addClass,
  14071. removeClass: removeClass,
  14072. setClass: setClass,
  14073. getClass: getClass,
  14074. setOpacity: _setOpacity,
  14075. testProp: testProp,
  14076. setTransform: setTransform,
  14077. setPosition: setPosition,
  14078. getPosition: getPosition,
  14079. get disableTextSelection() {
  14080. return disableTextSelection;
  14081. },
  14082. get enableTextSelection() {
  14083. return enableTextSelection;
  14084. },
  14085. disableImageDrag: disableImageDrag,
  14086. enableImageDrag: enableImageDrag,
  14087. preventOutline: preventOutline,
  14088. restoreOutline: restoreOutline,
  14089. getSizedParentNode: getSizedParentNode,
  14090. getScale: getScale
  14091. };
  14092. /*
  14093. * @namespace DomEvent
  14094. * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.
  14095. */
  14096. // Inspired by John Resig, Dean Edwards and YUI addEvent implementations.
  14097. // @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this
  14098. // Adds a listener function (`fn`) to a particular DOM event type of the
  14099. // element `el`. You can optionally specify the context of the listener
  14100. // (object the `this` keyword will point to). You can also pass several
  14101. // space-separated types (e.g. `'click dblclick'`).
  14102. // @alternative
  14103. // @function on(el: HTMLElement, eventMap: Object, context?: Object): this
  14104. // Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`
  14105. function on(obj, types, fn, context) {
  14106. if (types && _typeof(types) === 'object') {
  14107. for (var type in types) {
  14108. addOne(obj, type, types[type], fn);
  14109. }
  14110. } else {
  14111. types = splitWords(types);
  14112. for (var i = 0, len = types.length; i < len; i++) {
  14113. addOne(obj, types[i], fn, context);
  14114. }
  14115. }
  14116. return this;
  14117. }
  14118. var eventsKey = '_leaflet_events';
  14119. // @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this
  14120. // Removes a previously added listener function.
  14121. // Note that if you passed a custom context to on, you must pass the same
  14122. // context to `off` in order to remove the listener.
  14123. // @alternative
  14124. // @function off(el: HTMLElement, eventMap: Object, context?: Object): this
  14125. // Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`
  14126. // @alternative
  14127. // @function off(el: HTMLElement, types: String): this
  14128. // Removes all previously added listeners of given types.
  14129. // @alternative
  14130. // @function off(el: HTMLElement): this
  14131. // Removes all previously added listeners from given HTMLElement
  14132. function off(obj, types, fn, context) {
  14133. if (arguments.length === 1) {
  14134. batchRemove(obj);
  14135. delete obj[eventsKey];
  14136. } else if (types && _typeof(types) === 'object') {
  14137. for (var type in types) {
  14138. removeOne(obj, type, types[type], fn);
  14139. }
  14140. } else {
  14141. types = splitWords(types);
  14142. if (arguments.length === 2) {
  14143. batchRemove(obj, function (type) {
  14144. return indexOf(types, type) !== -1;
  14145. });
  14146. } else {
  14147. for (var i = 0, len = types.length; i < len; i++) {
  14148. removeOne(obj, types[i], fn, context);
  14149. }
  14150. }
  14151. }
  14152. return this;
  14153. }
  14154. function batchRemove(obj, filterFn) {
  14155. for (var id in obj[eventsKey]) {
  14156. var type = id.split(/\d/)[0];
  14157. if (!filterFn || filterFn(type)) {
  14158. removeOne(obj, type, null, null, id);
  14159. }
  14160. }
  14161. }
  14162. var mouseSubst = {
  14163. mouseenter: 'mouseover',
  14164. mouseleave: 'mouseout',
  14165. wheel: !('onwheel' in window) && 'mousewheel'
  14166. };
  14167. function addOne(obj, type, fn, context) {
  14168. var id = type + stamp(fn) + (context ? '_' + stamp(context) : '');
  14169. if (obj[eventsKey] && obj[eventsKey][id]) {
  14170. return this;
  14171. }
  14172. var handler = function handler(e) {
  14173. return fn.call(context || obj, e || window.event);
  14174. };
  14175. var originalHandler = handler;
  14176. if (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {
  14177. // Needs DomEvent.Pointer.js
  14178. handler = addPointerListener(obj, type, handler);
  14179. } else if (Browser.touch && type === 'dblclick') {
  14180. handler = addDoubleTapListener(obj, handler);
  14181. } else if ('addEventListener' in obj) {
  14182. if (type === 'touchstart' || type === 'touchmove' || type === 'wheel' || type === 'mousewheel') {
  14183. obj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {
  14184. passive: false
  14185. } : false);
  14186. } else if (type === 'mouseenter' || type === 'mouseleave') {
  14187. handler = function handler(e) {
  14188. e = e || window.event;
  14189. if (isExternalTarget(obj, e)) {
  14190. originalHandler(e);
  14191. }
  14192. };
  14193. obj.addEventListener(mouseSubst[type], handler, false);
  14194. } else {
  14195. obj.addEventListener(type, originalHandler, false);
  14196. }
  14197. } else {
  14198. obj.attachEvent('on' + type, handler);
  14199. }
  14200. obj[eventsKey] = obj[eventsKey] || {};
  14201. obj[eventsKey][id] = handler;
  14202. }
  14203. function removeOne(obj, type, fn, context, id) {
  14204. id = id || type + stamp(fn) + (context ? '_' + stamp(context) : '');
  14205. var handler = obj[eventsKey] && obj[eventsKey][id];
  14206. if (!handler) {
  14207. return this;
  14208. }
  14209. if (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {
  14210. removePointerListener(obj, type, handler);
  14211. } else if (Browser.touch && type === 'dblclick') {
  14212. removeDoubleTapListener(obj, handler);
  14213. } else if ('removeEventListener' in obj) {
  14214. obj.removeEventListener(mouseSubst[type] || type, handler, false);
  14215. } else {
  14216. obj.detachEvent('on' + type, handler);
  14217. }
  14218. obj[eventsKey][id] = null;
  14219. }
  14220. // @function stopPropagation(ev: DOMEvent): this
  14221. // Stop the given event from propagation to parent elements. Used inside the listener functions:
  14222. // ```js
  14223. // L.DomEvent.on(div, 'click', function (ev) {
  14224. // L.DomEvent.stopPropagation(ev);
  14225. // });
  14226. // ```
  14227. function stopPropagation(e) {
  14228. if (e.stopPropagation) {
  14229. e.stopPropagation();
  14230. } else if (e.originalEvent) {
  14231. // In case of Leaflet event.
  14232. e.originalEvent._stopped = true;
  14233. } else {
  14234. e.cancelBubble = true;
  14235. }
  14236. return this;
  14237. }
  14238. // @function disableScrollPropagation(el: HTMLElement): this
  14239. // Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).
  14240. function disableScrollPropagation(el) {
  14241. addOne(el, 'wheel', stopPropagation);
  14242. return this;
  14243. }
  14244. // @function disableClickPropagation(el: HTMLElement): this
  14245. // Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`,
  14246. // `'mousedown'` and `'touchstart'` events (plus browser variants).
  14247. function disableClickPropagation(el) {
  14248. on(el, 'mousedown touchstart dblclick contextmenu', stopPropagation);
  14249. el['_leaflet_disable_click'] = true;
  14250. return this;
  14251. }
  14252. // @function preventDefault(ev: DOMEvent): this
  14253. // Prevents the default action of the DOM Event `ev` from happening (such as
  14254. // following a link in the href of the a element, or doing a POST request
  14255. // with page reload when a `<form>` is submitted).
  14256. // Use it inside listener functions.
  14257. function preventDefault(e) {
  14258. if (e.preventDefault) {
  14259. e.preventDefault();
  14260. } else {
  14261. e.returnValue = false;
  14262. }
  14263. return this;
  14264. }
  14265. // @function stop(ev: DOMEvent): this
  14266. // Does `stopPropagation` and `preventDefault` at the same time.
  14267. function stop(e) {
  14268. preventDefault(e);
  14269. stopPropagation(e);
  14270. return this;
  14271. }
  14272. // @function getPropagationPath(ev: DOMEvent): Array
  14273. // Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).
  14274. // Returns an array containing the `HTMLElement`s that the given DOM event
  14275. // should propagate to (if not stopped).
  14276. function getPropagationPath(ev) {
  14277. if (ev.composedPath) {
  14278. return ev.composedPath();
  14279. }
  14280. var path = [];
  14281. var el = ev.target;
  14282. while (el) {
  14283. path.push(el);
  14284. el = el.parentNode;
  14285. }
  14286. return path;
  14287. }
  14288. // @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point
  14289. // Gets normalized mouse position from a DOM event relative to the
  14290. // `container` (border excluded) or to the whole page if not specified.
  14291. function getMousePosition(e, container) {
  14292. if (!container) {
  14293. return new Point(e.clientX, e.clientY);
  14294. }
  14295. var scale = getScale(container),
  14296. offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y)
  14297. return new Point(
  14298. // offset.left/top values are in page scale (like clientX/Y),
  14299. // whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).
  14300. (e.clientX - offset.left) / scale.x - container.clientLeft, (e.clientY - offset.top) / scale.y - container.clientTop);
  14301. }
  14302. // except , Safari and
  14303. // We need double the scroll pixels (see #7403 and #4538) for all Browsers
  14304. // except OSX (Mac) -> 3x, Chrome running on Linux 1x
  14305. var wheelPxFactor = Browser.linux && Browser.chrome ? window.devicePixelRatio : Browser.mac ? window.devicePixelRatio * 3 : window.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;
  14306. // @function getWheelDelta(ev: DOMEvent): Number
  14307. // Gets normalized wheel delta from a wheel DOM event, in vertical
  14308. // pixels scrolled (negative if scrolling down).
  14309. // Events from pointing devices without precise scrolling are mapped to
  14310. // a best guess of 60 pixels.
  14311. function getWheelDelta(e) {
  14312. return Browser.edge ? e.wheelDeltaY / 2 :
  14313. // Don't trust window-geometry-based delta
  14314. e.deltaY && e.deltaMode === 0 ? -e.deltaY / wheelPxFactor :
  14315. // Pixels
  14316. e.deltaY && e.deltaMode === 1 ? -e.deltaY * 20 :
  14317. // Lines
  14318. e.deltaY && e.deltaMode === 2 ? -e.deltaY * 60 :
  14319. // Pages
  14320. e.deltaX || e.deltaZ ? 0 :
  14321. // Skip horizontal/depth wheel events
  14322. e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 :
  14323. // Legacy IE pixels
  14324. e.detail && Math.abs(e.detail) < 32765 ? -e.detail * 20 :
  14325. // Legacy Moz lines
  14326. e.detail ? e.detail / -32765 * 60 :
  14327. // Legacy Moz pages
  14328. 0;
  14329. }
  14330. // check if element really left/entered the event target (for mouseenter/mouseleave)
  14331. function isExternalTarget(el, e) {
  14332. var related = e.relatedTarget;
  14333. if (!related) {
  14334. return true;
  14335. }
  14336. try {
  14337. while (related && related !== el) {
  14338. related = related.parentNode;
  14339. }
  14340. } catch (err) {
  14341. return false;
  14342. }
  14343. return related !== el;
  14344. }
  14345. var DomEvent = {
  14346. __proto__: null,
  14347. on: on,
  14348. off: off,
  14349. stopPropagation: stopPropagation,
  14350. disableScrollPropagation: disableScrollPropagation,
  14351. disableClickPropagation: disableClickPropagation,
  14352. preventDefault: preventDefault,
  14353. stop: stop,
  14354. getPropagationPath: getPropagationPath,
  14355. getMousePosition: getMousePosition,
  14356. getWheelDelta: getWheelDelta,
  14357. isExternalTarget: isExternalTarget,
  14358. addListener: on,
  14359. removeListener: off
  14360. };
  14361. /*
  14362. * @class PosAnimation
  14363. * @aka L.PosAnimation
  14364. * @inherits Evented
  14365. * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.
  14366. *
  14367. * @example
  14368. * ```js
  14369. * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);
  14370. *
  14371. * myPositionMarker.on("click", function() {
  14372. * var pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());
  14373. * pos.y -= 25;
  14374. * var fx = new L.PosAnimation();
  14375. *
  14376. * fx.once('end',function() {
  14377. * pos.y += 25;
  14378. * fx.run(myPositionMarker._icon, pos, 0.8);
  14379. * });
  14380. *
  14381. * fx.run(myPositionMarker._icon, pos, 0.3);
  14382. * });
  14383. *
  14384. * ```
  14385. *
  14386. * @constructor L.PosAnimation()
  14387. * Creates a `PosAnimation` object.
  14388. *
  14389. */
  14390. var PosAnimation = Evented.extend({
  14391. // @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)
  14392. // Run an animation of a given element to a new position, optionally setting
  14393. // duration in seconds (`0.25` by default) and easing linearity factor (3rd
  14394. // argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1),
  14395. // `0.5` by default).
  14396. run: function run(el, newPos, duration, easeLinearity) {
  14397. this.stop();
  14398. this._el = el;
  14399. this._inProgress = true;
  14400. this._duration = duration || 0.25;
  14401. this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);
  14402. this._startPos = getPosition(el);
  14403. this._offset = newPos.subtract(this._startPos);
  14404. this._startTime = +new Date();
  14405. // @event start: Event
  14406. // Fired when the animation starts
  14407. this.fire('start');
  14408. this._animate();
  14409. },
  14410. // @method stop()
  14411. // Stops the animation (if currently running).
  14412. stop: function stop() {
  14413. if (!this._inProgress) {
  14414. return;
  14415. }
  14416. this._step(true);
  14417. this._complete();
  14418. },
  14419. _animate: function _animate() {
  14420. // animation loop
  14421. this._animId = requestAnimFrame(this._animate, this);
  14422. this._step();
  14423. },
  14424. _step: function _step(round) {
  14425. var elapsed = +new Date() - this._startTime,
  14426. duration = this._duration * 1000;
  14427. if (elapsed < duration) {
  14428. this._runFrame(this._easeOut(elapsed / duration), round);
  14429. } else {
  14430. this._runFrame(1);
  14431. this._complete();
  14432. }
  14433. },
  14434. _runFrame: function _runFrame(progress, round) {
  14435. var pos = this._startPos.add(this._offset.multiplyBy(progress));
  14436. if (round) {
  14437. pos._round();
  14438. }
  14439. setPosition(this._el, pos);
  14440. // @event step: Event
  14441. // Fired continuously during the animation.
  14442. this.fire('step');
  14443. },
  14444. _complete: function _complete() {
  14445. cancelAnimFrame(this._animId);
  14446. this._inProgress = false;
  14447. // @event end: Event
  14448. // Fired when the animation ends.
  14449. this.fire('end');
  14450. },
  14451. _easeOut: function _easeOut(t) {
  14452. return 1 - Math.pow(1 - t, this._easeOutPower);
  14453. }
  14454. });
  14455. /*
  14456. * @class Map
  14457. * @aka L.Map
  14458. * @inherits Evented
  14459. *
  14460. * The central class of the API — it is used to create a map on a page and manipulate it.
  14461. *
  14462. * @example
  14463. *
  14464. * ```js
  14465. * // initialize the map on the "map" div with a given center and zoom
  14466. * var map = L.map('map', {
  14467. * center: [51.505, -0.09],
  14468. * zoom: 13
  14469. * });
  14470. * ```
  14471. *
  14472. */
  14473. var Map = Evented.extend({
  14474. options: {
  14475. // @section Map State Options
  14476. // @option crs: CRS = L.CRS.EPSG3857
  14477. // The [Coordinate Reference System](#crs) to use. Don't change this if you're not
  14478. // sure what it means.
  14479. crs: EPSG3857,
  14480. // @option center: LatLng = undefined
  14481. // Initial geographic center of the map
  14482. center: undefined,
  14483. // @option zoom: Number = undefined
  14484. // Initial map zoom level
  14485. zoom: undefined,
  14486. // @option minZoom: Number = *
  14487. // Minimum zoom level of the map.
  14488. // If not specified and at least one `GridLayer` or `TileLayer` is in the map,
  14489. // the lowest of their `minZoom` options will be used instead.
  14490. minZoom: undefined,
  14491. // @option maxZoom: Number = *
  14492. // Maximum zoom level of the map.
  14493. // If not specified and at least one `GridLayer` or `TileLayer` is in the map,
  14494. // the highest of their `maxZoom` options will be used instead.
  14495. maxZoom: undefined,
  14496. // @option layers: Layer[] = []
  14497. // Array of layers that will be added to the map initially
  14498. layers: [],
  14499. // @option maxBounds: LatLngBounds = null
  14500. // When this option is set, the map restricts the view to the given
  14501. // geographical bounds, bouncing the user back if the user tries to pan
  14502. // outside the view. To set the restriction dynamically, use
  14503. // [`setMaxBounds`](#map-setmaxbounds) method.
  14504. maxBounds: undefined,
  14505. // @option renderer: Renderer = *
  14506. // The default method for drawing vector layers on the map. `L.SVG`
  14507. // or `L.Canvas` by default depending on browser support.
  14508. renderer: undefined,
  14509. // @section Animation Options
  14510. // @option zoomAnimation: Boolean = true
  14511. // Whether the map zoom animation is enabled. By default it's enabled
  14512. // in all browsers that support CSS3 Transitions except Android.
  14513. zoomAnimation: true,
  14514. // @option zoomAnimationThreshold: Number = 4
  14515. // Won't animate zoom if the zoom difference exceeds this value.
  14516. zoomAnimationThreshold: 4,
  14517. // @option fadeAnimation: Boolean = true
  14518. // Whether the tile fade animation is enabled. By default it's enabled
  14519. // in all browsers that support CSS3 Transitions except Android.
  14520. fadeAnimation: true,
  14521. // @option markerZoomAnimation: Boolean = true
  14522. // Whether markers animate their zoom with the zoom animation, if disabled
  14523. // they will disappear for the length of the animation. By default it's
  14524. // enabled in all browsers that support CSS3 Transitions except Android.
  14525. markerZoomAnimation: true,
  14526. // @option transform3DLimit: Number = 2^23
  14527. // Defines the maximum size of a CSS translation transform. The default
  14528. // value should not be changed unless a web browser positions layers in
  14529. // the wrong place after doing a large `panBy`.
  14530. transform3DLimit: 8388608,
  14531. // Precision limit of a 32-bit float
  14532. // @section Interaction Options
  14533. // @option zoomSnap: Number = 1
  14534. // Forces the map's zoom level to always be a multiple of this, particularly
  14535. // right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.
  14536. // By default, the zoom level snaps to the nearest integer; lower values
  14537. // (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`
  14538. // means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.
  14539. zoomSnap: 1,
  14540. // @option zoomDelta: Number = 1
  14541. // Controls how much the map's zoom level will change after a
  14542. // [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`
  14543. // or `-` on the keyboard, or using the [zoom controls](#control-zoom).
  14544. // Values smaller than `1` (e.g. `0.5`) allow for greater granularity.
  14545. zoomDelta: 1,
  14546. // @option trackResize: Boolean = true
  14547. // Whether the map automatically handles browser window resize to update itself.
  14548. trackResize: true
  14549. },
  14550. initialize: function initialize(id, options) {
  14551. // (HTMLElement or String, Object)
  14552. options = setOptions(this, options);
  14553. // Make sure to assign internal flags at the beginning,
  14554. // to avoid inconsistent state in some edge cases.
  14555. this._handlers = [];
  14556. this._layers = {};
  14557. this._zoomBoundLayers = {};
  14558. this._sizeChanged = true;
  14559. this._initContainer(id);
  14560. this._initLayout();
  14561. // hack for https://github.com/Leaflet/Leaflet/issues/1980
  14562. this._onResize = bind(this._onResize, this);
  14563. this._initEvents();
  14564. if (options.maxBounds) {
  14565. this.setMaxBounds(options.maxBounds);
  14566. }
  14567. if (options.zoom !== undefined) {
  14568. this._zoom = this._limitZoom(options.zoom);
  14569. }
  14570. if (options.center && options.zoom !== undefined) {
  14571. this.setView(toLatLng(options.center), options.zoom, {
  14572. reset: true
  14573. });
  14574. }
  14575. this.callInitHooks();
  14576. // don't animate on browsers without hardware-accelerated transitions or old Android/Opera
  14577. this._zoomAnimated = TRANSITION && Browser.any3d && !Browser.mobileOpera && this.options.zoomAnimation;
  14578. // zoom transitions run with the same duration for all layers, so if one of transitionend events
  14579. // happens after starting zoom animation (propagating to the map pane), we know that it ended globally
  14580. if (this._zoomAnimated) {
  14581. this._createAnimProxy();
  14582. on(this._proxy, TRANSITION_END, this._catchTransitionEnd, this);
  14583. }
  14584. this._addLayers(this.options.layers);
  14585. },
  14586. // @section Methods for modifying map state
  14587. // @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this
  14588. // Sets the view of the map (geographical center and zoom) with the given
  14589. // animation options.
  14590. setView: function setView(center, zoom, options) {
  14591. zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);
  14592. center = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);
  14593. options = options || {};
  14594. this._stop();
  14595. if (this._loaded && !options.reset && options !== true) {
  14596. if (options.animate !== undefined) {
  14597. options.zoom = extend({
  14598. animate: options.animate
  14599. }, options.zoom);
  14600. options.pan = extend({
  14601. animate: options.animate,
  14602. duration: options.duration
  14603. }, options.pan);
  14604. }
  14605. // try animating pan or zoom
  14606. var moved = this._zoom !== zoom ? this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : this._tryAnimatedPan(center, options.pan);
  14607. if (moved) {
  14608. // prevent resize handler call, the view will refresh after animation anyway
  14609. clearTimeout(this._sizeTimer);
  14610. return this;
  14611. }
  14612. }
  14613. // animation didn't start, just reset the map view
  14614. this._resetView(center, zoom, options.pan && options.pan.noMoveStart);
  14615. return this;
  14616. },
  14617. // @method setZoom(zoom: Number, options?: Zoom/pan options): this
  14618. // Sets the zoom of the map.
  14619. setZoom: function setZoom(zoom, options) {
  14620. if (!this._loaded) {
  14621. this._zoom = zoom;
  14622. return this;
  14623. }
  14624. return this.setView(this.getCenter(), zoom, {
  14625. zoom: options
  14626. });
  14627. },
  14628. // @method zoomIn(delta?: Number, options?: Zoom options): this
  14629. // Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).
  14630. zoomIn: function zoomIn(delta, options) {
  14631. delta = delta || (Browser.any3d ? this.options.zoomDelta : 1);
  14632. return this.setZoom(this._zoom + delta, options);
  14633. },
  14634. // @method zoomOut(delta?: Number, options?: Zoom options): this
  14635. // Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).
  14636. zoomOut: function zoomOut(delta, options) {
  14637. delta = delta || (Browser.any3d ? this.options.zoomDelta : 1);
  14638. return this.setZoom(this._zoom - delta, options);
  14639. },
  14640. // @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this
  14641. // Zooms the map while keeping a specified geographical point on the map
  14642. // stationary (e.g. used internally for scroll zoom and double-click zoom).
  14643. // @alternative
  14644. // @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this
  14645. // Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.
  14646. setZoomAround: function setZoomAround(latlng, zoom, options) {
  14647. var scale = this.getZoomScale(zoom),
  14648. viewHalf = this.getSize().divideBy(2),
  14649. containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),
  14650. centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),
  14651. newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));
  14652. return this.setView(newCenter, zoom, {
  14653. zoom: options
  14654. });
  14655. },
  14656. _getBoundsCenterZoom: function _getBoundsCenterZoom(bounds, options) {
  14657. options = options || {};
  14658. bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);
  14659. var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),
  14660. paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),
  14661. zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));
  14662. zoom = typeof options.maxZoom === 'number' ? Math.min(options.maxZoom, zoom) : zoom;
  14663. if (zoom === Infinity) {
  14664. return {
  14665. center: bounds.getCenter(),
  14666. zoom: zoom
  14667. };
  14668. }
  14669. var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),
  14670. swPoint = this.project(bounds.getSouthWest(), zoom),
  14671. nePoint = this.project(bounds.getNorthEast(), zoom),
  14672. center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);
  14673. return {
  14674. center: center,
  14675. zoom: zoom
  14676. };
  14677. },
  14678. // @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this
  14679. // Sets a map view that contains the given geographical bounds with the
  14680. // maximum zoom level possible.
  14681. fitBounds: function fitBounds(bounds, options) {
  14682. bounds = toLatLngBounds(bounds);
  14683. if (!bounds.isValid()) {
  14684. throw new Error('Bounds are not valid.');
  14685. }
  14686. var target = this._getBoundsCenterZoom(bounds, options);
  14687. return this.setView(target.center, target.zoom, options);
  14688. },
  14689. // @method fitWorld(options?: fitBounds options): this
  14690. // Sets a map view that mostly contains the whole world with the maximum
  14691. // zoom level possible.
  14692. fitWorld: function fitWorld(options) {
  14693. return this.fitBounds([[-90, -180], [90, 180]], options);
  14694. },
  14695. // @method panTo(latlng: LatLng, options?: Pan options): this
  14696. // Pans the map to a given center.
  14697. panTo: function panTo(center, options) {
  14698. // (LatLng)
  14699. return this.setView(center, this._zoom, {
  14700. pan: options
  14701. });
  14702. },
  14703. // @method panBy(offset: Point, options?: Pan options): this
  14704. // Pans the map by a given number of pixels (animated).
  14705. panBy: function panBy(offset, options) {
  14706. offset = toPoint(offset).round();
  14707. options = options || {};
  14708. if (!offset.x && !offset.y) {
  14709. return this.fire('moveend');
  14710. }
  14711. // If we pan too far, Chrome gets issues with tiles
  14712. // and makes them disappear or appear in the wrong place (slightly offset) #2602
  14713. if (options.animate !== true && !this.getSize().contains(offset)) {
  14714. this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());
  14715. return this;
  14716. }
  14717. if (!this._panAnim) {
  14718. this._panAnim = new PosAnimation();
  14719. this._panAnim.on({
  14720. 'step': this._onPanTransitionStep,
  14721. 'end': this._onPanTransitionEnd
  14722. }, this);
  14723. }
  14724. // don't fire movestart if animating inertia
  14725. if (!options.noMoveStart) {
  14726. this.fire('movestart');
  14727. }
  14728. // animate pan unless animate: false specified
  14729. if (options.animate !== false) {
  14730. addClass(this._mapPane, 'leaflet-pan-anim');
  14731. var newPos = this._getMapPanePos().subtract(offset).round();
  14732. this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);
  14733. } else {
  14734. this._rawPanBy(offset);
  14735. this.fire('move').fire('moveend');
  14736. }
  14737. return this;
  14738. },
  14739. // @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this
  14740. // Sets the view of the map (geographical center and zoom) performing a smooth
  14741. // pan-zoom animation.
  14742. flyTo: function flyTo(targetCenter, targetZoom, options) {
  14743. options = options || {};
  14744. if (options.animate === false || !Browser.any3d) {
  14745. return this.setView(targetCenter, targetZoom, options);
  14746. }
  14747. this._stop();
  14748. var from = this.project(this.getCenter()),
  14749. to = this.project(targetCenter),
  14750. size = this.getSize(),
  14751. startZoom = this._zoom;
  14752. targetCenter = toLatLng(targetCenter);
  14753. targetZoom = targetZoom === undefined ? startZoom : targetZoom;
  14754. var w0 = Math.max(size.x, size.y),
  14755. w1 = w0 * this.getZoomScale(startZoom, targetZoom),
  14756. u1 = to.distanceTo(from) || 1,
  14757. rho = 1.42,
  14758. rho2 = rho * rho;
  14759. function r(i) {
  14760. var s1 = i ? -1 : 1,
  14761. s2 = i ? w1 : w0,
  14762. t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,
  14763. b1 = 2 * s2 * rho2 * u1,
  14764. b = t1 / b1,
  14765. sq = Math.sqrt(b * b + 1) - b;
  14766. // workaround for floating point precision bug when sq = 0, log = -Infinite,
  14767. // thus triggering an infinite loop in flyTo
  14768. var log = sq < 0.000000001 ? -18 : Math.log(sq);
  14769. return log;
  14770. }
  14771. function sinh(n) {
  14772. return (Math.exp(n) - Math.exp(-n)) / 2;
  14773. }
  14774. function cosh(n) {
  14775. return (Math.exp(n) + Math.exp(-n)) / 2;
  14776. }
  14777. function tanh(n) {
  14778. return sinh(n) / cosh(n);
  14779. }
  14780. var r0 = r(0);
  14781. function w(s) {
  14782. return w0 * (cosh(r0) / cosh(r0 + rho * s));
  14783. }
  14784. function u(s) {
  14785. return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2;
  14786. }
  14787. function easeOut(t) {
  14788. return 1 - Math.pow(1 - t, 1.5);
  14789. }
  14790. var start = Date.now(),
  14791. S = (r(1) - r0) / rho,
  14792. duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;
  14793. function frame() {
  14794. var t = (Date.now() - start) / duration,
  14795. s = easeOut(t) * S;
  14796. if (t <= 1) {
  14797. this._flyToFrame = requestAnimFrame(frame, this);
  14798. this._move(this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), this.getScaleZoom(w0 / w(s), startZoom), {
  14799. flyTo: true
  14800. });
  14801. } else {
  14802. this._move(targetCenter, targetZoom)._moveEnd(true);
  14803. }
  14804. }
  14805. this._moveStart(true, options.noMoveStart);
  14806. frame.call(this);
  14807. return this;
  14808. },
  14809. // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this
  14810. // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),
  14811. // but takes a bounds parameter like [`fitBounds`](#map-fitbounds).
  14812. flyToBounds: function flyToBounds(bounds, options) {
  14813. var target = this._getBoundsCenterZoom(bounds, options);
  14814. return this.flyTo(target.center, target.zoom, options);
  14815. },
  14816. // @method setMaxBounds(bounds: LatLngBounds): this
  14817. // Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).
  14818. setMaxBounds: function setMaxBounds(bounds) {
  14819. bounds = toLatLngBounds(bounds);
  14820. if (this.listens('moveend', this._panInsideMaxBounds)) {
  14821. this.off('moveend', this._panInsideMaxBounds);
  14822. }
  14823. if (!bounds.isValid()) {
  14824. this.options.maxBounds = null;
  14825. return this;
  14826. }
  14827. this.options.maxBounds = bounds;
  14828. if (this._loaded) {
  14829. this._panInsideMaxBounds();
  14830. }
  14831. return this.on('moveend', this._panInsideMaxBounds);
  14832. },
  14833. // @method setMinZoom(zoom: Number): this
  14834. // Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).
  14835. setMinZoom: function setMinZoom(zoom) {
  14836. var oldZoom = this.options.minZoom;
  14837. this.options.minZoom = zoom;
  14838. if (this._loaded && oldZoom !== zoom) {
  14839. this.fire('zoomlevelschange');
  14840. if (this.getZoom() < this.options.minZoom) {
  14841. return this.setZoom(zoom);
  14842. }
  14843. }
  14844. return this;
  14845. },
  14846. // @method setMaxZoom(zoom: Number): this
  14847. // Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).
  14848. setMaxZoom: function setMaxZoom(zoom) {
  14849. var oldZoom = this.options.maxZoom;
  14850. this.options.maxZoom = zoom;
  14851. if (this._loaded && oldZoom !== zoom) {
  14852. this.fire('zoomlevelschange');
  14853. if (this.getZoom() > this.options.maxZoom) {
  14854. return this.setZoom(zoom);
  14855. }
  14856. }
  14857. return this;
  14858. },
  14859. // @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this
  14860. // Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.
  14861. panInsideBounds: function panInsideBounds(bounds, options) {
  14862. this._enforcingBounds = true;
  14863. var center = this.getCenter(),
  14864. newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));
  14865. if (!center.equals(newCenter)) {
  14866. this.panTo(newCenter, options);
  14867. }
  14868. this._enforcingBounds = false;
  14869. return this;
  14870. },
  14871. // @method panInside(latlng: LatLng, options?: padding options): this
  14872. // Pans the map the minimum amount to make the `latlng` visible. Use
  14873. // padding options to fit the display to more restricted bounds.
  14874. // If `latlng` is already within the (optionally padded) display bounds,
  14875. // the map will not be panned.
  14876. panInside: function panInside(latlng, options) {
  14877. options = options || {};
  14878. var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),
  14879. paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),
  14880. pixelCenter = this.project(this.getCenter()),
  14881. pixelPoint = this.project(latlng),
  14882. pixelBounds = this.getPixelBounds(),
  14883. paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),
  14884. paddedSize = paddedBounds.getSize();
  14885. if (!paddedBounds.contains(pixelPoint)) {
  14886. this._enforcingBounds = true;
  14887. var centerOffset = pixelPoint.subtract(paddedBounds.getCenter());
  14888. var offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);
  14889. pixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;
  14890. pixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;
  14891. this.panTo(this.unproject(pixelCenter), options);
  14892. this._enforcingBounds = false;
  14893. }
  14894. return this;
  14895. },
  14896. // @method invalidateSize(options: Zoom/pan options): this
  14897. // Checks if the map container size changed and updates the map if so —
  14898. // call it after you've changed the map size dynamically, also animating
  14899. // pan by default. If `options.pan` is `false`, panning will not occur.
  14900. // If `options.debounceMoveend` is `true`, it will delay `moveend` event so
  14901. // that it doesn't happen often even if the method is called many
  14902. // times in a row.
  14903. // @alternative
  14904. // @method invalidateSize(animate: Boolean): this
  14905. // Checks if the map container size changed and updates the map if so —
  14906. // call it after you've changed the map size dynamically, also animating
  14907. // pan by default.
  14908. invalidateSize: function invalidateSize(options) {
  14909. if (!this._loaded) {
  14910. return this;
  14911. }
  14912. options = extend({
  14913. animate: false,
  14914. pan: true
  14915. }, options === true ? {
  14916. animate: true
  14917. } : options);
  14918. var oldSize = this.getSize();
  14919. this._sizeChanged = true;
  14920. this._lastCenter = null;
  14921. var newSize = this.getSize(),
  14922. oldCenter = oldSize.divideBy(2).round(),
  14923. newCenter = newSize.divideBy(2).round(),
  14924. offset = oldCenter.subtract(newCenter);
  14925. if (!offset.x && !offset.y) {
  14926. return this;
  14927. }
  14928. if (options.animate && options.pan) {
  14929. this.panBy(offset);
  14930. } else {
  14931. if (options.pan) {
  14932. this._rawPanBy(offset);
  14933. }
  14934. this.fire('move');
  14935. if (options.debounceMoveend) {
  14936. clearTimeout(this._sizeTimer);
  14937. this._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200);
  14938. } else {
  14939. this.fire('moveend');
  14940. }
  14941. }
  14942. // @section Map state change events
  14943. // @event resize: ResizeEvent
  14944. // Fired when the map is resized.
  14945. return this.fire('resize', {
  14946. oldSize: oldSize,
  14947. newSize: newSize
  14948. });
  14949. },
  14950. // @section Methods for modifying map state
  14951. // @method stop(): this
  14952. // Stops the currently running `panTo` or `flyTo` animation, if any.
  14953. stop: function stop() {
  14954. this.setZoom(this._limitZoom(this._zoom));
  14955. if (!this.options.zoomSnap) {
  14956. this.fire('viewreset');
  14957. }
  14958. return this._stop();
  14959. },
  14960. // @section Geolocation methods
  14961. // @method locate(options?: Locate options): this
  14962. // Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)
  14963. // event with location data on success or a [`locationerror`](#map-locationerror) event on failure,
  14964. // and optionally sets the map view to the user's location with respect to
  14965. // detection accuracy (or to the world view if geolocation failed).
  14966. // Note that, if your page doesn't use HTTPS, this method will fail in
  14967. // modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))
  14968. // See `Locate options` for more details.
  14969. locate: function locate(options) {
  14970. options = this._locateOptions = extend({
  14971. timeout: 10000,
  14972. watch: false
  14973. // setView: false
  14974. // maxZoom: <Number>
  14975. // maximumAge: 0
  14976. // enableHighAccuracy: false
  14977. }, options);
  14978. if (!('geolocation' in navigator)) {
  14979. this._handleGeolocationError({
  14980. code: 0,
  14981. message: 'Geolocation not supported.'
  14982. });
  14983. return this;
  14984. }
  14985. var onResponse = bind(this._handleGeolocationResponse, this),
  14986. onError = bind(this._handleGeolocationError, this);
  14987. if (options.watch) {
  14988. this._locationWatchId = navigator.geolocation.watchPosition(onResponse, onError, options);
  14989. } else {
  14990. navigator.geolocation.getCurrentPosition(onResponse, onError, options);
  14991. }
  14992. return this;
  14993. },
  14994. // @method stopLocate(): this
  14995. // Stops watching location previously initiated by `map.locate({watch: true})`
  14996. // and aborts resetting the map view if map.locate was called with
  14997. // `{setView: true}`.
  14998. stopLocate: function stopLocate() {
  14999. if (navigator.geolocation && navigator.geolocation.clearWatch) {
  15000. navigator.geolocation.clearWatch(this._locationWatchId);
  15001. }
  15002. if (this._locateOptions) {
  15003. this._locateOptions.setView = false;
  15004. }
  15005. return this;
  15006. },
  15007. _handleGeolocationError: function _handleGeolocationError(error) {
  15008. if (!this._container._leaflet_id) {
  15009. return;
  15010. }
  15011. var c = error.code,
  15012. message = error.message || (c === 1 ? 'permission denied' : c === 2 ? 'position unavailable' : 'timeout');
  15013. if (this._locateOptions.setView && !this._loaded) {
  15014. this.fitWorld();
  15015. }
  15016. // @section Location events
  15017. // @event locationerror: ErrorEvent
  15018. // Fired when geolocation (using the [`locate`](#map-locate) method) failed.
  15019. this.fire('locationerror', {
  15020. code: c,
  15021. message: 'Geolocation error: ' + message + '.'
  15022. });
  15023. },
  15024. _handleGeolocationResponse: function _handleGeolocationResponse(pos) {
  15025. if (!this._container._leaflet_id) {
  15026. return;
  15027. }
  15028. var lat = pos.coords.latitude,
  15029. lng = pos.coords.longitude,
  15030. latlng = new LatLng(lat, lng),
  15031. bounds = latlng.toBounds(pos.coords.accuracy * 2),
  15032. options = this._locateOptions;
  15033. if (options.setView) {
  15034. var zoom = this.getBoundsZoom(bounds);
  15035. this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);
  15036. }
  15037. var data = {
  15038. latlng: latlng,
  15039. bounds: bounds,
  15040. timestamp: pos.timestamp
  15041. };
  15042. for (var i in pos.coords) {
  15043. if (typeof pos.coords[i] === 'number') {
  15044. data[i] = pos.coords[i];
  15045. }
  15046. }
  15047. // @event locationfound: LocationEvent
  15048. // Fired when geolocation (using the [`locate`](#map-locate) method)
  15049. // went successfully.
  15050. this.fire('locationfound', data);
  15051. },
  15052. // TODO Appropriate docs section?
  15053. // @section Other Methods
  15054. // @method addHandler(name: String, HandlerClass: Function): this
  15055. // Adds a new `Handler` to the map, given its name and constructor function.
  15056. addHandler: function addHandler(name, HandlerClass) {
  15057. if (!HandlerClass) {
  15058. return this;
  15059. }
  15060. var handler = this[name] = new HandlerClass(this);
  15061. this._handlers.push(handler);
  15062. if (this.options[name]) {
  15063. handler.enable();
  15064. }
  15065. return this;
  15066. },
  15067. // @method remove(): this
  15068. // Destroys the map and clears all related event listeners.
  15069. remove: function remove() {
  15070. this._initEvents(true);
  15071. if (this.options.maxBounds) {
  15072. this.off('moveend', this._panInsideMaxBounds);
  15073. }
  15074. if (this._containerId !== this._container._leaflet_id) {
  15075. throw new Error('Map container is being reused by another instance');
  15076. }
  15077. try {
  15078. // throws error in IE6-8
  15079. delete this._container._leaflet_id;
  15080. delete this._containerId;
  15081. } catch (e) {
  15082. /*eslint-disable */
  15083. this._container._leaflet_id = undefined;
  15084. /* eslint-enable */
  15085. this._containerId = undefined;
  15086. }
  15087. if (this._locationWatchId !== undefined) {
  15088. this.stopLocate();
  15089. }
  15090. this._stop();
  15091. _remove(this._mapPane);
  15092. if (this._clearControlPos) {
  15093. this._clearControlPos();
  15094. }
  15095. if (this._resizeRequest) {
  15096. cancelAnimFrame(this._resizeRequest);
  15097. this._resizeRequest = null;
  15098. }
  15099. this._clearHandlers();
  15100. if (this._loaded) {
  15101. // @section Map state change events
  15102. // @event unload: Event
  15103. // Fired when the map is destroyed with [remove](#map-remove) method.
  15104. this.fire('unload');
  15105. }
  15106. var i;
  15107. for (i in this._layers) {
  15108. this._layers[i].remove();
  15109. }
  15110. for (i in this._panes) {
  15111. _remove(this._panes[i]);
  15112. }
  15113. this._layers = [];
  15114. this._panes = [];
  15115. delete this._mapPane;
  15116. delete this._renderer;
  15117. return this;
  15118. },
  15119. // @section Other Methods
  15120. // @method createPane(name: String, container?: HTMLElement): HTMLElement
  15121. // Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,
  15122. // then returns it. The pane is created as a child of `container`, or
  15123. // as a child of the main map pane if not set.
  15124. createPane: function createPane(name, container) {
  15125. var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),
  15126. pane = create$1('div', className, container || this._mapPane);
  15127. if (name) {
  15128. this._panes[name] = pane;
  15129. }
  15130. return pane;
  15131. },
  15132. // @section Methods for Getting Map State
  15133. // @method getCenter(): LatLng
  15134. // Returns the geographical center of the map view
  15135. getCenter: function getCenter() {
  15136. this._checkIfLoaded();
  15137. if (this._lastCenter && !this._moved()) {
  15138. return this._lastCenter.clone();
  15139. }
  15140. return this.layerPointToLatLng(this._getCenterLayerPoint());
  15141. },
  15142. // @method getZoom(): Number
  15143. // Returns the current zoom level of the map view
  15144. getZoom: function getZoom() {
  15145. return this._zoom;
  15146. },
  15147. // @method getBounds(): LatLngBounds
  15148. // Returns the geographical bounds visible in the current map view
  15149. getBounds: function getBounds() {
  15150. var bounds = this.getPixelBounds(),
  15151. sw = this.unproject(bounds.getBottomLeft()),
  15152. ne = this.unproject(bounds.getTopRight());
  15153. return new LatLngBounds(sw, ne);
  15154. },
  15155. // @method getMinZoom(): Number
  15156. // Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.
  15157. getMinZoom: function getMinZoom() {
  15158. return this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;
  15159. },
  15160. // @method getMaxZoom(): Number
  15161. // Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).
  15162. getMaxZoom: function getMaxZoom() {
  15163. return this.options.maxZoom === undefined ? this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom : this.options.maxZoom;
  15164. },
  15165. // @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number
  15166. // Returns the maximum zoom level on which the given bounds fit to the map
  15167. // view in its entirety. If `inside` (optional) is set to `true`, the method
  15168. // instead returns the minimum zoom level on which the map view fits into
  15169. // the given bounds in its entirety.
  15170. getBoundsZoom: function getBoundsZoom(bounds, inside, padding) {
  15171. // (LatLngBounds[, Boolean, Point]) -> Number
  15172. bounds = toLatLngBounds(bounds);
  15173. padding = toPoint(padding || [0, 0]);
  15174. var zoom = this.getZoom() || 0,
  15175. min = this.getMinZoom(),
  15176. max = this.getMaxZoom(),
  15177. nw = bounds.getNorthWest(),
  15178. se = bounds.getSouthEast(),
  15179. size = this.getSize().subtract(padding),
  15180. boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),
  15181. snap = Browser.any3d ? this.options.zoomSnap : 1,
  15182. scalex = size.x / boundsSize.x,
  15183. scaley = size.y / boundsSize.y,
  15184. scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);
  15185. zoom = this.getScaleZoom(scale, zoom);
  15186. if (snap) {
  15187. zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level
  15188. zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;
  15189. }
  15190. return Math.max(min, Math.min(max, zoom));
  15191. },
  15192. // @method getSize(): Point
  15193. // Returns the current size of the map container (in pixels).
  15194. getSize: function getSize() {
  15195. if (!this._size || this._sizeChanged) {
  15196. this._size = new Point(this._container.clientWidth || 0, this._container.clientHeight || 0);
  15197. this._sizeChanged = false;
  15198. }
  15199. return this._size.clone();
  15200. },
  15201. // @method getPixelBounds(): Bounds
  15202. // Returns the bounds of the current map view in projected pixel
  15203. // coordinates (sometimes useful in layer and overlay implementations).
  15204. getPixelBounds: function getPixelBounds(center, zoom) {
  15205. var topLeftPoint = this._getTopLeftPoint(center, zoom);
  15206. return new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));
  15207. },
  15208. // TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to
  15209. // the map pane? "left point of the map layer" can be confusing, specially
  15210. // since there can be negative offsets.
  15211. // @method getPixelOrigin(): Point
  15212. // Returns the projected pixel coordinates of the top left point of
  15213. // the map layer (useful in custom layer and overlay implementations).
  15214. getPixelOrigin: function getPixelOrigin() {
  15215. this._checkIfLoaded();
  15216. return this._pixelOrigin;
  15217. },
  15218. // @method getPixelWorldBounds(zoom?: Number): Bounds
  15219. // Returns the world's bounds in pixel coordinates for zoom level `zoom`.
  15220. // If `zoom` is omitted, the map's current zoom level is used.
  15221. getPixelWorldBounds: function getPixelWorldBounds(zoom) {
  15222. return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);
  15223. },
  15224. // @section Other Methods
  15225. // @method getPane(pane: String|HTMLElement): HTMLElement
  15226. // Returns a [map pane](#map-pane), given its name or its HTML element (its identity).
  15227. getPane: function getPane(pane) {
  15228. return typeof pane === 'string' ? this._panes[pane] : pane;
  15229. },
  15230. // @method getPanes(): Object
  15231. // Returns a plain object containing the names of all [panes](#map-pane) as keys and
  15232. // the panes as values.
  15233. getPanes: function getPanes() {
  15234. return this._panes;
  15235. },
  15236. // @method getContainer: HTMLElement
  15237. // Returns the HTML element that contains the map.
  15238. getContainer: function getContainer() {
  15239. return this._container;
  15240. },
  15241. // @section Conversion Methods
  15242. // @method getZoomScale(toZoom: Number, fromZoom: Number): Number
  15243. // Returns the scale factor to be applied to a map transition from zoom level
  15244. // `fromZoom` to `toZoom`. Used internally to help with zoom animations.
  15245. getZoomScale: function getZoomScale(toZoom, fromZoom) {
  15246. // TODO replace with universal implementation after refactoring projections
  15247. var crs = this.options.crs;
  15248. fromZoom = fromZoom === undefined ? this._zoom : fromZoom;
  15249. return crs.scale(toZoom) / crs.scale(fromZoom);
  15250. },
  15251. // @method getScaleZoom(scale: Number, fromZoom: Number): Number
  15252. // Returns the zoom level that the map would end up at, if it is at `fromZoom`
  15253. // level and everything is scaled by a factor of `scale`. Inverse of
  15254. // [`getZoomScale`](#map-getZoomScale).
  15255. getScaleZoom: function getScaleZoom(scale, fromZoom) {
  15256. var crs = this.options.crs;
  15257. fromZoom = fromZoom === undefined ? this._zoom : fromZoom;
  15258. var zoom = crs.zoom(scale * crs.scale(fromZoom));
  15259. return isNaN(zoom) ? Infinity : zoom;
  15260. },
  15261. // @method project(latlng: LatLng, zoom: Number): Point
  15262. // Projects a geographical coordinate `LatLng` according to the projection
  15263. // of the map's CRS, then scales it according to `zoom` and the CRS's
  15264. // `Transformation`. The result is pixel coordinate relative to
  15265. // the CRS origin.
  15266. project: function project(latlng, zoom) {
  15267. zoom = zoom === undefined ? this._zoom : zoom;
  15268. return this.options.crs.latLngToPoint(toLatLng(latlng), zoom);
  15269. },
  15270. // @method unproject(point: Point, zoom: Number): LatLng
  15271. // Inverse of [`project`](#map-project).
  15272. unproject: function unproject(point, zoom) {
  15273. zoom = zoom === undefined ? this._zoom : zoom;
  15274. return this.options.crs.pointToLatLng(toPoint(point), zoom);
  15275. },
  15276. // @method layerPointToLatLng(point: Point): LatLng
  15277. // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),
  15278. // returns the corresponding geographical coordinate (for the current zoom level).
  15279. layerPointToLatLng: function layerPointToLatLng(point) {
  15280. var projectedPoint = toPoint(point).add(this.getPixelOrigin());
  15281. return this.unproject(projectedPoint);
  15282. },
  15283. // @method latLngToLayerPoint(latlng: LatLng): Point
  15284. // Given a geographical coordinate, returns the corresponding pixel coordinate
  15285. // relative to the [origin pixel](#map-getpixelorigin).
  15286. latLngToLayerPoint: function latLngToLayerPoint(latlng) {
  15287. var projectedPoint = this.project(toLatLng(latlng))._round();
  15288. return projectedPoint._subtract(this.getPixelOrigin());
  15289. },
  15290. // @method wrapLatLng(latlng: LatLng): LatLng
  15291. // Returns a `LatLng` where `lat` and `lng` has been wrapped according to the
  15292. // map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the
  15293. // CRS's bounds.
  15294. // By default this means longitude is wrapped around the dateline so its
  15295. // value is between -180 and +180 degrees.
  15296. wrapLatLng: function wrapLatLng(latlng) {
  15297. return this.options.crs.wrapLatLng(toLatLng(latlng));
  15298. },
  15299. // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds
  15300. // Returns a `LatLngBounds` with the same size as the given one, ensuring that
  15301. // its center is within the CRS's bounds.
  15302. // By default this means the center longitude is wrapped around the dateline so its
  15303. // value is between -180 and +180 degrees, and the majority of the bounds
  15304. // overlaps the CRS's bounds.
  15305. wrapLatLngBounds: function wrapLatLngBounds(latlng) {
  15306. return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));
  15307. },
  15308. // @method distance(latlng1: LatLng, latlng2: LatLng): Number
  15309. // Returns the distance between two geographical coordinates according to
  15310. // the map's CRS. By default this measures distance in meters.
  15311. distance: function distance(latlng1, latlng2) {
  15312. return this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));
  15313. },
  15314. // @method containerPointToLayerPoint(point: Point): Point
  15315. // Given a pixel coordinate relative to the map container, returns the corresponding
  15316. // pixel coordinate relative to the [origin pixel](#map-getpixelorigin).
  15317. containerPointToLayerPoint: function containerPointToLayerPoint(point) {
  15318. // (Point)
  15319. return toPoint(point).subtract(this._getMapPanePos());
  15320. },
  15321. // @method layerPointToContainerPoint(point: Point): Point
  15322. // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),
  15323. // returns the corresponding pixel coordinate relative to the map container.
  15324. layerPointToContainerPoint: function layerPointToContainerPoint(point) {
  15325. // (Point)
  15326. return toPoint(point).add(this._getMapPanePos());
  15327. },
  15328. // @method containerPointToLatLng(point: Point): LatLng
  15329. // Given a pixel coordinate relative to the map container, returns
  15330. // the corresponding geographical coordinate (for the current zoom level).
  15331. containerPointToLatLng: function containerPointToLatLng(point) {
  15332. var layerPoint = this.containerPointToLayerPoint(toPoint(point));
  15333. return this.layerPointToLatLng(layerPoint);
  15334. },
  15335. // @method latLngToContainerPoint(latlng: LatLng): Point
  15336. // Given a geographical coordinate, returns the corresponding pixel coordinate
  15337. // relative to the map container.
  15338. latLngToContainerPoint: function latLngToContainerPoint(latlng) {
  15339. return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));
  15340. },
  15341. // @method mouseEventToContainerPoint(ev: MouseEvent): Point
  15342. // Given a MouseEvent object, returns the pixel coordinate relative to the
  15343. // map container where the event took place.
  15344. mouseEventToContainerPoint: function mouseEventToContainerPoint(e) {
  15345. return getMousePosition(e, this._container);
  15346. },
  15347. // @method mouseEventToLayerPoint(ev: MouseEvent): Point
  15348. // Given a MouseEvent object, returns the pixel coordinate relative to
  15349. // the [origin pixel](#map-getpixelorigin) where the event took place.
  15350. mouseEventToLayerPoint: function mouseEventToLayerPoint(e) {
  15351. return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));
  15352. },
  15353. // @method mouseEventToLatLng(ev: MouseEvent): LatLng
  15354. // Given a MouseEvent object, returns geographical coordinate where the
  15355. // event took place.
  15356. mouseEventToLatLng: function mouseEventToLatLng(e) {
  15357. // (MouseEvent)
  15358. return this.layerPointToLatLng(this.mouseEventToLayerPoint(e));
  15359. },
  15360. // map initialization methods
  15361. _initContainer: function _initContainer(id) {
  15362. var container = this._container = get(id);
  15363. if (!container) {
  15364. throw new Error('Map container not found.');
  15365. } else if (container._leaflet_id) {
  15366. throw new Error('Map container is already initialized.');
  15367. }
  15368. on(container, 'scroll', this._onScroll, this);
  15369. this._containerId = stamp(container);
  15370. },
  15371. _initLayout: function _initLayout() {
  15372. var container = this._container;
  15373. this._fadeAnimated = this.options.fadeAnimation && Browser.any3d;
  15374. addClass(container, 'leaflet-container' + (Browser.touch ? ' leaflet-touch' : '') + (Browser.retina ? ' leaflet-retina' : '') + (Browser.ielt9 ? ' leaflet-oldie' : '') + (Browser.safari ? ' leaflet-safari' : '') + (this._fadeAnimated ? ' leaflet-fade-anim' : ''));
  15375. var position = getStyle(container, 'position');
  15376. if (position !== 'absolute' && position !== 'relative' && position !== 'fixed' && position !== 'sticky') {
  15377. container.style.position = 'relative';
  15378. }
  15379. this._initPanes();
  15380. if (this._initControlPos) {
  15381. this._initControlPos();
  15382. }
  15383. },
  15384. _initPanes: function _initPanes() {
  15385. var panes = this._panes = {};
  15386. this._paneRenderers = {};
  15387. // @section
  15388. //
  15389. // Panes are DOM elements used to control the ordering of layers on the map. You
  15390. // can access panes with [`map.getPane`](#map-getpane) or
  15391. // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the
  15392. // [`map.createPane`](#map-createpane) method.
  15393. //
  15394. // Every map has the following default panes that differ only in zIndex.
  15395. //
  15396. // @pane mapPane: HTMLElement = 'auto'
  15397. // Pane that contains all other map panes
  15398. this._mapPane = this.createPane('mapPane', this._container);
  15399. setPosition(this._mapPane, new Point(0, 0));
  15400. // @pane tilePane: HTMLElement = 200
  15401. // Pane for `GridLayer`s and `TileLayer`s
  15402. this.createPane('tilePane');
  15403. // @pane overlayPane: HTMLElement = 400
  15404. // Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s
  15405. this.createPane('overlayPane');
  15406. // @pane shadowPane: HTMLElement = 500
  15407. // Pane for overlay shadows (e.g. `Marker` shadows)
  15408. this.createPane('shadowPane');
  15409. // @pane markerPane: HTMLElement = 600
  15410. // Pane for `Icon`s of `Marker`s
  15411. this.createPane('markerPane');
  15412. // @pane tooltipPane: HTMLElement = 650
  15413. // Pane for `Tooltip`s.
  15414. this.createPane('tooltipPane');
  15415. // @pane popupPane: HTMLElement = 700
  15416. // Pane for `Popup`s.
  15417. this.createPane('popupPane');
  15418. if (!this.options.markerZoomAnimation) {
  15419. addClass(panes.markerPane, 'leaflet-zoom-hide');
  15420. addClass(panes.shadowPane, 'leaflet-zoom-hide');
  15421. }
  15422. },
  15423. // private methods that modify map state
  15424. // @section Map state change events
  15425. _resetView: function _resetView(center, zoom, noMoveStart) {
  15426. setPosition(this._mapPane, new Point(0, 0));
  15427. var loading = !this._loaded;
  15428. this._loaded = true;
  15429. zoom = this._limitZoom(zoom);
  15430. this.fire('viewprereset');
  15431. var zoomChanged = this._zoom !== zoom;
  15432. this._moveStart(zoomChanged, noMoveStart)._move(center, zoom)._moveEnd(zoomChanged);
  15433. // @event viewreset: Event
  15434. // Fired when the map needs to redraw its content (this usually happens
  15435. // on map zoom or load). Very useful for creating custom overlays.
  15436. this.fire('viewreset');
  15437. // @event load: Event
  15438. // Fired when the map is initialized (when its center and zoom are set
  15439. // for the first time).
  15440. if (loading) {
  15441. this.fire('load');
  15442. }
  15443. },
  15444. _moveStart: function _moveStart(zoomChanged, noMoveStart) {
  15445. // @event zoomstart: Event
  15446. // Fired when the map zoom is about to change (e.g. before zoom animation).
  15447. // @event movestart: Event
  15448. // Fired when the view of the map starts changing (e.g. user starts dragging the map).
  15449. if (zoomChanged) {
  15450. this.fire('zoomstart');
  15451. }
  15452. if (!noMoveStart) {
  15453. this.fire('movestart');
  15454. }
  15455. return this;
  15456. },
  15457. _move: function _move(center, zoom, data, supressEvent) {
  15458. if (zoom === undefined) {
  15459. zoom = this._zoom;
  15460. }
  15461. var zoomChanged = this._zoom !== zoom;
  15462. this._zoom = zoom;
  15463. this._lastCenter = center;
  15464. this._pixelOrigin = this._getNewPixelOrigin(center);
  15465. if (!supressEvent) {
  15466. // @event zoom: Event
  15467. // Fired repeatedly during any change in zoom level,
  15468. // including zoom and fly animations.
  15469. if (zoomChanged || data && data.pinch) {
  15470. // Always fire 'zoom' if pinching because #3530
  15471. this.fire('zoom', data);
  15472. }
  15473. // @event move: Event
  15474. // Fired repeatedly during any movement of the map,
  15475. // including pan and fly animations.
  15476. this.fire('move', data);
  15477. } else if (data && data.pinch) {
  15478. // Always fire 'zoom' if pinching because #3530
  15479. this.fire('zoom', data);
  15480. }
  15481. return this;
  15482. },
  15483. _moveEnd: function _moveEnd(zoomChanged) {
  15484. // @event zoomend: Event
  15485. // Fired when the map zoom changed, after any animations.
  15486. if (zoomChanged) {
  15487. this.fire('zoomend');
  15488. }
  15489. // @event moveend: Event
  15490. // Fired when the center of the map stops changing
  15491. // (e.g. user stopped dragging the map or after non-centered zoom).
  15492. return this.fire('moveend');
  15493. },
  15494. _stop: function _stop() {
  15495. cancelAnimFrame(this._flyToFrame);
  15496. if (this._panAnim) {
  15497. this._panAnim.stop();
  15498. }
  15499. return this;
  15500. },
  15501. _rawPanBy: function _rawPanBy(offset) {
  15502. setPosition(this._mapPane, this._getMapPanePos().subtract(offset));
  15503. },
  15504. _getZoomSpan: function _getZoomSpan() {
  15505. return this.getMaxZoom() - this.getMinZoom();
  15506. },
  15507. _panInsideMaxBounds: function _panInsideMaxBounds() {
  15508. if (!this._enforcingBounds) {
  15509. this.panInsideBounds(this.options.maxBounds);
  15510. }
  15511. },
  15512. _checkIfLoaded: function _checkIfLoaded() {
  15513. if (!this._loaded) {
  15514. throw new Error('Set map center and zoom first.');
  15515. }
  15516. },
  15517. // DOM event handling
  15518. // @section Interaction events
  15519. _initEvents: function _initEvents(remove) {
  15520. this._targets = {};
  15521. this._targets[stamp(this._container)] = this;
  15522. var onOff = remove ? off : on;
  15523. // @event click: MouseEvent
  15524. // Fired when the user clicks (or taps) the map.
  15525. // @event dblclick: MouseEvent
  15526. // Fired when the user double-clicks (or double-taps) the map.
  15527. // @event mousedown: MouseEvent
  15528. // Fired when the user pushes the mouse button on the map.
  15529. // @event mouseup: MouseEvent
  15530. // Fired when the user releases the mouse button on the map.
  15531. // @event mouseover: MouseEvent
  15532. // Fired when the mouse enters the map.
  15533. // @event mouseout: MouseEvent
  15534. // Fired when the mouse leaves the map.
  15535. // @event mousemove: MouseEvent
  15536. // Fired while the mouse moves over the map.
  15537. // @event contextmenu: MouseEvent
  15538. // Fired when the user pushes the right mouse button on the map, prevents
  15539. // default browser context menu from showing if there are listeners on
  15540. // this event. Also fired on mobile when the user holds a single touch
  15541. // for a second (also called long press).
  15542. // @event keypress: KeyboardEvent
  15543. // Fired when the user presses a key from the keyboard that produces a character value while the map is focused.
  15544. // @event keydown: KeyboardEvent
  15545. // Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,
  15546. // the `keydown` event is fired for keys that produce a character value and for keys
  15547. // that do not produce a character value.
  15548. // @event keyup: KeyboardEvent
  15549. // Fired when the user releases a key from the keyboard while the map is focused.
  15550. onOff(this._container, 'click dblclick mousedown mouseup ' + 'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);
  15551. if (this.options.trackResize) {
  15552. onOff(window, 'resize', this._onResize, this);
  15553. }
  15554. if (Browser.any3d && this.options.transform3DLimit) {
  15555. (remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);
  15556. }
  15557. },
  15558. _onResize: function _onResize() {
  15559. cancelAnimFrame(this._resizeRequest);
  15560. this._resizeRequest = requestAnimFrame(function () {
  15561. this.invalidateSize({
  15562. debounceMoveend: true
  15563. });
  15564. }, this);
  15565. },
  15566. _onScroll: function _onScroll() {
  15567. this._container.scrollTop = 0;
  15568. this._container.scrollLeft = 0;
  15569. },
  15570. _onMoveEnd: function _onMoveEnd() {
  15571. var pos = this._getMapPanePos();
  15572. if (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {
  15573. // https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have
  15574. // a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/
  15575. this._resetView(this.getCenter(), this.getZoom());
  15576. }
  15577. },
  15578. _findEventTargets: function _findEventTargets(e, type) {
  15579. var targets = [],
  15580. target,
  15581. isHover = type === 'mouseout' || type === 'mouseover',
  15582. src = e.target || e.srcElement,
  15583. dragging = false;
  15584. while (src) {
  15585. target = this._targets[stamp(src)];
  15586. if (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) {
  15587. // Prevent firing click after you just dragged an object.
  15588. dragging = true;
  15589. break;
  15590. }
  15591. if (target && target.listens(type, true)) {
  15592. if (isHover && !isExternalTarget(src, e)) {
  15593. break;
  15594. }
  15595. targets.push(target);
  15596. if (isHover) {
  15597. break;
  15598. }
  15599. }
  15600. if (src === this._container) {
  15601. break;
  15602. }
  15603. src = src.parentNode;
  15604. }
  15605. if (!targets.length && !dragging && !isHover && this.listens(type, true)) {
  15606. targets = [this];
  15607. }
  15608. return targets;
  15609. },
  15610. _isClickDisabled: function _isClickDisabled(el) {
  15611. while (el && el !== this._container) {
  15612. if (el['_leaflet_disable_click']) {
  15613. return true;
  15614. }
  15615. el = el.parentNode;
  15616. }
  15617. },
  15618. _handleDOMEvent: function _handleDOMEvent(e) {
  15619. var el = e.target || e.srcElement;
  15620. if (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) {
  15621. return;
  15622. }
  15623. var type = e.type;
  15624. if (type === 'mousedown') {
  15625. // prevents outline when clicking on keyboard-focusable element
  15626. preventOutline(el);
  15627. }
  15628. this._fireDOMEvent(e, type);
  15629. },
  15630. _mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],
  15631. _fireDOMEvent: function _fireDOMEvent(e, type, canvasTargets) {
  15632. if (e.type === 'click') {
  15633. // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).
  15634. // @event preclick: MouseEvent
  15635. // Fired before mouse click on the map (sometimes useful when you
  15636. // want something to happen on click before any existing click
  15637. // handlers start running).
  15638. var synth = extend({}, e);
  15639. synth.type = 'preclick';
  15640. this._fireDOMEvent(synth, synth.type, canvasTargets);
  15641. }
  15642. // Find the layer the event is propagating from and its parents.
  15643. var targets = this._findEventTargets(e, type);
  15644. if (canvasTargets) {
  15645. var filtered = []; // pick only targets with listeners
  15646. for (var i = 0; i < canvasTargets.length; i++) {
  15647. if (canvasTargets[i].listens(type, true)) {
  15648. filtered.push(canvasTargets[i]);
  15649. }
  15650. }
  15651. targets = filtered.concat(targets);
  15652. }
  15653. if (!targets.length) {
  15654. return;
  15655. }
  15656. if (type === 'contextmenu') {
  15657. preventDefault(e);
  15658. }
  15659. var target = targets[0];
  15660. var data = {
  15661. originalEvent: e
  15662. };
  15663. if (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {
  15664. var isMarker = target.getLatLng && (!target._radius || target._radius <= 10);
  15665. data.containerPoint = isMarker ? this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);
  15666. data.layerPoint = this.containerPointToLayerPoint(data.containerPoint);
  15667. data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);
  15668. }
  15669. for (i = 0; i < targets.length; i++) {
  15670. targets[i].fire(type, data, true);
  15671. if (data.originalEvent._stopped || targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1) {
  15672. return;
  15673. }
  15674. }
  15675. },
  15676. _draggableMoved: function _draggableMoved(obj) {
  15677. obj = obj.dragging && obj.dragging.enabled() ? obj : this;
  15678. return obj.dragging && obj.dragging.moved() || this.boxZoom && this.boxZoom.moved();
  15679. },
  15680. _clearHandlers: function _clearHandlers() {
  15681. for (var i = 0, len = this._handlers.length; i < len; i++) {
  15682. this._handlers[i].disable();
  15683. }
  15684. },
  15685. // @section Other Methods
  15686. // @method whenReady(fn: Function, context?: Object): this
  15687. // Runs the given function `fn` when the map gets initialized with
  15688. // a view (center and zoom) and at least one layer, or immediately
  15689. // if it's already initialized, optionally passing a function context.
  15690. whenReady: function whenReady(callback, context) {
  15691. if (this._loaded) {
  15692. callback.call(context || this, {
  15693. target: this
  15694. });
  15695. } else {
  15696. this.on('load', callback, context);
  15697. }
  15698. return this;
  15699. },
  15700. // private methods for getting map state
  15701. _getMapPanePos: function _getMapPanePos() {
  15702. return getPosition(this._mapPane) || new Point(0, 0);
  15703. },
  15704. _moved: function _moved() {
  15705. var pos = this._getMapPanePos();
  15706. return pos && !pos.equals([0, 0]);
  15707. },
  15708. _getTopLeftPoint: function _getTopLeftPoint(center, zoom) {
  15709. var pixelOrigin = center && zoom !== undefined ? this._getNewPixelOrigin(center, zoom) : this.getPixelOrigin();
  15710. return pixelOrigin.subtract(this._getMapPanePos());
  15711. },
  15712. _getNewPixelOrigin: function _getNewPixelOrigin(center, zoom) {
  15713. var viewHalf = this.getSize()._divideBy(2);
  15714. return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();
  15715. },
  15716. _latLngToNewLayerPoint: function _latLngToNewLayerPoint(latlng, zoom, center) {
  15717. var topLeft = this._getNewPixelOrigin(center, zoom);
  15718. return this.project(latlng, zoom)._subtract(topLeft);
  15719. },
  15720. _latLngBoundsToNewLayerBounds: function _latLngBoundsToNewLayerBounds(latLngBounds, zoom, center) {
  15721. var topLeft = this._getNewPixelOrigin(center, zoom);
  15722. return toBounds([this.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft), this.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft), this.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft), this.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)]);
  15723. },
  15724. // layer point of the current center
  15725. _getCenterLayerPoint: function _getCenterLayerPoint() {
  15726. return this.containerPointToLayerPoint(this.getSize()._divideBy(2));
  15727. },
  15728. // offset of the specified place to the current center in pixels
  15729. _getCenterOffset: function _getCenterOffset(latlng) {
  15730. return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());
  15731. },
  15732. // adjust center for view to get inside bounds
  15733. _limitCenter: function _limitCenter(center, zoom, bounds) {
  15734. if (!bounds) {
  15735. return center;
  15736. }
  15737. var centerPoint = this.project(center, zoom),
  15738. viewHalf = this.getSize().divideBy(2),
  15739. viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),
  15740. offset = this._getBoundsOffset(viewBounds, bounds, zoom);
  15741. // If offset is less than a pixel, ignore.
  15742. // This prevents unstable projections from getting into
  15743. // an infinite loop of tiny offsets.
  15744. if (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {
  15745. return center;
  15746. }
  15747. return this.unproject(centerPoint.add(offset), zoom);
  15748. },
  15749. // adjust offset for view to get inside bounds
  15750. _limitOffset: function _limitOffset(offset, bounds) {
  15751. if (!bounds) {
  15752. return offset;
  15753. }
  15754. var viewBounds = this.getPixelBounds(),
  15755. newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));
  15756. return offset.add(this._getBoundsOffset(newBounds, bounds));
  15757. },
  15758. // returns offset needed for pxBounds to get inside maxBounds at a specified zoom
  15759. _getBoundsOffset: function _getBoundsOffset(pxBounds, maxBounds, zoom) {
  15760. var projectedMaxBounds = toBounds(this.project(maxBounds.getNorthEast(), zoom), this.project(maxBounds.getSouthWest(), zoom)),
  15761. minOffset = projectedMaxBounds.min.subtract(pxBounds.min),
  15762. maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),
  15763. dx = this._rebound(minOffset.x, -maxOffset.x),
  15764. dy = this._rebound(minOffset.y, -maxOffset.y);
  15765. return new Point(dx, dy);
  15766. },
  15767. _rebound: function _rebound(left, right) {
  15768. return left + right > 0 ? Math.round(left - right) / 2 : Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));
  15769. },
  15770. _limitZoom: function _limitZoom(zoom) {
  15771. var min = this.getMinZoom(),
  15772. max = this.getMaxZoom(),
  15773. snap = Browser.any3d ? this.options.zoomSnap : 1;
  15774. if (snap) {
  15775. zoom = Math.round(zoom / snap) * snap;
  15776. }
  15777. return Math.max(min, Math.min(max, zoom));
  15778. },
  15779. _onPanTransitionStep: function _onPanTransitionStep() {
  15780. this.fire('move');
  15781. },
  15782. _onPanTransitionEnd: function _onPanTransitionEnd() {
  15783. removeClass(this._mapPane, 'leaflet-pan-anim');
  15784. this.fire('moveend');
  15785. },
  15786. _tryAnimatedPan: function _tryAnimatedPan(center, options) {
  15787. // difference between the new and current centers in pixels
  15788. var offset = this._getCenterOffset(center)._trunc();
  15789. // don't animate too far unless animate: true specified in options
  15790. if ((options && options.animate) !== true && !this.getSize().contains(offset)) {
  15791. return false;
  15792. }
  15793. this.panBy(offset, options);
  15794. return true;
  15795. },
  15796. _createAnimProxy: function _createAnimProxy() {
  15797. var proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated');
  15798. this._panes.mapPane.appendChild(proxy);
  15799. this.on('zoomanim', function (e) {
  15800. var prop = TRANSFORM,
  15801. transform = this._proxy.style[prop];
  15802. setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));
  15803. // workaround for case when transform is the same and so transitionend event is not fired
  15804. if (transform === this._proxy.style[prop] && this._animatingZoom) {
  15805. this._onZoomTransitionEnd();
  15806. }
  15807. }, this);
  15808. this.on('load moveend', this._animMoveEnd, this);
  15809. this._on('unload', this._destroyAnimProxy, this);
  15810. },
  15811. _destroyAnimProxy: function _destroyAnimProxy() {
  15812. _remove(this._proxy);
  15813. this.off('load moveend', this._animMoveEnd, this);
  15814. delete this._proxy;
  15815. },
  15816. _animMoveEnd: function _animMoveEnd() {
  15817. var c = this.getCenter(),
  15818. z = this.getZoom();
  15819. setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));
  15820. },
  15821. _catchTransitionEnd: function _catchTransitionEnd(e) {
  15822. if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {
  15823. this._onZoomTransitionEnd();
  15824. }
  15825. },
  15826. _nothingToAnimate: function _nothingToAnimate() {
  15827. return !this._container.getElementsByClassName('leaflet-zoom-animated').length;
  15828. },
  15829. _tryAnimatedZoom: function _tryAnimatedZoom(center, zoom, options) {
  15830. if (this._animatingZoom) {
  15831. return true;
  15832. }
  15833. options = options || {};
  15834. // don't animate if disabled, not supported or zoom difference is too large
  15835. if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) {
  15836. return false;
  15837. }
  15838. // offset is the pixel coords of the zoom origin relative to the current center
  15839. var scale = this.getZoomScale(zoom),
  15840. offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);
  15841. // don't animate if the zoom origin isn't within one screen from the current center, unless forced
  15842. if (options.animate !== true && !this.getSize().contains(offset)) {
  15843. return false;
  15844. }
  15845. requestAnimFrame(function () {
  15846. this._moveStart(true, false)._animateZoom(center, zoom, true);
  15847. }, this);
  15848. return true;
  15849. },
  15850. _animateZoom: function _animateZoom(center, zoom, startAnim, noUpdate) {
  15851. if (!this._mapPane) {
  15852. return;
  15853. }
  15854. if (startAnim) {
  15855. this._animatingZoom = true;
  15856. // remember what center/zoom to set after animation
  15857. this._animateToCenter = center;
  15858. this._animateToZoom = zoom;
  15859. addClass(this._mapPane, 'leaflet-zoom-anim');
  15860. }
  15861. // @section Other Events
  15862. // @event zoomanim: ZoomAnimEvent
  15863. // Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.
  15864. this.fire('zoomanim', {
  15865. center: center,
  15866. zoom: zoom,
  15867. noUpdate: noUpdate
  15868. });
  15869. if (!this._tempFireZoomEvent) {
  15870. this._tempFireZoomEvent = this._zoom !== this._animateToZoom;
  15871. }
  15872. this._move(this._animateToCenter, this._animateToZoom, undefined, true);
  15873. // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693
  15874. setTimeout(bind(this._onZoomTransitionEnd, this), 250);
  15875. },
  15876. _onZoomTransitionEnd: function _onZoomTransitionEnd() {
  15877. if (!this._animatingZoom) {
  15878. return;
  15879. }
  15880. if (this._mapPane) {
  15881. removeClass(this._mapPane, 'leaflet-zoom-anim');
  15882. }
  15883. this._animatingZoom = false;
  15884. this._move(this._animateToCenter, this._animateToZoom, undefined, true);
  15885. if (this._tempFireZoomEvent) {
  15886. this.fire('zoom');
  15887. }
  15888. delete this._tempFireZoomEvent;
  15889. this.fire('move');
  15890. this._moveEnd(true);
  15891. }
  15892. });
  15893. // @section
  15894. // @factory L.map(id: String, options?: Map options)
  15895. // Instantiates a map object given the DOM ID of a `<div>` element
  15896. // and optionally an object literal with `Map options`.
  15897. //
  15898. // @alternative
  15899. // @factory L.map(el: HTMLElement, options?: Map options)
  15900. // Instantiates a map object given an instance of a `<div>` HTML element
  15901. // and optionally an object literal with `Map options`.
  15902. function createMap(id, options) {
  15903. return new Map(id, options);
  15904. }
  15905. /*
  15906. * @class Control
  15907. * @aka L.Control
  15908. * @inherits Class
  15909. *
  15910. * L.Control is a base class for implementing map controls. Handles positioning.
  15911. * All other controls extend from this class.
  15912. */
  15913. var Control = Class.extend({
  15914. // @section
  15915. // @aka Control Options
  15916. options: {
  15917. // @option position: String = 'topright'
  15918. // The position of the control (one of the map corners). Possible values are `'topleft'`,
  15919. // `'topright'`, `'bottomleft'` or `'bottomright'`
  15920. position: 'topright'
  15921. },
  15922. initialize: function initialize(options) {
  15923. setOptions(this, options);
  15924. },
  15925. /* @section
  15926. * Classes extending L.Control will inherit the following methods:
  15927. *
  15928. * @method getPosition: string
  15929. * Returns the position of the control.
  15930. */
  15931. getPosition: function getPosition() {
  15932. return this.options.position;
  15933. },
  15934. // @method setPosition(position: string): this
  15935. // Sets the position of the control.
  15936. setPosition: function setPosition(position) {
  15937. var map = this._map;
  15938. if (map) {
  15939. map.removeControl(this);
  15940. }
  15941. this.options.position = position;
  15942. if (map) {
  15943. map.addControl(this);
  15944. }
  15945. return this;
  15946. },
  15947. // @method getContainer: HTMLElement
  15948. // Returns the HTMLElement that contains the control.
  15949. getContainer: function getContainer() {
  15950. return this._container;
  15951. },
  15952. // @method addTo(map: Map): this
  15953. // Adds the control to the given map.
  15954. addTo: function addTo(map) {
  15955. this.remove();
  15956. this._map = map;
  15957. var container = this._container = this.onAdd(map),
  15958. pos = this.getPosition(),
  15959. corner = map._controlCorners[pos];
  15960. addClass(container, 'leaflet-control');
  15961. if (pos.indexOf('bottom') !== -1) {
  15962. corner.insertBefore(container, corner.firstChild);
  15963. } else {
  15964. corner.appendChild(container);
  15965. }
  15966. this._map.on('unload', this.remove, this);
  15967. return this;
  15968. },
  15969. // @method remove: this
  15970. // Removes the control from the map it is currently active on.
  15971. remove: function remove() {
  15972. if (!this._map) {
  15973. return this;
  15974. }
  15975. _remove(this._container);
  15976. if (this.onRemove) {
  15977. this.onRemove(this._map);
  15978. }
  15979. this._map.off('unload', this.remove, this);
  15980. this._map = null;
  15981. return this;
  15982. },
  15983. _refocusOnMap: function _refocusOnMap(e) {
  15984. // if map exists and event is not a keyboard event
  15985. if (this._map && e && e.screenX > 0 && e.screenY > 0) {
  15986. this._map.getContainer().focus();
  15987. }
  15988. }
  15989. });
  15990. var control = function control(options) {
  15991. return new Control(options);
  15992. };
  15993. /* @section Extension methods
  15994. * @uninheritable
  15995. *
  15996. * Every control should extend from `L.Control` and (re-)implement the following methods.
  15997. *
  15998. * @method onAdd(map: Map): HTMLElement
  15999. * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).
  16000. *
  16001. * @method onRemove(map: Map)
  16002. * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).
  16003. */
  16004. /* @namespace Map
  16005. * @section Methods for Layers and Controls
  16006. */
  16007. Map.include({
  16008. // @method addControl(control: Control): this
  16009. // Adds the given control to the map
  16010. addControl: function addControl(control) {
  16011. control.addTo(this);
  16012. return this;
  16013. },
  16014. // @method removeControl(control: Control): this
  16015. // Removes the given control from the map
  16016. removeControl: function removeControl(control) {
  16017. control.remove();
  16018. return this;
  16019. },
  16020. _initControlPos: function _initControlPos() {
  16021. var corners = this._controlCorners = {},
  16022. l = 'leaflet-',
  16023. container = this._controlContainer = create$1('div', l + 'control-container', this._container);
  16024. function createCorner(vSide, hSide) {
  16025. var className = l + vSide + ' ' + l + hSide;
  16026. corners[vSide + hSide] = create$1('div', className, container);
  16027. }
  16028. createCorner('top', 'left');
  16029. createCorner('top', 'right');
  16030. createCorner('bottom', 'left');
  16031. createCorner('bottom', 'right');
  16032. },
  16033. _clearControlPos: function _clearControlPos() {
  16034. for (var i in this._controlCorners) {
  16035. _remove(this._controlCorners[i]);
  16036. }
  16037. _remove(this._controlContainer);
  16038. delete this._controlCorners;
  16039. delete this._controlContainer;
  16040. }
  16041. });
  16042. /*
  16043. * @class Control.Layers
  16044. * @aka L.Control.Layers
  16045. * @inherits Control
  16046. *
  16047. * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`.
  16048. *
  16049. * @example
  16050. *
  16051. * ```js
  16052. * var baseLayers = {
  16053. * "Mapbox": mapbox,
  16054. * "OpenStreetMap": osm
  16055. * };
  16056. *
  16057. * var overlays = {
  16058. * "Marker": marker,
  16059. * "Roads": roadsLayer
  16060. * };
  16061. *
  16062. * L.control.layers(baseLayers, overlays).addTo(map);
  16063. * ```
  16064. *
  16065. * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:
  16066. *
  16067. * ```js
  16068. * {
  16069. * "<someName1>": layer1,
  16070. * "<someName2>": layer2
  16071. * }
  16072. * ```
  16073. *
  16074. * The layer names can contain HTML, which allows you to add additional styling to the items:
  16075. *
  16076. * ```js
  16077. * {"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>": myLayer}
  16078. * ```
  16079. */
  16080. var Layers = Control.extend({
  16081. // @section
  16082. // @aka Control.Layers options
  16083. options: {
  16084. // @option collapsed: Boolean = true
  16085. // If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation.
  16086. collapsed: true,
  16087. position: 'topright',
  16088. // @option autoZIndex: Boolean = true
  16089. // If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.
  16090. autoZIndex: true,
  16091. // @option hideSingleBase: Boolean = false
  16092. // If `true`, the base layers in the control will be hidden when there is only one.
  16093. hideSingleBase: false,
  16094. // @option sortLayers: Boolean = false
  16095. // Whether to sort the layers. When `false`, layers will keep the order
  16096. // in which they were added to the control.
  16097. sortLayers: false,
  16098. // @option sortFunction: Function = *
  16099. // A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
  16100. // that will be used for sorting the layers, when `sortLayers` is `true`.
  16101. // The function receives both the `L.Layer` instances and their names, as in
  16102. // `sortFunction(layerA, layerB, nameA, nameB)`.
  16103. // By default, it sorts layers alphabetically by their name.
  16104. sortFunction: function sortFunction(layerA, layerB, nameA, nameB) {
  16105. return nameA < nameB ? -1 : nameB < nameA ? 1 : 0;
  16106. }
  16107. },
  16108. initialize: function initialize(baseLayers, overlays, options) {
  16109. setOptions(this, options);
  16110. this._layerControlInputs = [];
  16111. this._layers = [];
  16112. this._lastZIndex = 0;
  16113. this._handlingClick = false;
  16114. for (var i in baseLayers) {
  16115. this._addLayer(baseLayers[i], i);
  16116. }
  16117. for (i in overlays) {
  16118. this._addLayer(overlays[i], i, true);
  16119. }
  16120. },
  16121. onAdd: function onAdd(map) {
  16122. this._initLayout();
  16123. this._update();
  16124. this._map = map;
  16125. map.on('zoomend', this._checkDisabledLayers, this);
  16126. for (var i = 0; i < this._layers.length; i++) {
  16127. this._layers[i].layer.on('add remove', this._onLayerChange, this);
  16128. }
  16129. return this._container;
  16130. },
  16131. addTo: function addTo(map) {
  16132. Control.prototype.addTo.call(this, map);
  16133. // Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.
  16134. return this._expandIfNotCollapsed();
  16135. },
  16136. onRemove: function onRemove() {
  16137. this._map.off('zoomend', this._checkDisabledLayers, this);
  16138. for (var i = 0; i < this._layers.length; i++) {
  16139. this._layers[i].layer.off('add remove', this._onLayerChange, this);
  16140. }
  16141. },
  16142. // @method addBaseLayer(layer: Layer, name: String): this
  16143. // Adds a base layer (radio button entry) with the given name to the control.
  16144. addBaseLayer: function addBaseLayer(layer, name) {
  16145. this._addLayer(layer, name);
  16146. return this._map ? this._update() : this;
  16147. },
  16148. // @method addOverlay(layer: Layer, name: String): this
  16149. // Adds an overlay (checkbox entry) with the given name to the control.
  16150. addOverlay: function addOverlay(layer, name) {
  16151. this._addLayer(layer, name, true);
  16152. return this._map ? this._update() : this;
  16153. },
  16154. // @method removeLayer(layer: Layer): this
  16155. // Remove the given layer from the control.
  16156. removeLayer: function removeLayer(layer) {
  16157. layer.off('add remove', this._onLayerChange, this);
  16158. var obj = this._getLayer(stamp(layer));
  16159. if (obj) {
  16160. this._layers.splice(this._layers.indexOf(obj), 1);
  16161. }
  16162. return this._map ? this._update() : this;
  16163. },
  16164. // @method expand(): this
  16165. // Expand the control container if collapsed.
  16166. expand: function expand() {
  16167. addClass(this._container, 'leaflet-control-layers-expanded');
  16168. this._section.style.height = null;
  16169. var acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);
  16170. if (acceptableHeight < this._section.clientHeight) {
  16171. addClass(this._section, 'leaflet-control-layers-scrollbar');
  16172. this._section.style.height = acceptableHeight + 'px';
  16173. } else {
  16174. removeClass(this._section, 'leaflet-control-layers-scrollbar');
  16175. }
  16176. this._checkDisabledLayers();
  16177. return this;
  16178. },
  16179. // @method collapse(): this
  16180. // Collapse the control container if expanded.
  16181. collapse: function collapse() {
  16182. removeClass(this._container, 'leaflet-control-layers-expanded');
  16183. return this;
  16184. },
  16185. _initLayout: function _initLayout() {
  16186. var className = 'leaflet-control-layers',
  16187. container = this._container = create$1('div', className),
  16188. collapsed = this.options.collapsed;
  16189. // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released
  16190. container.setAttribute('aria-haspopup', true);
  16191. disableClickPropagation(container);
  16192. disableScrollPropagation(container);
  16193. var section = this._section = create$1('section', className + '-list');
  16194. if (collapsed) {
  16195. this._map.on('click', this.collapse, this);
  16196. on(container, {
  16197. mouseenter: this._expandSafely,
  16198. mouseleave: this.collapse
  16199. }, this);
  16200. }
  16201. var link = this._layersLink = create$1('a', className + '-toggle', container);
  16202. link.href = '#';
  16203. link.title = 'Layers';
  16204. link.setAttribute('role', 'button');
  16205. on(link, {
  16206. keydown: function keydown(e) {
  16207. if (e.keyCode === 13) {
  16208. this._expandSafely();
  16209. }
  16210. },
  16211. // Certain screen readers intercept the key event and instead send a click event
  16212. click: function click(e) {
  16213. preventDefault(e);
  16214. this._expandSafely();
  16215. }
  16216. }, this);
  16217. if (!collapsed) {
  16218. this.expand();
  16219. }
  16220. this._baseLayersList = create$1('div', className + '-base', section);
  16221. this._separator = create$1('div', className + '-separator', section);
  16222. this._overlaysList = create$1('div', className + '-overlays', section);
  16223. container.appendChild(section);
  16224. },
  16225. _getLayer: function _getLayer(id) {
  16226. for (var i = 0; i < this._layers.length; i++) {
  16227. if (this._layers[i] && stamp(this._layers[i].layer) === id) {
  16228. return this._layers[i];
  16229. }
  16230. }
  16231. },
  16232. _addLayer: function _addLayer(layer, name, overlay) {
  16233. if (this._map) {
  16234. layer.on('add remove', this._onLayerChange, this);
  16235. }
  16236. this._layers.push({
  16237. layer: layer,
  16238. name: name,
  16239. overlay: overlay
  16240. });
  16241. if (this.options.sortLayers) {
  16242. this._layers.sort(bind(function (a, b) {
  16243. return this.options.sortFunction(a.layer, b.layer, a.name, b.name);
  16244. }, this));
  16245. }
  16246. if (this.options.autoZIndex && layer.setZIndex) {
  16247. this._lastZIndex++;
  16248. layer.setZIndex(this._lastZIndex);
  16249. }
  16250. this._expandIfNotCollapsed();
  16251. },
  16252. _update: function _update() {
  16253. if (!this._container) {
  16254. return this;
  16255. }
  16256. empty(this._baseLayersList);
  16257. empty(this._overlaysList);
  16258. this._layerControlInputs = [];
  16259. var baseLayersPresent,
  16260. overlaysPresent,
  16261. i,
  16262. obj,
  16263. baseLayersCount = 0;
  16264. for (i = 0; i < this._layers.length; i++) {
  16265. obj = this._layers[i];
  16266. this._addItem(obj);
  16267. overlaysPresent = overlaysPresent || obj.overlay;
  16268. baseLayersPresent = baseLayersPresent || !obj.overlay;
  16269. baseLayersCount += !obj.overlay ? 1 : 0;
  16270. }
  16271. // Hide base layers section if there's only one layer.
  16272. if (this.options.hideSingleBase) {
  16273. baseLayersPresent = baseLayersPresent && baseLayersCount > 1;
  16274. this._baseLayersList.style.display = baseLayersPresent ? '' : 'none';
  16275. }
  16276. this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';
  16277. return this;
  16278. },
  16279. _onLayerChange: function _onLayerChange(e) {
  16280. if (!this._handlingClick) {
  16281. this._update();
  16282. }
  16283. var obj = this._getLayer(stamp(e.target));
  16284. // @namespace Map
  16285. // @section Layer events
  16286. // @event baselayerchange: LayersControlEvent
  16287. // Fired when the base layer is changed through the [layers control](#control-layers).
  16288. // @event overlayadd: LayersControlEvent
  16289. // Fired when an overlay is selected through the [layers control](#control-layers).
  16290. // @event overlayremove: LayersControlEvent
  16291. // Fired when an overlay is deselected through the [layers control](#control-layers).
  16292. // @namespace Control.Layers
  16293. var type = obj.overlay ? e.type === 'add' ? 'overlayadd' : 'overlayremove' : e.type === 'add' ? 'baselayerchange' : null;
  16294. if (type) {
  16295. this._map.fire(type, obj);
  16296. }
  16297. },
  16298. // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079)
  16299. _createRadioElement: function _createRadioElement(name, checked) {
  16300. var radioHtml = '<input type="radio" class="leaflet-control-layers-selector" name="' + name + '"' + (checked ? ' checked="checked"' : '') + '/>';
  16301. var radioFragment = document.createElement('div');
  16302. radioFragment.innerHTML = radioHtml;
  16303. return radioFragment.firstChild;
  16304. },
  16305. _addItem: function _addItem(obj) {
  16306. var label = document.createElement('label'),
  16307. checked = this._map.hasLayer(obj.layer),
  16308. input;
  16309. if (obj.overlay) {
  16310. input = document.createElement('input');
  16311. input.type = 'checkbox';
  16312. input.className = 'leaflet-control-layers-selector';
  16313. input.defaultChecked = checked;
  16314. } else {
  16315. input = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked);
  16316. }
  16317. this._layerControlInputs.push(input);
  16318. input.layerId = stamp(obj.layer);
  16319. on(input, 'click', this._onInputClick, this);
  16320. var name = document.createElement('span');
  16321. name.innerHTML = ' ' + obj.name;
  16322. // Helps from preventing layer control flicker when checkboxes are disabled
  16323. // https://github.com/Leaflet/Leaflet/issues/2771
  16324. var holder = document.createElement('span');
  16325. label.appendChild(holder);
  16326. holder.appendChild(input);
  16327. holder.appendChild(name);
  16328. var container = obj.overlay ? this._overlaysList : this._baseLayersList;
  16329. container.appendChild(label);
  16330. this._checkDisabledLayers();
  16331. return label;
  16332. },
  16333. _onInputClick: function _onInputClick() {
  16334. var inputs = this._layerControlInputs,
  16335. input,
  16336. layer;
  16337. var addedLayers = [],
  16338. removedLayers = [];
  16339. this._handlingClick = true;
  16340. for (var i = inputs.length - 1; i >= 0; i--) {
  16341. input = inputs[i];
  16342. layer = this._getLayer(input.layerId).layer;
  16343. if (input.checked) {
  16344. addedLayers.push(layer);
  16345. } else if (!input.checked) {
  16346. removedLayers.push(layer);
  16347. }
  16348. }
  16349. // Bugfix issue 2318: Should remove all old layers before readding new ones
  16350. for (i = 0; i < removedLayers.length; i++) {
  16351. if (this._map.hasLayer(removedLayers[i])) {
  16352. this._map.removeLayer(removedLayers[i]);
  16353. }
  16354. }
  16355. for (i = 0; i < addedLayers.length; i++) {
  16356. if (!this._map.hasLayer(addedLayers[i])) {
  16357. this._map.addLayer(addedLayers[i]);
  16358. }
  16359. }
  16360. this._handlingClick = false;
  16361. this._refocusOnMap();
  16362. },
  16363. _checkDisabledLayers: function _checkDisabledLayers() {
  16364. var inputs = this._layerControlInputs,
  16365. input,
  16366. layer,
  16367. zoom = this._map.getZoom();
  16368. for (var i = inputs.length - 1; i >= 0; i--) {
  16369. input = inputs[i];
  16370. layer = this._getLayer(input.layerId).layer;
  16371. input.disabled = layer.options.minZoom !== undefined && zoom < layer.options.minZoom || layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom;
  16372. }
  16373. },
  16374. _expandIfNotCollapsed: function _expandIfNotCollapsed() {
  16375. if (this._map && !this.options.collapsed) {
  16376. this.expand();
  16377. }
  16378. return this;
  16379. },
  16380. _expandSafely: function _expandSafely() {
  16381. var section = this._section;
  16382. on(section, 'click', preventDefault);
  16383. this.expand();
  16384. setTimeout(function () {
  16385. off(section, 'click', preventDefault);
  16386. });
  16387. }
  16388. });
  16389. // @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)
  16390. // Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.
  16391. var layers = function layers(baseLayers, overlays, options) {
  16392. return new Layers(baseLayers, overlays, options);
  16393. };
  16394. /*
  16395. * @class Control.Zoom
  16396. * @aka L.Control.Zoom
  16397. * @inherits Control
  16398. *
  16399. * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.
  16400. */
  16401. var Zoom = Control.extend({
  16402. // @section
  16403. // @aka Control.Zoom options
  16404. options: {
  16405. position: 'topleft',
  16406. // @option zoomInText: String = '<span aria-hidden="true">+</span>'
  16407. // The text set on the 'zoom in' button.
  16408. zoomInText: '<span aria-hidden="true">+</span>',
  16409. // @option zoomInTitle: String = 'Zoom in'
  16410. // The title set on the 'zoom in' button.
  16411. zoomInTitle: 'Zoom in',
  16412. // @option zoomOutText: String = '<span aria-hidden="true">&#x2212;</span>'
  16413. // The text set on the 'zoom out' button.
  16414. zoomOutText: '<span aria-hidden="true">&#x2212;</span>',
  16415. // @option zoomOutTitle: String = 'Zoom out'
  16416. // The title set on the 'zoom out' button.
  16417. zoomOutTitle: 'Zoom out'
  16418. },
  16419. onAdd: function onAdd(map) {
  16420. var zoomName = 'leaflet-control-zoom',
  16421. container = create$1('div', zoomName + ' leaflet-bar'),
  16422. options = this.options;
  16423. this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, zoomName + '-in', container, this._zoomIn);
  16424. this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, zoomName + '-out', container, this._zoomOut);
  16425. this._updateDisabled();
  16426. map.on('zoomend zoomlevelschange', this._updateDisabled, this);
  16427. return container;
  16428. },
  16429. onRemove: function onRemove(map) {
  16430. map.off('zoomend zoomlevelschange', this._updateDisabled, this);
  16431. },
  16432. disable: function disable() {
  16433. this._disabled = true;
  16434. this._updateDisabled();
  16435. return this;
  16436. },
  16437. enable: function enable() {
  16438. this._disabled = false;
  16439. this._updateDisabled();
  16440. return this;
  16441. },
  16442. _zoomIn: function _zoomIn(e) {
  16443. if (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {
  16444. this._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));
  16445. }
  16446. },
  16447. _zoomOut: function _zoomOut(e) {
  16448. if (!this._disabled && this._map._zoom > this._map.getMinZoom()) {
  16449. this._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));
  16450. }
  16451. },
  16452. _createButton: function _createButton(html, title, className, container, fn) {
  16453. var link = create$1('a', className, container);
  16454. link.innerHTML = html;
  16455. link.href = '#';
  16456. link.title = title;
  16457. /*
  16458. * Will force screen readers like VoiceOver to read this as "Zoom in - button"
  16459. */
  16460. link.setAttribute('role', 'button');
  16461. link.setAttribute('aria-label', title);
  16462. disableClickPropagation(link);
  16463. on(link, 'click', stop);
  16464. on(link, 'click', fn, this);
  16465. on(link, 'click', this._refocusOnMap, this);
  16466. return link;
  16467. },
  16468. _updateDisabled: function _updateDisabled() {
  16469. var map = this._map,
  16470. className = 'leaflet-disabled';
  16471. removeClass(this._zoomInButton, className);
  16472. removeClass(this._zoomOutButton, className);
  16473. this._zoomInButton.setAttribute('aria-disabled', 'false');
  16474. this._zoomOutButton.setAttribute('aria-disabled', 'false');
  16475. if (this._disabled || map._zoom === map.getMinZoom()) {
  16476. addClass(this._zoomOutButton, className);
  16477. this._zoomOutButton.setAttribute('aria-disabled', 'true');
  16478. }
  16479. if (this._disabled || map._zoom === map.getMaxZoom()) {
  16480. addClass(this._zoomInButton, className);
  16481. this._zoomInButton.setAttribute('aria-disabled', 'true');
  16482. }
  16483. }
  16484. });
  16485. // @namespace Map
  16486. // @section Control options
  16487. // @option zoomControl: Boolean = true
  16488. // Whether a [zoom control](#control-zoom) is added to the map by default.
  16489. Map.mergeOptions({
  16490. zoomControl: true
  16491. });
  16492. Map.addInitHook(function () {
  16493. if (this.options.zoomControl) {
  16494. // @section Controls
  16495. // @property zoomControl: Control.Zoom
  16496. // The default zoom control (only available if the
  16497. // [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).
  16498. this.zoomControl = new Zoom();
  16499. this.addControl(this.zoomControl);
  16500. }
  16501. });
  16502. // @namespace Control.Zoom
  16503. // @factory L.control.zoom(options: Control.Zoom options)
  16504. // Creates a zoom control
  16505. var zoom = function zoom(options) {
  16506. return new Zoom(options);
  16507. };
  16508. /*
  16509. * @class Control.Scale
  16510. * @aka L.Control.Scale
  16511. * @inherits Control
  16512. *
  16513. * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.
  16514. *
  16515. * @example
  16516. *
  16517. * ```js
  16518. * L.control.scale().addTo(map);
  16519. * ```
  16520. */
  16521. var Scale = Control.extend({
  16522. // @section
  16523. // @aka Control.Scale options
  16524. options: {
  16525. position: 'bottomleft',
  16526. // @option maxWidth: Number = 100
  16527. // Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).
  16528. maxWidth: 100,
  16529. // @option metric: Boolean = True
  16530. // Whether to show the metric scale line (m/km).
  16531. metric: true,
  16532. // @option imperial: Boolean = True
  16533. // Whether to show the imperial scale line (mi/ft).
  16534. imperial: true
  16535. // @option updateWhenIdle: Boolean = false
  16536. // If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).
  16537. },
  16538. onAdd: function onAdd(map) {
  16539. var className = 'leaflet-control-scale',
  16540. container = create$1('div', className),
  16541. options = this.options;
  16542. this._addScales(options, className + '-line', container);
  16543. map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);
  16544. map.whenReady(this._update, this);
  16545. return container;
  16546. },
  16547. onRemove: function onRemove(map) {
  16548. map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);
  16549. },
  16550. _addScales: function _addScales(options, className, container) {
  16551. if (options.metric) {
  16552. this._mScale = create$1('div', className, container);
  16553. }
  16554. if (options.imperial) {
  16555. this._iScale = create$1('div', className, container);
  16556. }
  16557. },
  16558. _update: function _update() {
  16559. var map = this._map,
  16560. y = map.getSize().y / 2;
  16561. var maxMeters = map.distance(map.containerPointToLatLng([0, y]), map.containerPointToLatLng([this.options.maxWidth, y]));
  16562. this._updateScales(maxMeters);
  16563. },
  16564. _updateScales: function _updateScales(maxMeters) {
  16565. if (this.options.metric && maxMeters) {
  16566. this._updateMetric(maxMeters);
  16567. }
  16568. if (this.options.imperial && maxMeters) {
  16569. this._updateImperial(maxMeters);
  16570. }
  16571. },
  16572. _updateMetric: function _updateMetric(maxMeters) {
  16573. var meters = this._getRoundNum(maxMeters),
  16574. label = meters < 1000 ? meters + ' m' : meters / 1000 + ' km';
  16575. this._updateScale(this._mScale, label, meters / maxMeters);
  16576. },
  16577. _updateImperial: function _updateImperial(maxMeters) {
  16578. var maxFeet = maxMeters * 3.2808399,
  16579. maxMiles,
  16580. miles,
  16581. feet;
  16582. if (maxFeet > 5280) {
  16583. maxMiles = maxFeet / 5280;
  16584. miles = this._getRoundNum(maxMiles);
  16585. this._updateScale(this._iScale, miles + ' mi', miles / maxMiles);
  16586. } else {
  16587. feet = this._getRoundNum(maxFeet);
  16588. this._updateScale(this._iScale, feet + ' ft', feet / maxFeet);
  16589. }
  16590. },
  16591. _updateScale: function _updateScale(scale, text, ratio) {
  16592. scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';
  16593. scale.innerHTML = text;
  16594. },
  16595. _getRoundNum: function _getRoundNum(num) {
  16596. var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),
  16597. d = num / pow10;
  16598. d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1;
  16599. return pow10 * d;
  16600. }
  16601. });
  16602. // @factory L.control.scale(options?: Control.Scale options)
  16603. // Creates an scale control with the given options.
  16604. var scale = function scale(options) {
  16605. return new Scale(options);
  16606. };
  16607. var ukrainianFlag = '<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8" class="leaflet-attribution-flag"><path fill="#4C7BE1" d="M0 0h12v4H0z"/><path fill="#FFD500" d="M0 4h12v3H0z"/><path fill="#E0BC00" d="M0 7h12v1H0z"/></svg>';
  16608. /*
  16609. * @class Control.Attribution
  16610. * @aka L.Control.Attribution
  16611. * @inherits Control
  16612. *
  16613. * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.
  16614. */
  16615. var Attribution = Control.extend({
  16616. // @section
  16617. // @aka Control.Attribution options
  16618. options: {
  16619. position: 'bottomright',
  16620. // @option prefix: String|false = 'Leaflet'
  16621. // The HTML text shown before the attributions. Pass `false` to disable.
  16622. prefix: '<a href="https://leafletjs.com" title="A JavaScript library for interactive maps">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>'
  16623. },
  16624. initialize: function initialize(options) {
  16625. setOptions(this, options);
  16626. this._attributions = {};
  16627. },
  16628. onAdd: function onAdd(map) {
  16629. map.attributionControl = this;
  16630. this._container = create$1('div', 'leaflet-control-attribution');
  16631. disableClickPropagation(this._container);
  16632. // TODO ugly, refactor
  16633. for (var i in map._layers) {
  16634. if (map._layers[i].getAttribution) {
  16635. this.addAttribution(map._layers[i].getAttribution());
  16636. }
  16637. }
  16638. this._update();
  16639. map.on('layeradd', this._addAttribution, this);
  16640. return this._container;
  16641. },
  16642. onRemove: function onRemove(map) {
  16643. map.off('layeradd', this._addAttribution, this);
  16644. },
  16645. _addAttribution: function _addAttribution(ev) {
  16646. if (ev.layer.getAttribution) {
  16647. this.addAttribution(ev.layer.getAttribution());
  16648. ev.layer.once('remove', function () {
  16649. this.removeAttribution(ev.layer.getAttribution());
  16650. }, this);
  16651. }
  16652. },
  16653. // @method setPrefix(prefix: String|false): this
  16654. // The HTML text shown before the attributions. Pass `false` to disable.
  16655. setPrefix: function setPrefix(prefix) {
  16656. this.options.prefix = prefix;
  16657. this._update();
  16658. return this;
  16659. },
  16660. // @method addAttribution(text: String): this
  16661. // Adds an attribution text (e.g. `'&copy; OpenStreetMap contributors'`).
  16662. addAttribution: function addAttribution(text) {
  16663. if (!text) {
  16664. return this;
  16665. }
  16666. if (!this._attributions[text]) {
  16667. this._attributions[text] = 0;
  16668. }
  16669. this._attributions[text]++;
  16670. this._update();
  16671. return this;
  16672. },
  16673. // @method removeAttribution(text: String): this
  16674. // Removes an attribution text.
  16675. removeAttribution: function removeAttribution(text) {
  16676. if (!text) {
  16677. return this;
  16678. }
  16679. if (this._attributions[text]) {
  16680. this._attributions[text]--;
  16681. this._update();
  16682. }
  16683. return this;
  16684. },
  16685. _update: function _update() {
  16686. if (!this._map) {
  16687. return;
  16688. }
  16689. var attribs = [];
  16690. for (var i in this._attributions) {
  16691. if (this._attributions[i]) {
  16692. attribs.push(i);
  16693. }
  16694. }
  16695. var prefixAndAttribs = [];
  16696. if (this.options.prefix) {
  16697. prefixAndAttribs.push(this.options.prefix);
  16698. }
  16699. if (attribs.length) {
  16700. prefixAndAttribs.push(attribs.join(', '));
  16701. }
  16702. this._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden="true">|</span> ');
  16703. }
  16704. });
  16705. // @namespace Map
  16706. // @section Control options
  16707. // @option attributionControl: Boolean = true
  16708. // Whether a [attribution control](#control-attribution) is added to the map by default.
  16709. Map.mergeOptions({
  16710. attributionControl: true
  16711. });
  16712. Map.addInitHook(function () {
  16713. if (this.options.attributionControl) {
  16714. new Attribution().addTo(this);
  16715. }
  16716. });
  16717. // @namespace Control.Attribution
  16718. // @factory L.control.attribution(options: Control.Attribution options)
  16719. // Creates an attribution control.
  16720. var attribution = function attribution(options) {
  16721. return new Attribution(options);
  16722. };
  16723. Control.Layers = Layers;
  16724. Control.Zoom = Zoom;
  16725. Control.Scale = Scale;
  16726. Control.Attribution = Attribution;
  16727. control.layers = layers;
  16728. control.zoom = zoom;
  16729. control.scale = scale;
  16730. control.attribution = attribution;
  16731. /*
  16732. L.Handler is a base class for handler classes that are used internally to inject
  16733. interaction features like dragging to classes like Map and Marker.
  16734. */
  16735. // @class Handler
  16736. // @aka L.Handler
  16737. // Abstract class for map interaction handlers
  16738. var Handler = Class.extend({
  16739. initialize: function initialize(map) {
  16740. this._map = map;
  16741. },
  16742. // @method enable(): this
  16743. // Enables the handler
  16744. enable: function enable() {
  16745. if (this._enabled) {
  16746. return this;
  16747. }
  16748. this._enabled = true;
  16749. this.addHooks();
  16750. return this;
  16751. },
  16752. // @method disable(): this
  16753. // Disables the handler
  16754. disable: function disable() {
  16755. if (!this._enabled) {
  16756. return this;
  16757. }
  16758. this._enabled = false;
  16759. this.removeHooks();
  16760. return this;
  16761. },
  16762. // @method enabled(): Boolean
  16763. // Returns `true` if the handler is enabled
  16764. enabled: function enabled() {
  16765. return !!this._enabled;
  16766. }
  16767. // @section Extension methods
  16768. // Classes inheriting from `Handler` must implement the two following methods:
  16769. // @method addHooks()
  16770. // Called when the handler is enabled, should add event hooks.
  16771. // @method removeHooks()
  16772. // Called when the handler is disabled, should remove the event hooks added previously.
  16773. });
  16774. // @section There is static function which can be called without instantiating L.Handler:
  16775. // @function addTo(map: Map, name: String): this
  16776. // Adds a new Handler to the given map with the given name.
  16777. Handler.addTo = function (map, name) {
  16778. map.addHandler(name, this);
  16779. return this;
  16780. };
  16781. var Mixin = {
  16782. Events: Events
  16783. };
  16784. /*
  16785. * @class Draggable
  16786. * @aka L.Draggable
  16787. * @inherits Evented
  16788. *
  16789. * A class for making DOM elements draggable (including touch support).
  16790. * Used internally for map and marker dragging. Only works for elements
  16791. * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).
  16792. *
  16793. * @example
  16794. * ```js
  16795. * var draggable = new L.Draggable(elementToDrag);
  16796. * draggable.enable();
  16797. * ```
  16798. */
  16799. var START = Browser.touch ? 'touchstart mousedown' : 'mousedown';
  16800. var Draggable = Evented.extend({
  16801. options: {
  16802. // @section
  16803. // @aka Draggable options
  16804. // @option clickTolerance: Number = 3
  16805. // The max number of pixels a user can shift the mouse pointer during a click
  16806. // for it to be considered a valid click (as opposed to a mouse drag).
  16807. clickTolerance: 3
  16808. },
  16809. // @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)
  16810. // Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).
  16811. initialize: function initialize(element, dragStartTarget, preventOutline, options) {
  16812. setOptions(this, options);
  16813. this._element = element;
  16814. this._dragStartTarget = dragStartTarget || element;
  16815. this._preventOutline = preventOutline;
  16816. },
  16817. // @method enable()
  16818. // Enables the dragging ability
  16819. enable: function enable() {
  16820. if (this._enabled) {
  16821. return;
  16822. }
  16823. on(this._dragStartTarget, START, this._onDown, this);
  16824. this._enabled = true;
  16825. },
  16826. // @method disable()
  16827. // Disables the dragging ability
  16828. disable: function disable() {
  16829. if (!this._enabled) {
  16830. return;
  16831. }
  16832. // If we're currently dragging this draggable,
  16833. // disabling it counts as first ending the drag.
  16834. if (Draggable._dragging === this) {
  16835. this.finishDrag(true);
  16836. }
  16837. off(this._dragStartTarget, START, this._onDown, this);
  16838. this._enabled = false;
  16839. this._moved = false;
  16840. },
  16841. _onDown: function _onDown(e) {
  16842. // Ignore the event if disabled; this happens in IE11
  16843. // under some circumstances, see #3666.
  16844. if (!this._enabled) {
  16845. return;
  16846. }
  16847. this._moved = false;
  16848. if (hasClass(this._element, 'leaflet-zoom-anim')) {
  16849. return;
  16850. }
  16851. if (e.touches && e.touches.length !== 1) {
  16852. // Finish dragging to avoid conflict with touchZoom
  16853. if (Draggable._dragging === this) {
  16854. this.finishDrag();
  16855. }
  16856. return;
  16857. }
  16858. if (Draggable._dragging || e.shiftKey || e.which !== 1 && e.button !== 1 && !e.touches) {
  16859. return;
  16860. }
  16861. Draggable._dragging = this; // Prevent dragging multiple objects at once.
  16862. if (this._preventOutline) {
  16863. preventOutline(this._element);
  16864. }
  16865. disableImageDrag();
  16866. disableTextSelection();
  16867. if (this._moving) {
  16868. return;
  16869. }
  16870. // @event down: Event
  16871. // Fired when a drag is about to start.
  16872. this.fire('down');
  16873. var first = e.touches ? e.touches[0] : e,
  16874. sizedParent = getSizedParentNode(this._element);
  16875. this._startPoint = new Point(first.clientX, first.clientY);
  16876. this._startPos = getPosition(this._element);
  16877. // Cache the scale, so that we can continuously compensate for it during drag (_onMove).
  16878. this._parentScale = getScale(sizedParent);
  16879. var mouseevent = e.type === 'mousedown';
  16880. on(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this);
  16881. on(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this);
  16882. },
  16883. _onMove: function _onMove(e) {
  16884. // Ignore the event if disabled; this happens in IE11
  16885. // under some circumstances, see #3666.
  16886. if (!this._enabled) {
  16887. return;
  16888. }
  16889. if (e.touches && e.touches.length > 1) {
  16890. this._moved = true;
  16891. return;
  16892. }
  16893. var first = e.touches && e.touches.length === 1 ? e.touches[0] : e,
  16894. offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);
  16895. if (!offset.x && !offset.y) {
  16896. return;
  16897. }
  16898. if (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) {
  16899. return;
  16900. }
  16901. // We assume that the parent container's position, border and scale do not change for the duration of the drag.
  16902. // Therefore there is no need to account for the position and border (they are eliminated by the subtraction)
  16903. // and we can use the cached value for the scale.
  16904. offset.x /= this._parentScale.x;
  16905. offset.y /= this._parentScale.y;
  16906. preventDefault(e);
  16907. if (!this._moved) {
  16908. // @event dragstart: Event
  16909. // Fired when a drag starts
  16910. this.fire('dragstart');
  16911. this._moved = true;
  16912. addClass(document.body, 'leaflet-dragging');
  16913. this._lastTarget = e.target || e.srcElement;
  16914. // IE and Edge do not give the <use> element, so fetch it
  16915. // if necessary
  16916. if (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {
  16917. this._lastTarget = this._lastTarget.correspondingUseElement;
  16918. }
  16919. addClass(this._lastTarget, 'leaflet-drag-target');
  16920. }
  16921. this._newPos = this._startPos.add(offset);
  16922. this._moving = true;
  16923. this._lastEvent = e;
  16924. this._updatePosition();
  16925. },
  16926. _updatePosition: function _updatePosition() {
  16927. var e = {
  16928. originalEvent: this._lastEvent
  16929. };
  16930. // @event predrag: Event
  16931. // Fired continuously during dragging *before* each corresponding
  16932. // update of the element's position.
  16933. this.fire('predrag', e);
  16934. setPosition(this._element, this._newPos);
  16935. // @event drag: Event
  16936. // Fired continuously during dragging.
  16937. this.fire('drag', e);
  16938. },
  16939. _onUp: function _onUp() {
  16940. // Ignore the event if disabled; this happens in IE11
  16941. // under some circumstances, see #3666.
  16942. if (!this._enabled) {
  16943. return;
  16944. }
  16945. this.finishDrag();
  16946. },
  16947. finishDrag: function finishDrag(noInertia) {
  16948. removeClass(document.body, 'leaflet-dragging');
  16949. if (this._lastTarget) {
  16950. removeClass(this._lastTarget, 'leaflet-drag-target');
  16951. this._lastTarget = null;
  16952. }
  16953. off(document, 'mousemove touchmove', this._onMove, this);
  16954. off(document, 'mouseup touchend touchcancel', this._onUp, this);
  16955. enableImageDrag();
  16956. enableTextSelection();
  16957. if (this._moved && this._moving) {
  16958. // @event dragend: DragEndEvent
  16959. // Fired when the drag ends.
  16960. this.fire('dragend', {
  16961. noInertia: noInertia,
  16962. distance: this._newPos.distanceTo(this._startPos)
  16963. });
  16964. }
  16965. this._moving = false;
  16966. Draggable._dragging = false;
  16967. }
  16968. });
  16969. /*
  16970. * @namespace LineUtil
  16971. *
  16972. * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.
  16973. */
  16974. // Simplify polyline with vertex reduction and Douglas-Peucker simplification.
  16975. // Improves rendering performance dramatically by lessening the number of points to draw.
  16976. // @function simplify(points: Point[], tolerance: Number): Point[]
  16977. // Dramatically reduces the number of points in a polyline while retaining
  16978. // its shape and returns a new array of simplified points, using the
  16979. // [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm).
  16980. // Used for a huge performance boost when processing/displaying Leaflet polylines for
  16981. // each zoom level and also reducing visual noise. tolerance affects the amount of
  16982. // simplification (lesser value means higher quality but slower and with more points).
  16983. // Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/).
  16984. function simplify(points, tolerance) {
  16985. if (!tolerance || !points.length) {
  16986. return points.slice();
  16987. }
  16988. var sqTolerance = tolerance * tolerance;
  16989. // stage 1: vertex reduction
  16990. points = _reducePoints(points, sqTolerance);
  16991. // stage 2: Douglas-Peucker simplification
  16992. points = _simplifyDP(points, sqTolerance);
  16993. return points;
  16994. }
  16995. // @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number
  16996. // Returns the distance between point `p` and segment `p1` to `p2`.
  16997. function pointToSegmentDistance(p, p1, p2) {
  16998. return Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));
  16999. }
  17000. // @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number
  17001. // Returns the closest point from a point `p` on a segment `p1` to `p2`.
  17002. function closestPointOnSegment(p, p1, p2) {
  17003. return _sqClosestPointOnSegment(p, p1, p2);
  17004. }
  17005. // Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm
  17006. function _simplifyDP(points, sqTolerance) {
  17007. var len = points.length,
  17008. ArrayConstructor = (typeof Uint8Array === "undefined" ? "undefined" : _typeof(Uint8Array)) !== undefined + '' ? Uint8Array : Array,
  17009. markers = new ArrayConstructor(len);
  17010. markers[0] = markers[len - 1] = 1;
  17011. _simplifyDPStep(points, markers, sqTolerance, 0, len - 1);
  17012. var i,
  17013. newPoints = [];
  17014. for (i = 0; i < len; i++) {
  17015. if (markers[i]) {
  17016. newPoints.push(points[i]);
  17017. }
  17018. }
  17019. return newPoints;
  17020. }
  17021. function _simplifyDPStep(points, markers, sqTolerance, first, last) {
  17022. var maxSqDist = 0,
  17023. index,
  17024. i,
  17025. sqDist;
  17026. for (i = first + 1; i <= last - 1; i++) {
  17027. sqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);
  17028. if (sqDist > maxSqDist) {
  17029. index = i;
  17030. maxSqDist = sqDist;
  17031. }
  17032. }
  17033. if (maxSqDist > sqTolerance) {
  17034. markers[index] = 1;
  17035. _simplifyDPStep(points, markers, sqTolerance, first, index);
  17036. _simplifyDPStep(points, markers, sqTolerance, index, last);
  17037. }
  17038. }
  17039. // reduce points that are too close to each other to a single point
  17040. function _reducePoints(points, sqTolerance) {
  17041. var reducedPoints = [points[0]];
  17042. for (var i = 1, prev = 0, len = points.length; i < len; i++) {
  17043. if (_sqDist(points[i], points[prev]) > sqTolerance) {
  17044. reducedPoints.push(points[i]);
  17045. prev = i;
  17046. }
  17047. }
  17048. if (prev < len - 1) {
  17049. reducedPoints.push(points[len - 1]);
  17050. }
  17051. return reducedPoints;
  17052. }
  17053. var _lastCode;
  17054. // @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean
  17055. // Clips the segment a to b by rectangular bounds with the
  17056. // [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)
  17057. // (modifying the segment points directly!). Used by Leaflet to only show polyline
  17058. // points that are on the screen or near, increasing performance.
  17059. function clipSegment(a, b, bounds, useLastCode, round) {
  17060. var codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),
  17061. codeB = _getBitCode(b, bounds),
  17062. codeOut,
  17063. p,
  17064. newCode;
  17065. // save 2nd code to avoid calculating it on the next segment
  17066. _lastCode = codeB;
  17067. while (true) {
  17068. // if a,b is inside the clip window (trivial accept)
  17069. if (!(codeA | codeB)) {
  17070. return [a, b];
  17071. }
  17072. // if a,b is outside the clip window (trivial reject)
  17073. if (codeA & codeB) {
  17074. return false;
  17075. }
  17076. // other cases
  17077. codeOut = codeA || codeB;
  17078. p = _getEdgeIntersection(a, b, codeOut, bounds, round);
  17079. newCode = _getBitCode(p, bounds);
  17080. if (codeOut === codeA) {
  17081. a = p;
  17082. codeA = newCode;
  17083. } else {
  17084. b = p;
  17085. codeB = newCode;
  17086. }
  17087. }
  17088. }
  17089. function _getEdgeIntersection(a, b, code, bounds, round) {
  17090. var dx = b.x - a.x,
  17091. dy = b.y - a.y,
  17092. min = bounds.min,
  17093. max = bounds.max,
  17094. x,
  17095. y;
  17096. if (code & 8) {
  17097. // top
  17098. x = a.x + dx * (max.y - a.y) / dy;
  17099. y = max.y;
  17100. } else if (code & 4) {
  17101. // bottom
  17102. x = a.x + dx * (min.y - a.y) / dy;
  17103. y = min.y;
  17104. } else if (code & 2) {
  17105. // right
  17106. x = max.x;
  17107. y = a.y + dy * (max.x - a.x) / dx;
  17108. } else if (code & 1) {
  17109. // left
  17110. x = min.x;
  17111. y = a.y + dy * (min.x - a.x) / dx;
  17112. }
  17113. return new Point(x, y, round);
  17114. }
  17115. function _getBitCode(p, bounds) {
  17116. var code = 0;
  17117. if (p.x < bounds.min.x) {
  17118. // left
  17119. code |= 1;
  17120. } else if (p.x > bounds.max.x) {
  17121. // right
  17122. code |= 2;
  17123. }
  17124. if (p.y < bounds.min.y) {
  17125. // bottom
  17126. code |= 4;
  17127. } else if (p.y > bounds.max.y) {
  17128. // top
  17129. code |= 8;
  17130. }
  17131. return code;
  17132. }
  17133. // square distance (to avoid unnecessary Math.sqrt calls)
  17134. function _sqDist(p1, p2) {
  17135. var dx = p2.x - p1.x,
  17136. dy = p2.y - p1.y;
  17137. return dx * dx + dy * dy;
  17138. }
  17139. // return closest point on segment or distance to that point
  17140. function _sqClosestPointOnSegment(p, p1, p2, sqDist) {
  17141. var x = p1.x,
  17142. y = p1.y,
  17143. dx = p2.x - x,
  17144. dy = p2.y - y,
  17145. dot = dx * dx + dy * dy,
  17146. t;
  17147. if (dot > 0) {
  17148. t = ((p.x - x) * dx + (p.y - y) * dy) / dot;
  17149. if (t > 1) {
  17150. x = p2.x;
  17151. y = p2.y;
  17152. } else if (t > 0) {
  17153. x += dx * t;
  17154. y += dy * t;
  17155. }
  17156. }
  17157. dx = p.x - x;
  17158. dy = p.y - y;
  17159. return sqDist ? dx * dx + dy * dy : new Point(x, y);
  17160. }
  17161. // @function isFlat(latlngs: LatLng[]): Boolean
  17162. // Returns true if `latlngs` is a flat array, false is nested.
  17163. function isFlat(latlngs) {
  17164. return !isArray(latlngs[0]) || _typeof(latlngs[0][0]) !== 'object' && typeof latlngs[0][0] !== 'undefined';
  17165. }
  17166. function _flat(latlngs) {
  17167. __f__("warn", 'Deprecated use of _flat, please use L.LineUtil.isFlat instead.', " at node_modules/leaflet/dist/leaflet-src.js:6391");
  17168. return isFlat(latlngs);
  17169. }
  17170. /* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng
  17171. * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.
  17172. */
  17173. function polylineCenter(latlngs, crs) {
  17174. var i, halfDist, segDist, dist, p1, p2, ratio, center;
  17175. if (!latlngs || latlngs.length === 0) {
  17176. throw new Error('latlngs not passed');
  17177. }
  17178. if (!isFlat(latlngs)) {
  17179. __f__("warn", 'latlngs are not flat! Only the first ring will be used', " at node_modules/leaflet/dist/leaflet-src.js:6406");
  17180. latlngs = latlngs[0];
  17181. }
  17182. var points = [];
  17183. for (var j in latlngs) {
  17184. points.push(crs.project(toLatLng(latlngs[j])));
  17185. }
  17186. var len = points.length;
  17187. for (i = 0, halfDist = 0; i < len - 1; i++) {
  17188. halfDist += points[i].distanceTo(points[i + 1]) / 2;
  17189. }
  17190. // The line is so small in the current view that all points are on the same pixel.
  17191. if (halfDist === 0) {
  17192. center = points[0];
  17193. } else {
  17194. for (i = 0, dist = 0; i < len - 1; i++) {
  17195. p1 = points[i];
  17196. p2 = points[i + 1];
  17197. segDist = p1.distanceTo(p2);
  17198. dist += segDist;
  17199. if (dist > halfDist) {
  17200. ratio = (dist - halfDist) / segDist;
  17201. center = [p2.x - ratio * (p2.x - p1.x), p2.y - ratio * (p2.y - p1.y)];
  17202. break;
  17203. }
  17204. }
  17205. }
  17206. return crs.unproject(toPoint(center));
  17207. }
  17208. var LineUtil = {
  17209. __proto__: null,
  17210. simplify: simplify,
  17211. pointToSegmentDistance: pointToSegmentDistance,
  17212. closestPointOnSegment: closestPointOnSegment,
  17213. clipSegment: clipSegment,
  17214. _getEdgeIntersection: _getEdgeIntersection,
  17215. _getBitCode: _getBitCode,
  17216. _sqClosestPointOnSegment: _sqClosestPointOnSegment,
  17217. isFlat: isFlat,
  17218. _flat: _flat,
  17219. polylineCenter: polylineCenter
  17220. };
  17221. /*
  17222. * @namespace PolyUtil
  17223. * Various utility functions for polygon geometries.
  17224. */
  17225. /* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]
  17226. * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).
  17227. * Used by Leaflet to only show polygon points that are on the screen or near, increasing
  17228. * performance. Note that polygon points needs different algorithm for clipping
  17229. * than polyline, so there's a separate method for it.
  17230. */
  17231. function clipPolygon(points, bounds, round) {
  17232. var clippedPoints,
  17233. edges = [1, 4, 2, 8],
  17234. i,
  17235. j,
  17236. k,
  17237. a,
  17238. b,
  17239. len,
  17240. edge,
  17241. p;
  17242. for (i = 0, len = points.length; i < len; i++) {
  17243. points[i]._code = _getBitCode(points[i], bounds);
  17244. }
  17245. // for each edge (left, bottom, right, top)
  17246. for (k = 0; k < 4; k++) {
  17247. edge = edges[k];
  17248. clippedPoints = [];
  17249. for (i = 0, len = points.length, j = len - 1; i < len; j = i++) {
  17250. a = points[i];
  17251. b = points[j];
  17252. // if a is inside the clip window
  17253. if (!(a._code & edge)) {
  17254. // if b is outside the clip window (a->b goes out of screen)
  17255. if (b._code & edge) {
  17256. p = _getEdgeIntersection(b, a, edge, bounds, round);
  17257. p._code = _getBitCode(p, bounds);
  17258. clippedPoints.push(p);
  17259. }
  17260. clippedPoints.push(a);
  17261. // else if b is inside the clip window (a->b enters the screen)
  17262. } else if (!(b._code & edge)) {
  17263. p = _getEdgeIntersection(b, a, edge, bounds, round);
  17264. p._code = _getBitCode(p, bounds);
  17265. clippedPoints.push(p);
  17266. }
  17267. }
  17268. points = clippedPoints;
  17269. }
  17270. return points;
  17271. }
  17272. /* @function polygonCenter(latlngs: LatLng[] crs: CRS): LatLng
  17273. * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.
  17274. */
  17275. function polygonCenter(latlngs, crs) {
  17276. var i, j, p1, p2, f, area, x, y, center;
  17277. if (!latlngs || latlngs.length === 0) {
  17278. throw new Error('latlngs not passed');
  17279. }
  17280. if (!isFlat(latlngs)) {
  17281. __f__("warn", 'latlngs are not flat! Only the first ring will be used', " at node_modules/leaflet/dist/leaflet-src.js:6523");
  17282. latlngs = latlngs[0];
  17283. }
  17284. var points = [];
  17285. for (var k in latlngs) {
  17286. points.push(crs.project(toLatLng(latlngs[k])));
  17287. }
  17288. var len = points.length;
  17289. area = x = y = 0;
  17290. // polygon centroid algorithm;
  17291. for (i = 0, j = len - 1; i < len; j = i++) {
  17292. p1 = points[i];
  17293. p2 = points[j];
  17294. f = p1.y * p2.x - p2.y * p1.x;
  17295. x += (p1.x + p2.x) * f;
  17296. y += (p1.y + p2.y) * f;
  17297. area += f * 3;
  17298. }
  17299. if (area === 0) {
  17300. // Polygon is so small that all points are on same pixel.
  17301. center = points[0];
  17302. } else {
  17303. center = [x / area, y / area];
  17304. }
  17305. return crs.unproject(toPoint(center));
  17306. }
  17307. var PolyUtil = {
  17308. __proto__: null,
  17309. clipPolygon: clipPolygon,
  17310. polygonCenter: polygonCenter
  17311. };
  17312. /*
  17313. * @namespace Projection
  17314. * @section
  17315. * Leaflet comes with a set of already defined Projections out of the box:
  17316. *
  17317. * @projection L.Projection.LonLat
  17318. *
  17319. * Equirectangular, or Plate Carree projection — the most simple projection,
  17320. * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as
  17321. * latitude. Also suitable for flat worlds, e.g. game maps. Used by the
  17322. * `EPSG:4326` and `Simple` CRS.
  17323. */
  17324. var LonLat = {
  17325. project: function project(latlng) {
  17326. return new Point(latlng.lng, latlng.lat);
  17327. },
  17328. unproject: function unproject(point) {
  17329. return new LatLng(point.y, point.x);
  17330. },
  17331. bounds: new Bounds([-180, -90], [180, 90])
  17332. };
  17333. /*
  17334. * @namespace Projection
  17335. * @projection L.Projection.Mercator
  17336. *
  17337. * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.
  17338. */
  17339. var Mercator = {
  17340. R: 6378137,
  17341. R_MINOR: 6356752.314245179,
  17342. bounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),
  17343. project: function project(latlng) {
  17344. var d = Math.PI / 180,
  17345. r = this.R,
  17346. y = latlng.lat * d,
  17347. tmp = this.R_MINOR / r,
  17348. e = Math.sqrt(1 - tmp * tmp),
  17349. con = e * Math.sin(y);
  17350. var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);
  17351. y = -r * Math.log(Math.max(ts, 1E-10));
  17352. return new Point(latlng.lng * d * r, y);
  17353. },
  17354. unproject: function unproject(point) {
  17355. var d = 180 / Math.PI,
  17356. r = this.R,
  17357. tmp = this.R_MINOR / r,
  17358. e = Math.sqrt(1 - tmp * tmp),
  17359. ts = Math.exp(-point.y / r),
  17360. phi = Math.PI / 2 - 2 * Math.atan(ts);
  17361. for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {
  17362. con = e * Math.sin(phi);
  17363. con = Math.pow((1 - con) / (1 + con), e / 2);
  17364. dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;
  17365. phi += dphi;
  17366. }
  17367. return new LatLng(phi * d, point.x * d / r);
  17368. }
  17369. };
  17370. /*
  17371. * @class Projection
  17372. * An object with methods for projecting geographical coordinates of the world onto
  17373. * a flat surface (and back). See [Map projection](https://en.wikipedia.org/wiki/Map_projection).
  17374. * @property bounds: Bounds
  17375. * The bounds (specified in CRS units) where the projection is valid
  17376. * @method project(latlng: LatLng): Point
  17377. * Projects geographical coordinates into a 2D point.
  17378. * Only accepts actual `L.LatLng` instances, not arrays.
  17379. * @method unproject(point: Point): LatLng
  17380. * The inverse of `project`. Projects a 2D point into a geographical location.
  17381. * Only accepts actual `L.Point` instances, not arrays.
  17382. * Note that the projection instances do not inherit from Leaflet's `Class` object,
  17383. * and can't be instantiated. Also, new classes can't inherit from them,
  17384. * and methods can't be added to them with the `include` function.
  17385. */
  17386. var index = {
  17387. __proto__: null,
  17388. LonLat: LonLat,
  17389. Mercator: Mercator,
  17390. SphericalMercator: SphericalMercator
  17391. };
  17392. /*
  17393. * @namespace CRS
  17394. * @crs L.CRS.EPSG3395
  17395. *
  17396. * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.
  17397. */
  17398. var EPSG3395 = extend({}, Earth, {
  17399. code: 'EPSG:3395',
  17400. projection: Mercator,
  17401. transformation: function () {
  17402. var scale = 0.5 / (Math.PI * Mercator.R);
  17403. return toTransformation(scale, 0.5, -scale, 0.5);
  17404. }()
  17405. });
  17406. /*
  17407. * @namespace CRS
  17408. * @crs L.CRS.EPSG4326
  17409. *
  17410. * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.
  17411. *
  17412. * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),
  17413. * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer`
  17414. * with this CRS, ensure that there are two 256x256 pixel tiles covering the
  17415. * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),
  17416. * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.
  17417. */
  17418. var EPSG4326 = extend({}, Earth, {
  17419. code: 'EPSG:4326',
  17420. projection: LonLat,
  17421. transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)
  17422. });
  17423. /*
  17424. * @namespace CRS
  17425. * @crs L.CRS.Simple
  17426. *
  17427. * A simple CRS that maps longitude and latitude into `x` and `y` directly.
  17428. * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`
  17429. * axis should still be inverted (going from bottom to top). `distance()` returns
  17430. * simple euclidean distance.
  17431. */
  17432. var Simple = extend({}, CRS, {
  17433. projection: LonLat,
  17434. transformation: toTransformation(1, 0, -1, 0),
  17435. scale: function scale(zoom) {
  17436. return Math.pow(2, zoom);
  17437. },
  17438. zoom: function zoom(scale) {
  17439. return Math.log(scale) / Math.LN2;
  17440. },
  17441. distance: function distance(latlng1, latlng2) {
  17442. var dx = latlng2.lng - latlng1.lng,
  17443. dy = latlng2.lat - latlng1.lat;
  17444. return Math.sqrt(dx * dx + dy * dy);
  17445. },
  17446. infinite: true
  17447. });
  17448. CRS.Earth = Earth;
  17449. CRS.EPSG3395 = EPSG3395;
  17450. CRS.EPSG3857 = EPSG3857;
  17451. CRS.EPSG900913 = EPSG900913;
  17452. CRS.EPSG4326 = EPSG4326;
  17453. CRS.Simple = Simple;
  17454. /*
  17455. * @class Layer
  17456. * @inherits Evented
  17457. * @aka L.Layer
  17458. * @aka ILayer
  17459. *
  17460. * A set of methods from the Layer base class that all Leaflet layers use.
  17461. * Inherits all methods, options and events from `L.Evented`.
  17462. *
  17463. * @example
  17464. *
  17465. * ```js
  17466. * var layer = L.marker(latlng).addTo(map);
  17467. * layer.addTo(map);
  17468. * layer.remove();
  17469. * ```
  17470. *
  17471. * @event add: Event
  17472. * Fired after the layer is added to a map
  17473. *
  17474. * @event remove: Event
  17475. * Fired after the layer is removed from a map
  17476. */
  17477. var Layer = Evented.extend({
  17478. // Classes extending `L.Layer` will inherit the following options:
  17479. options: {
  17480. // @option pane: String = 'overlayPane'
  17481. // By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.
  17482. pane: 'overlayPane',
  17483. // @option attribution: String = null
  17484. // String to be shown in the attribution control, e.g. "© OpenStreetMap contributors". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.
  17485. attribution: null,
  17486. bubblingMouseEvents: true
  17487. },
  17488. /* @section
  17489. * Classes extending `L.Layer` will inherit the following methods:
  17490. *
  17491. * @method addTo(map: Map|LayerGroup): this
  17492. * Adds the layer to the given map or layer group.
  17493. */
  17494. addTo: function addTo(map) {
  17495. map.addLayer(this);
  17496. return this;
  17497. },
  17498. // @method remove: this
  17499. // Removes the layer from the map it is currently active on.
  17500. remove: function remove() {
  17501. return this.removeFrom(this._map || this._mapToAdd);
  17502. },
  17503. // @method removeFrom(map: Map): this
  17504. // Removes the layer from the given map
  17505. //
  17506. // @alternative
  17507. // @method removeFrom(group: LayerGroup): this
  17508. // Removes the layer from the given `LayerGroup`
  17509. removeFrom: function removeFrom(obj) {
  17510. if (obj) {
  17511. obj.removeLayer(this);
  17512. }
  17513. return this;
  17514. },
  17515. // @method getPane(name? : String): HTMLElement
  17516. // Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.
  17517. getPane: function getPane(name) {
  17518. return this._map.getPane(name ? this.options[name] || name : this.options.pane);
  17519. },
  17520. addInteractiveTarget: function addInteractiveTarget(targetEl) {
  17521. this._map._targets[stamp(targetEl)] = this;
  17522. return this;
  17523. },
  17524. removeInteractiveTarget: function removeInteractiveTarget(targetEl) {
  17525. delete this._map._targets[stamp(targetEl)];
  17526. return this;
  17527. },
  17528. // @method getAttribution: String
  17529. // Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).
  17530. getAttribution: function getAttribution() {
  17531. return this.options.attribution;
  17532. },
  17533. _layerAdd: function _layerAdd(e) {
  17534. var map = e.target;
  17535. // check in case layer gets added and then removed before the map is ready
  17536. if (!map.hasLayer(this)) {
  17537. return;
  17538. }
  17539. this._map = map;
  17540. this._zoomAnimated = map._zoomAnimated;
  17541. if (this.getEvents) {
  17542. var events = this.getEvents();
  17543. map.on(events, this);
  17544. this.once('remove', function () {
  17545. map.off(events, this);
  17546. }, this);
  17547. }
  17548. this.onAdd(map);
  17549. this.fire('add');
  17550. map.fire('layeradd', {
  17551. layer: this
  17552. });
  17553. }
  17554. });
  17555. /* @section Extension methods
  17556. * @uninheritable
  17557. *
  17558. * Every layer should extend from `L.Layer` and (re-)implement the following methods.
  17559. *
  17560. * @method onAdd(map: Map): this
  17561. * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).
  17562. *
  17563. * @method onRemove(map: Map): this
  17564. * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).
  17565. *
  17566. * @method getEvents(): Object
  17567. * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.
  17568. *
  17569. * @method getAttribution(): String
  17570. * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.
  17571. *
  17572. * @method beforeAdd(map: Map): this
  17573. * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.
  17574. */
  17575. /* @namespace Map
  17576. * @section Layer events
  17577. *
  17578. * @event layeradd: LayerEvent
  17579. * Fired when a new layer is added to the map.
  17580. *
  17581. * @event layerremove: LayerEvent
  17582. * Fired when some layer is removed from the map
  17583. *
  17584. * @section Methods for Layers and Controls
  17585. */
  17586. Map.include({
  17587. // @method addLayer(layer: Layer): this
  17588. // Adds the given layer to the map
  17589. addLayer: function addLayer(layer) {
  17590. if (!layer._layerAdd) {
  17591. throw new Error('The provided object is not a Layer.');
  17592. }
  17593. var id = stamp(layer);
  17594. if (this._layers[id]) {
  17595. return this;
  17596. }
  17597. this._layers[id] = layer;
  17598. layer._mapToAdd = this;
  17599. if (layer.beforeAdd) {
  17600. layer.beforeAdd(this);
  17601. }
  17602. this.whenReady(layer._layerAdd, layer);
  17603. return this;
  17604. },
  17605. // @method removeLayer(layer: Layer): this
  17606. // Removes the given layer from the map.
  17607. removeLayer: function removeLayer(layer) {
  17608. var id = stamp(layer);
  17609. if (!this._layers[id]) {
  17610. return this;
  17611. }
  17612. if (this._loaded) {
  17613. layer.onRemove(this);
  17614. }
  17615. delete this._layers[id];
  17616. if (this._loaded) {
  17617. this.fire('layerremove', {
  17618. layer: layer
  17619. });
  17620. layer.fire('remove');
  17621. }
  17622. layer._map = layer._mapToAdd = null;
  17623. return this;
  17624. },
  17625. // @method hasLayer(layer: Layer): Boolean
  17626. // Returns `true` if the given layer is currently added to the map
  17627. hasLayer: function hasLayer(layer) {
  17628. return stamp(layer) in this._layers;
  17629. },
  17630. /* @method eachLayer(fn: Function, context?: Object): this
  17631. * Iterates over the layers of the map, optionally specifying context of the iterator function.
  17632. * ```
  17633. * map.eachLayer(function(layer){
  17634. * layer.bindPopup('Hello');
  17635. * });
  17636. * ```
  17637. */
  17638. eachLayer: function eachLayer(method, context) {
  17639. for (var i in this._layers) {
  17640. method.call(context, this._layers[i]);
  17641. }
  17642. return this;
  17643. },
  17644. _addLayers: function _addLayers(layers) {
  17645. layers = layers ? isArray(layers) ? layers : [layers] : [];
  17646. for (var i = 0, len = layers.length; i < len; i++) {
  17647. this.addLayer(layers[i]);
  17648. }
  17649. },
  17650. _addZoomLimit: function _addZoomLimit(layer) {
  17651. if (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {
  17652. this._zoomBoundLayers[stamp(layer)] = layer;
  17653. this._updateZoomLevels();
  17654. }
  17655. },
  17656. _removeZoomLimit: function _removeZoomLimit(layer) {
  17657. var id = stamp(layer);
  17658. if (this._zoomBoundLayers[id]) {
  17659. delete this._zoomBoundLayers[id];
  17660. this._updateZoomLevels();
  17661. }
  17662. },
  17663. _updateZoomLevels: function _updateZoomLevels() {
  17664. var minZoom = Infinity,
  17665. maxZoom = -Infinity,
  17666. oldZoomSpan = this._getZoomSpan();
  17667. for (var i in this._zoomBoundLayers) {
  17668. var options = this._zoomBoundLayers[i].options;
  17669. minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);
  17670. maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);
  17671. }
  17672. this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;
  17673. this._layersMinZoom = minZoom === Infinity ? undefined : minZoom;
  17674. // @section Map state change events
  17675. // @event zoomlevelschange: Event
  17676. // Fired when the number of zoomlevels on the map is changed due
  17677. // to adding or removing a layer.
  17678. if (oldZoomSpan !== this._getZoomSpan()) {
  17679. this.fire('zoomlevelschange');
  17680. }
  17681. if (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {
  17682. this.setZoom(this._layersMaxZoom);
  17683. }
  17684. if (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {
  17685. this.setZoom(this._layersMinZoom);
  17686. }
  17687. }
  17688. });
  17689. /*
  17690. * @class LayerGroup
  17691. * @aka L.LayerGroup
  17692. * @inherits Interactive layer
  17693. *
  17694. * Used to group several layers and handle them as one. If you add it to the map,
  17695. * any layers added or removed from the group will be added/removed on the map as
  17696. * well. Extends `Layer`.
  17697. *
  17698. * @example
  17699. *
  17700. * ```js
  17701. * L.layerGroup([marker1, marker2])
  17702. * .addLayer(polyline)
  17703. * .addTo(map);
  17704. * ```
  17705. */
  17706. var LayerGroup = Layer.extend({
  17707. initialize: function initialize(layers, options) {
  17708. setOptions(this, options);
  17709. this._layers = {};
  17710. var i, len;
  17711. if (layers) {
  17712. for (i = 0, len = layers.length; i < len; i++) {
  17713. this.addLayer(layers[i]);
  17714. }
  17715. }
  17716. },
  17717. // @method addLayer(layer: Layer): this
  17718. // Adds the given layer to the group.
  17719. addLayer: function addLayer(layer) {
  17720. var id = this.getLayerId(layer);
  17721. this._layers[id] = layer;
  17722. if (this._map) {
  17723. this._map.addLayer(layer);
  17724. }
  17725. return this;
  17726. },
  17727. // @method removeLayer(layer: Layer): this
  17728. // Removes the given layer from the group.
  17729. // @alternative
  17730. // @method removeLayer(id: Number): this
  17731. // Removes the layer with the given internal ID from the group.
  17732. removeLayer: function removeLayer(layer) {
  17733. var id = layer in this._layers ? layer : this.getLayerId(layer);
  17734. if (this._map && this._layers[id]) {
  17735. this._map.removeLayer(this._layers[id]);
  17736. }
  17737. delete this._layers[id];
  17738. return this;
  17739. },
  17740. // @method hasLayer(layer: Layer): Boolean
  17741. // Returns `true` if the given layer is currently added to the group.
  17742. // @alternative
  17743. // @method hasLayer(id: Number): Boolean
  17744. // Returns `true` if the given internal ID is currently added to the group.
  17745. hasLayer: function hasLayer(layer) {
  17746. var layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);
  17747. return layerId in this._layers;
  17748. },
  17749. // @method clearLayers(): this
  17750. // Removes all the layers from the group.
  17751. clearLayers: function clearLayers() {
  17752. return this.eachLayer(this.removeLayer, this);
  17753. },
  17754. // @method invoke(methodName: String, …): this
  17755. // Calls `methodName` on every layer contained in this group, passing any
  17756. // additional parameters. Has no effect if the layers contained do not
  17757. // implement `methodName`.
  17758. invoke: function invoke(methodName) {
  17759. var args = Array.prototype.slice.call(arguments, 1),
  17760. i,
  17761. layer;
  17762. for (i in this._layers) {
  17763. layer = this._layers[i];
  17764. if (layer[methodName]) {
  17765. layer[methodName].apply(layer, args);
  17766. }
  17767. }
  17768. return this;
  17769. },
  17770. onAdd: function onAdd(map) {
  17771. this.eachLayer(map.addLayer, map);
  17772. },
  17773. onRemove: function onRemove(map) {
  17774. this.eachLayer(map.removeLayer, map);
  17775. },
  17776. // @method eachLayer(fn: Function, context?: Object): this
  17777. // Iterates over the layers of the group, optionally specifying context of the iterator function.
  17778. // ```js
  17779. // group.eachLayer(function (layer) {
  17780. // layer.bindPopup('Hello');
  17781. // });
  17782. // ```
  17783. eachLayer: function eachLayer(method, context) {
  17784. for (var i in this._layers) {
  17785. method.call(context, this._layers[i]);
  17786. }
  17787. return this;
  17788. },
  17789. // @method getLayer(id: Number): Layer
  17790. // Returns the layer with the given internal ID.
  17791. getLayer: function getLayer(id) {
  17792. return this._layers[id];
  17793. },
  17794. // @method getLayers(): Layer[]
  17795. // Returns an array of all the layers added to the group.
  17796. getLayers: function getLayers() {
  17797. var layers = [];
  17798. this.eachLayer(layers.push, layers);
  17799. return layers;
  17800. },
  17801. // @method setZIndex(zIndex: Number): this
  17802. // Calls `setZIndex` on every layer contained in this group, passing the z-index.
  17803. setZIndex: function setZIndex(zIndex) {
  17804. return this.invoke('setZIndex', zIndex);
  17805. },
  17806. // @method getLayerId(layer: Layer): Number
  17807. // Returns the internal ID for a layer
  17808. getLayerId: function getLayerId(layer) {
  17809. return stamp(layer);
  17810. }
  17811. });
  17812. // @factory L.layerGroup(layers?: Layer[], options?: Object)
  17813. // Create a layer group, optionally given an initial set of layers and an `options` object.
  17814. var layerGroup = function layerGroup(layers, options) {
  17815. return new LayerGroup(layers, options);
  17816. };
  17817. /*
  17818. * @class FeatureGroup
  17819. * @aka L.FeatureGroup
  17820. * @inherits LayerGroup
  17821. *
  17822. * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:
  17823. * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))
  17824. * * Events are propagated to the `FeatureGroup`, so if the group has an event
  17825. * handler, it will handle events from any of the layers. This includes mouse events
  17826. * and custom events.
  17827. * * Has `layeradd` and `layerremove` events
  17828. *
  17829. * @example
  17830. *
  17831. * ```js
  17832. * L.featureGroup([marker1, marker2, polyline])
  17833. * .bindPopup('Hello world!')
  17834. * .on('click', function() { alert('Clicked on a member of the group!'); })
  17835. * .addTo(map);
  17836. * ```
  17837. */
  17838. var FeatureGroup = LayerGroup.extend({
  17839. addLayer: function addLayer(layer) {
  17840. if (this.hasLayer(layer)) {
  17841. return this;
  17842. }
  17843. layer.addEventParent(this);
  17844. LayerGroup.prototype.addLayer.call(this, layer);
  17845. // @event layeradd: LayerEvent
  17846. // Fired when a layer is added to this `FeatureGroup`
  17847. return this.fire('layeradd', {
  17848. layer: layer
  17849. });
  17850. },
  17851. removeLayer: function removeLayer(layer) {
  17852. if (!this.hasLayer(layer)) {
  17853. return this;
  17854. }
  17855. if (layer in this._layers) {
  17856. layer = this._layers[layer];
  17857. }
  17858. layer.removeEventParent(this);
  17859. LayerGroup.prototype.removeLayer.call(this, layer);
  17860. // @event layerremove: LayerEvent
  17861. // Fired when a layer is removed from this `FeatureGroup`
  17862. return this.fire('layerremove', {
  17863. layer: layer
  17864. });
  17865. },
  17866. // @method setStyle(style: Path options): this
  17867. // Sets the given path options to each layer of the group that has a `setStyle` method.
  17868. setStyle: function setStyle(style) {
  17869. return this.invoke('setStyle', style);
  17870. },
  17871. // @method bringToFront(): this
  17872. // Brings the layer group to the top of all other layers
  17873. bringToFront: function bringToFront() {
  17874. return this.invoke('bringToFront');
  17875. },
  17876. // @method bringToBack(): this
  17877. // Brings the layer group to the back of all other layers
  17878. bringToBack: function bringToBack() {
  17879. return this.invoke('bringToBack');
  17880. },
  17881. // @method getBounds(): LatLngBounds
  17882. // Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).
  17883. getBounds: function getBounds() {
  17884. var bounds = new LatLngBounds();
  17885. for (var id in this._layers) {
  17886. var layer = this._layers[id];
  17887. bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());
  17888. }
  17889. return bounds;
  17890. }
  17891. });
  17892. // @factory L.featureGroup(layers?: Layer[], options?: Object)
  17893. // Create a feature group, optionally given an initial set of layers and an `options` object.
  17894. var featureGroup = function featureGroup(layers, options) {
  17895. return new FeatureGroup(layers, options);
  17896. };
  17897. /*
  17898. * @class Icon
  17899. * @aka L.Icon
  17900. *
  17901. * Represents an icon to provide when creating a marker.
  17902. *
  17903. * @example
  17904. *
  17905. * ```js
  17906. * var myIcon = L.icon({
  17907. * iconUrl: 'my-icon.png',
  17908. * iconRetinaUrl: 'my-icon@2x.png',
  17909. * iconSize: [38, 95],
  17910. * iconAnchor: [22, 94],
  17911. * popupAnchor: [-3, -76],
  17912. * shadowUrl: 'my-icon-shadow.png',
  17913. * shadowRetinaUrl: 'my-icon-shadow@2x.png',
  17914. * shadowSize: [68, 95],
  17915. * shadowAnchor: [22, 94]
  17916. * });
  17917. *
  17918. * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);
  17919. * ```
  17920. *
  17921. * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.
  17922. *
  17923. */
  17924. var Icon = Class.extend({
  17925. /* @section
  17926. * @aka Icon options
  17927. *
  17928. * @option iconUrl: String = null
  17929. * **(required)** The URL to the icon image (absolute or relative to your script path).
  17930. *
  17931. * @option iconRetinaUrl: String = null
  17932. * The URL to a retina sized version of the icon image (absolute or relative to your
  17933. * script path). Used for Retina screen devices.
  17934. *
  17935. * @option iconSize: Point = null
  17936. * Size of the icon image in pixels.
  17937. *
  17938. * @option iconAnchor: Point = null
  17939. * The coordinates of the "tip" of the icon (relative to its top left corner). The icon
  17940. * will be aligned so that this point is at the marker's geographical location. Centered
  17941. * by default if size is specified, also can be set in CSS with negative margins.
  17942. *
  17943. * @option popupAnchor: Point = [0, 0]
  17944. * The coordinates of the point from which popups will "open", relative to the icon anchor.
  17945. *
  17946. * @option tooltipAnchor: Point = [0, 0]
  17947. * The coordinates of the point from which tooltips will "open", relative to the icon anchor.
  17948. *
  17949. * @option shadowUrl: String = null
  17950. * The URL to the icon shadow image. If not specified, no shadow image will be created.
  17951. *
  17952. * @option shadowRetinaUrl: String = null
  17953. *
  17954. * @option shadowSize: Point = null
  17955. * Size of the shadow image in pixels.
  17956. *
  17957. * @option shadowAnchor: Point = null
  17958. * The coordinates of the "tip" of the shadow (relative to its top left corner) (the same
  17959. * as iconAnchor if not specified).
  17960. *
  17961. * @option className: String = ''
  17962. * A custom class name to assign to both icon and shadow images. Empty by default.
  17963. */
  17964. options: {
  17965. popupAnchor: [0, 0],
  17966. tooltipAnchor: [0, 0],
  17967. // @option crossOrigin: Boolean|String = false
  17968. // Whether the crossOrigin attribute will be added to the tiles.
  17969. // If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.
  17970. // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.
  17971. crossOrigin: false
  17972. },
  17973. initialize: function initialize(options) {
  17974. setOptions(this, options);
  17975. },
  17976. // @method createIcon(oldIcon?: HTMLElement): HTMLElement
  17977. // Called internally when the icon has to be shown, returns a `<img>` HTML element
  17978. // styled according to the options.
  17979. createIcon: function createIcon(oldIcon) {
  17980. return this._createIcon('icon', oldIcon);
  17981. },
  17982. // @method createShadow(oldIcon?: HTMLElement): HTMLElement
  17983. // As `createIcon`, but for the shadow beneath it.
  17984. createShadow: function createShadow(oldIcon) {
  17985. return this._createIcon('shadow', oldIcon);
  17986. },
  17987. _createIcon: function _createIcon(name, oldIcon) {
  17988. var src = this._getIconUrl(name);
  17989. if (!src) {
  17990. if (name === 'icon') {
  17991. throw new Error('iconUrl not set in Icon options (see the docs).');
  17992. }
  17993. return null;
  17994. }
  17995. var img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);
  17996. this._setIconStyles(img, name);
  17997. if (this.options.crossOrigin || this.options.crossOrigin === '') {
  17998. img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;
  17999. }
  18000. return img;
  18001. },
  18002. _setIconStyles: function _setIconStyles(img, name) {
  18003. var options = this.options;
  18004. var sizeOption = options[name + 'Size'];
  18005. if (typeof sizeOption === 'number') {
  18006. sizeOption = [sizeOption, sizeOption];
  18007. }
  18008. var size = toPoint(sizeOption),
  18009. anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor || size && size.divideBy(2, true));
  18010. img.className = 'leaflet-marker-' + name + ' ' + (options.className || '');
  18011. if (anchor) {
  18012. img.style.marginLeft = -anchor.x + 'px';
  18013. img.style.marginTop = -anchor.y + 'px';
  18014. }
  18015. if (size) {
  18016. img.style.width = size.x + 'px';
  18017. img.style.height = size.y + 'px';
  18018. }
  18019. },
  18020. _createImg: function _createImg(src, el) {
  18021. el = el || document.createElement('img');
  18022. el.src = src;
  18023. return el;
  18024. },
  18025. _getIconUrl: function _getIconUrl(name) {
  18026. return Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];
  18027. }
  18028. });
  18029. // @factory L.icon(options: Icon options)
  18030. // Creates an icon instance with the given options.
  18031. function icon(options) {
  18032. return new Icon(options);
  18033. }
  18034. /*
  18035. * @miniclass Icon.Default (Icon)
  18036. * @aka L.Icon.Default
  18037. * @section
  18038. *
  18039. * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when
  18040. * no icon is specified. Points to the blue marker image distributed with Leaflet
  18041. * releases.
  18042. *
  18043. * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`
  18044. * (which is a set of `Icon options`).
  18045. *
  18046. * If you want to _completely_ replace the default icon, override the
  18047. * `L.Marker.prototype.options.icon` with your own icon instead.
  18048. */
  18049. var IconDefault = Icon.extend({
  18050. options: {
  18051. iconUrl: 'marker-icon.png',
  18052. iconRetinaUrl: 'marker-icon-2x.png',
  18053. shadowUrl: 'marker-shadow.png',
  18054. iconSize: [25, 41],
  18055. iconAnchor: [12, 41],
  18056. popupAnchor: [1, -34],
  18057. tooltipAnchor: [16, -28],
  18058. shadowSize: [41, 41]
  18059. },
  18060. _getIconUrl: function _getIconUrl(name) {
  18061. if (typeof IconDefault.imagePath !== 'string') {
  18062. // Deprecated, backwards-compatibility only
  18063. IconDefault.imagePath = this._detectIconPath();
  18064. }
  18065. // @option imagePath: String
  18066. // `Icon.Default` will try to auto-detect the location of the
  18067. // blue icon images. If you are placing these images in a non-standard
  18068. // way, set this option to point to the right path.
  18069. return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);
  18070. },
  18071. _stripUrl: function _stripUrl(path) {
  18072. // separate function to use in tests
  18073. var strip = function strip(str, re, idx) {
  18074. var match = re.exec(str);
  18075. return match && match[idx];
  18076. };
  18077. path = strip(path, /^url\((['"])?(.+)\1\)$/, 2);
  18078. return path && strip(path, /^(.*)marker-icon\.png$/, 1);
  18079. },
  18080. _detectIconPath: function _detectIconPath() {
  18081. var el = create$1('div', 'leaflet-default-icon-path', document.body);
  18082. var path = getStyle(el, 'background-image') || getStyle(el, 'backgroundImage'); // IE8
  18083. document.body.removeChild(el);
  18084. path = this._stripUrl(path);
  18085. if (path) {
  18086. return path;
  18087. }
  18088. var link = document.querySelector('link[href$="leaflet.css"]');
  18089. if (!link) {
  18090. return '';
  18091. }
  18092. return link.href.substring(0, link.href.length - 'leaflet.css'.length - 1);
  18093. }
  18094. });
  18095. /*
  18096. * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.
  18097. */
  18098. /* @namespace Marker
  18099. * @section Interaction handlers
  18100. *
  18101. * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:
  18102. *
  18103. * ```js
  18104. * marker.dragging.disable();
  18105. * ```
  18106. *
  18107. * @property dragging: Handler
  18108. * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).
  18109. */
  18110. var MarkerDrag = Handler.extend({
  18111. initialize: function initialize(marker) {
  18112. this._marker = marker;
  18113. },
  18114. addHooks: function addHooks() {
  18115. var icon = this._marker._icon;
  18116. if (!this._draggable) {
  18117. this._draggable = new Draggable(icon, icon, true);
  18118. }
  18119. this._draggable.on({
  18120. dragstart: this._onDragStart,
  18121. predrag: this._onPreDrag,
  18122. drag: this._onDrag,
  18123. dragend: this._onDragEnd
  18124. }, this).enable();
  18125. addClass(icon, 'leaflet-marker-draggable');
  18126. },
  18127. removeHooks: function removeHooks() {
  18128. this._draggable.off({
  18129. dragstart: this._onDragStart,
  18130. predrag: this._onPreDrag,
  18131. drag: this._onDrag,
  18132. dragend: this._onDragEnd
  18133. }, this).disable();
  18134. if (this._marker._icon) {
  18135. removeClass(this._marker._icon, 'leaflet-marker-draggable');
  18136. }
  18137. },
  18138. moved: function moved() {
  18139. return this._draggable && this._draggable._moved;
  18140. },
  18141. _adjustPan: function _adjustPan(e) {
  18142. var marker = this._marker,
  18143. map = marker._map,
  18144. speed = this._marker.options.autoPanSpeed,
  18145. padding = this._marker.options.autoPanPadding,
  18146. iconPos = getPosition(marker._icon),
  18147. bounds = map.getPixelBounds(),
  18148. origin = map.getPixelOrigin();
  18149. var panBounds = toBounds(bounds.min._subtract(origin).add(padding), bounds.max._subtract(origin).subtract(padding));
  18150. if (!panBounds.contains(iconPos)) {
  18151. // Compute incremental movement
  18152. var movement = toPoint((Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) - (Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x), (Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) - (Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)).multiplyBy(speed);
  18153. map.panBy(movement, {
  18154. animate: false
  18155. });
  18156. this._draggable._newPos._add(movement);
  18157. this._draggable._startPos._add(movement);
  18158. setPosition(marker._icon, this._draggable._newPos);
  18159. this._onDrag(e);
  18160. this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));
  18161. }
  18162. },
  18163. _onDragStart: function _onDragStart() {
  18164. // @section Dragging events
  18165. // @event dragstart: Event
  18166. // Fired when the user starts dragging the marker.
  18167. // @event movestart: Event
  18168. // Fired when the marker starts moving (because of dragging).
  18169. this._oldLatLng = this._marker.getLatLng();
  18170. // When using ES6 imports it could not be set when `Popup` was not imported as well
  18171. this._marker.closePopup && this._marker.closePopup();
  18172. this._marker.fire('movestart').fire('dragstart');
  18173. },
  18174. _onPreDrag: function _onPreDrag(e) {
  18175. if (this._marker.options.autoPan) {
  18176. cancelAnimFrame(this._panRequest);
  18177. this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));
  18178. }
  18179. },
  18180. _onDrag: function _onDrag(e) {
  18181. var marker = this._marker,
  18182. shadow = marker._shadow,
  18183. iconPos = getPosition(marker._icon),
  18184. latlng = marker._map.layerPointToLatLng(iconPos);
  18185. // update shadow position
  18186. if (shadow) {
  18187. setPosition(shadow, iconPos);
  18188. }
  18189. marker._latlng = latlng;
  18190. e.latlng = latlng;
  18191. e.oldLatLng = this._oldLatLng;
  18192. // @event drag: Event
  18193. // Fired repeatedly while the user drags the marker.
  18194. marker.fire('move', e).fire('drag', e);
  18195. },
  18196. _onDragEnd: function _onDragEnd(e) {
  18197. // @event dragend: DragEndEvent
  18198. // Fired when the user stops dragging the marker.
  18199. cancelAnimFrame(this._panRequest);
  18200. // @event moveend: Event
  18201. // Fired when the marker stops moving (because of dragging).
  18202. delete this._oldLatLng;
  18203. this._marker.fire('moveend').fire('dragend', e);
  18204. }
  18205. });
  18206. /*
  18207. * @class Marker
  18208. * @inherits Interactive layer
  18209. * @aka L.Marker
  18210. * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.
  18211. *
  18212. * @example
  18213. *
  18214. * ```js
  18215. * L.marker([50.5, 30.5]).addTo(map);
  18216. * ```
  18217. */
  18218. var Marker = Layer.extend({
  18219. // @section
  18220. // @aka Marker options
  18221. options: {
  18222. // @option icon: Icon = *
  18223. // Icon instance to use for rendering the marker.
  18224. // See [Icon documentation](#L.Icon) for details on how to customize the marker icon.
  18225. // If not specified, a common instance of `L.Icon.Default` is used.
  18226. icon: new IconDefault(),
  18227. // Option inherited from "Interactive layer" abstract class
  18228. interactive: true,
  18229. // @option keyboard: Boolean = true
  18230. // Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.
  18231. keyboard: true,
  18232. // @option title: String = ''
  18233. // Text for the browser tooltip that appear on marker hover (no tooltip by default).
  18234. // [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).
  18235. title: '',
  18236. // @option alt: String = 'Marker'
  18237. // Text for the `alt` attribute of the icon image.
  18238. // [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).
  18239. alt: 'Marker',
  18240. // @option zIndexOffset: Number = 0
  18241. // By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).
  18242. zIndexOffset: 0,
  18243. // @option opacity: Number = 1.0
  18244. // The opacity of the marker.
  18245. opacity: 1,
  18246. // @option riseOnHover: Boolean = false
  18247. // If `true`, the marker will get on top of others when you hover the mouse over it.
  18248. riseOnHover: false,
  18249. // @option riseOffset: Number = 250
  18250. // The z-index offset used for the `riseOnHover` feature.
  18251. riseOffset: 250,
  18252. // @option pane: String = 'markerPane'
  18253. // `Map pane` where the markers icon will be added.
  18254. pane: 'markerPane',
  18255. // @option shadowPane: String = 'shadowPane'
  18256. // `Map pane` where the markers shadow will be added.
  18257. shadowPane: 'shadowPane',
  18258. // @option bubblingMouseEvents: Boolean = false
  18259. // When `true`, a mouse event on this marker will trigger the same event on the map
  18260. // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).
  18261. bubblingMouseEvents: false,
  18262. // @option autoPanOnFocus: Boolean = true
  18263. // When `true`, the map will pan whenever the marker is focused (via
  18264. // e.g. pressing `tab` on the keyboard) to ensure the marker is
  18265. // visible within the map's bounds
  18266. autoPanOnFocus: true,
  18267. // @section Draggable marker options
  18268. // @option draggable: Boolean = false
  18269. // Whether the marker is draggable with mouse/touch or not.
  18270. draggable: false,
  18271. // @option autoPan: Boolean = false
  18272. // Whether to pan the map when dragging this marker near its edge or not.
  18273. autoPan: false,
  18274. // @option autoPanPadding: Point = Point(50, 50)
  18275. // Distance (in pixels to the left/right and to the top/bottom) of the
  18276. // map edge to start panning the map.
  18277. autoPanPadding: [50, 50],
  18278. // @option autoPanSpeed: Number = 10
  18279. // Number of pixels the map should pan by.
  18280. autoPanSpeed: 10
  18281. },
  18282. /* @section
  18283. *
  18284. * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:
  18285. */
  18286. initialize: function initialize(latlng, options) {
  18287. setOptions(this, options);
  18288. this._latlng = toLatLng(latlng);
  18289. },
  18290. onAdd: function onAdd(map) {
  18291. this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;
  18292. if (this._zoomAnimated) {
  18293. map.on('zoomanim', this._animateZoom, this);
  18294. }
  18295. this._initIcon();
  18296. this.update();
  18297. },
  18298. onRemove: function onRemove(map) {
  18299. if (this.dragging && this.dragging.enabled()) {
  18300. this.options.draggable = true;
  18301. this.dragging.removeHooks();
  18302. }
  18303. delete this.dragging;
  18304. if (this._zoomAnimated) {
  18305. map.off('zoomanim', this._animateZoom, this);
  18306. }
  18307. this._removeIcon();
  18308. this._removeShadow();
  18309. },
  18310. getEvents: function getEvents() {
  18311. return {
  18312. zoom: this.update,
  18313. viewreset: this.update
  18314. };
  18315. },
  18316. // @method getLatLng: LatLng
  18317. // Returns the current geographical position of the marker.
  18318. getLatLng: function getLatLng() {
  18319. return this._latlng;
  18320. },
  18321. // @method setLatLng(latlng: LatLng): this
  18322. // Changes the marker position to the given point.
  18323. setLatLng: function setLatLng(latlng) {
  18324. var oldLatLng = this._latlng;
  18325. this._latlng = toLatLng(latlng);
  18326. this.update();
  18327. // @event move: Event
  18328. // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.
  18329. return this.fire('move', {
  18330. oldLatLng: oldLatLng,
  18331. latlng: this._latlng
  18332. });
  18333. },
  18334. // @method setZIndexOffset(offset: Number): this
  18335. // Changes the [zIndex offset](#marker-zindexoffset) of the marker.
  18336. setZIndexOffset: function setZIndexOffset(offset) {
  18337. this.options.zIndexOffset = offset;
  18338. return this.update();
  18339. },
  18340. // @method getIcon: Icon
  18341. // Returns the current icon used by the marker
  18342. getIcon: function getIcon() {
  18343. return this.options.icon;
  18344. },
  18345. // @method setIcon(icon: Icon): this
  18346. // Changes the marker icon.
  18347. setIcon: function setIcon(icon) {
  18348. this.options.icon = icon;
  18349. if (this._map) {
  18350. this._initIcon();
  18351. this.update();
  18352. }
  18353. if (this._popup) {
  18354. this.bindPopup(this._popup, this._popup.options);
  18355. }
  18356. return this;
  18357. },
  18358. getElement: function getElement() {
  18359. return this._icon;
  18360. },
  18361. update: function update() {
  18362. if (this._icon && this._map) {
  18363. var pos = this._map.latLngToLayerPoint(this._latlng).round();
  18364. this._setPos(pos);
  18365. }
  18366. return this;
  18367. },
  18368. _initIcon: function _initIcon() {
  18369. var options = this.options,
  18370. classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');
  18371. var icon = options.icon.createIcon(this._icon),
  18372. addIcon = false;
  18373. // if we're not reusing the icon, remove the old one and init new one
  18374. if (icon !== this._icon) {
  18375. if (this._icon) {
  18376. this._removeIcon();
  18377. }
  18378. addIcon = true;
  18379. if (options.title) {
  18380. icon.title = options.title;
  18381. }
  18382. if (icon.tagName === 'IMG') {
  18383. icon.alt = options.alt || '';
  18384. }
  18385. }
  18386. addClass(icon, classToAdd);
  18387. if (options.keyboard) {
  18388. icon.tabIndex = '0';
  18389. icon.setAttribute('role', 'button');
  18390. }
  18391. this._icon = icon;
  18392. if (options.riseOnHover) {
  18393. this.on({
  18394. mouseover: this._bringToFront,
  18395. mouseout: this._resetZIndex
  18396. });
  18397. }
  18398. if (this.options.autoPanOnFocus) {
  18399. on(icon, 'focus', this._panOnFocus, this);
  18400. }
  18401. var newShadow = options.icon.createShadow(this._shadow),
  18402. addShadow = false;
  18403. if (newShadow !== this._shadow) {
  18404. this._removeShadow();
  18405. addShadow = true;
  18406. }
  18407. if (newShadow) {
  18408. addClass(newShadow, classToAdd);
  18409. newShadow.alt = '';
  18410. }
  18411. this._shadow = newShadow;
  18412. if (options.opacity < 1) {
  18413. this._updateOpacity();
  18414. }
  18415. if (addIcon) {
  18416. this.getPane().appendChild(this._icon);
  18417. }
  18418. this._initInteraction();
  18419. if (newShadow && addShadow) {
  18420. this.getPane(options.shadowPane).appendChild(this._shadow);
  18421. }
  18422. },
  18423. _removeIcon: function _removeIcon() {
  18424. if (this.options.riseOnHover) {
  18425. this.off({
  18426. mouseover: this._bringToFront,
  18427. mouseout: this._resetZIndex
  18428. });
  18429. }
  18430. if (this.options.autoPanOnFocus) {
  18431. off(this._icon, 'focus', this._panOnFocus, this);
  18432. }
  18433. _remove(this._icon);
  18434. this.removeInteractiveTarget(this._icon);
  18435. this._icon = null;
  18436. },
  18437. _removeShadow: function _removeShadow() {
  18438. if (this._shadow) {
  18439. _remove(this._shadow);
  18440. }
  18441. this._shadow = null;
  18442. },
  18443. _setPos: function _setPos(pos) {
  18444. if (this._icon) {
  18445. setPosition(this._icon, pos);
  18446. }
  18447. if (this._shadow) {
  18448. setPosition(this._shadow, pos);
  18449. }
  18450. this._zIndex = pos.y + this.options.zIndexOffset;
  18451. this._resetZIndex();
  18452. },
  18453. _updateZIndex: function _updateZIndex(offset) {
  18454. if (this._icon) {
  18455. this._icon.style.zIndex = this._zIndex + offset;
  18456. }
  18457. },
  18458. _animateZoom: function _animateZoom(opt) {
  18459. var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();
  18460. this._setPos(pos);
  18461. },
  18462. _initInteraction: function _initInteraction() {
  18463. if (!this.options.interactive) {
  18464. return;
  18465. }
  18466. addClass(this._icon, 'leaflet-interactive');
  18467. this.addInteractiveTarget(this._icon);
  18468. if (MarkerDrag) {
  18469. var draggable = this.options.draggable;
  18470. if (this.dragging) {
  18471. draggable = this.dragging.enabled();
  18472. this.dragging.disable();
  18473. }
  18474. this.dragging = new MarkerDrag(this);
  18475. if (draggable) {
  18476. this.dragging.enable();
  18477. }
  18478. }
  18479. },
  18480. // @method setOpacity(opacity: Number): this
  18481. // Changes the opacity of the marker.
  18482. setOpacity: function setOpacity(opacity) {
  18483. this.options.opacity = opacity;
  18484. if (this._map) {
  18485. this._updateOpacity();
  18486. }
  18487. return this;
  18488. },
  18489. _updateOpacity: function _updateOpacity() {
  18490. var opacity = this.options.opacity;
  18491. if (this._icon) {
  18492. _setOpacity(this._icon, opacity);
  18493. }
  18494. if (this._shadow) {
  18495. _setOpacity(this._shadow, opacity);
  18496. }
  18497. },
  18498. _bringToFront: function _bringToFront() {
  18499. this._updateZIndex(this.options.riseOffset);
  18500. },
  18501. _resetZIndex: function _resetZIndex() {
  18502. this._updateZIndex(0);
  18503. },
  18504. _panOnFocus: function _panOnFocus() {
  18505. var map = this._map;
  18506. if (!map) {
  18507. return;
  18508. }
  18509. var iconOpts = this.options.icon.options;
  18510. var size = iconOpts.iconSize ? toPoint(iconOpts.iconSize) : toPoint(0, 0);
  18511. var anchor = iconOpts.iconAnchor ? toPoint(iconOpts.iconAnchor) : toPoint(0, 0);
  18512. map.panInside(this._latlng, {
  18513. paddingTopLeft: anchor,
  18514. paddingBottomRight: size.subtract(anchor)
  18515. });
  18516. },
  18517. _getPopupAnchor: function _getPopupAnchor() {
  18518. return this.options.icon.options.popupAnchor;
  18519. },
  18520. _getTooltipAnchor: function _getTooltipAnchor() {
  18521. return this.options.icon.options.tooltipAnchor;
  18522. }
  18523. });
  18524. // factory L.marker(latlng: LatLng, options? : Marker options)
  18525. // @factory L.marker(latlng: LatLng, options? : Marker options)
  18526. // Instantiates a Marker object given a geographical point and optionally an options object.
  18527. function marker(latlng, options) {
  18528. return new Marker(latlng, options);
  18529. }
  18530. /*
  18531. * @class Path
  18532. * @aka L.Path
  18533. * @inherits Interactive layer
  18534. *
  18535. * An abstract class that contains options and constants shared between vector
  18536. * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.
  18537. */
  18538. var Path = Layer.extend({
  18539. // @section
  18540. // @aka Path options
  18541. options: {
  18542. // @option stroke: Boolean = true
  18543. // Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.
  18544. stroke: true,
  18545. // @option color: String = '#3388ff'
  18546. // Stroke color
  18547. color: '#3388ff',
  18548. // @option weight: Number = 3
  18549. // Stroke width in pixels
  18550. weight: 3,
  18551. // @option opacity: Number = 1.0
  18552. // Stroke opacity
  18553. opacity: 1,
  18554. // @option lineCap: String= 'round'
  18555. // A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.
  18556. lineCap: 'round',
  18557. // @option lineJoin: String = 'round'
  18558. // A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.
  18559. lineJoin: 'round',
  18560. // @option dashArray: String = null
  18561. // A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).
  18562. dashArray: null,
  18563. // @option dashOffset: String = null
  18564. // A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).
  18565. dashOffset: null,
  18566. // @option fill: Boolean = depends
  18567. // Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.
  18568. fill: false,
  18569. // @option fillColor: String = *
  18570. // Fill color. Defaults to the value of the [`color`](#path-color) option
  18571. fillColor: null,
  18572. // @option fillOpacity: Number = 0.2
  18573. // Fill opacity.
  18574. fillOpacity: 0.2,
  18575. // @option fillRule: String = 'evenodd'
  18576. // A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.
  18577. fillRule: 'evenodd',
  18578. // className: '',
  18579. // Option inherited from "Interactive layer" abstract class
  18580. interactive: true,
  18581. // @option bubblingMouseEvents: Boolean = true
  18582. // When `true`, a mouse event on this path will trigger the same event on the map
  18583. // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).
  18584. bubblingMouseEvents: true
  18585. },
  18586. beforeAdd: function beforeAdd(map) {
  18587. // Renderer is set here because we need to call renderer.getEvents
  18588. // before this.getEvents.
  18589. this._renderer = map.getRenderer(this);
  18590. },
  18591. onAdd: function onAdd() {
  18592. this._renderer._initPath(this);
  18593. this._reset();
  18594. this._renderer._addPath(this);
  18595. },
  18596. onRemove: function onRemove() {
  18597. this._renderer._removePath(this);
  18598. },
  18599. // @method redraw(): this
  18600. // Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.
  18601. redraw: function redraw() {
  18602. if (this._map) {
  18603. this._renderer._updatePath(this);
  18604. }
  18605. return this;
  18606. },
  18607. // @method setStyle(style: Path options): this
  18608. // Changes the appearance of a Path based on the options in the `Path options` object.
  18609. setStyle: function setStyle(style) {
  18610. setOptions(this, style);
  18611. if (this._renderer) {
  18612. this._renderer._updateStyle(this);
  18613. if (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {
  18614. this._updateBounds();
  18615. }
  18616. }
  18617. return this;
  18618. },
  18619. // @method bringToFront(): this
  18620. // Brings the layer to the top of all path layers.
  18621. bringToFront: function bringToFront() {
  18622. if (this._renderer) {
  18623. this._renderer._bringToFront(this);
  18624. }
  18625. return this;
  18626. },
  18627. // @method bringToBack(): this
  18628. // Brings the layer to the bottom of all path layers.
  18629. bringToBack: function bringToBack() {
  18630. if (this._renderer) {
  18631. this._renderer._bringToBack(this);
  18632. }
  18633. return this;
  18634. },
  18635. getElement: function getElement() {
  18636. return this._path;
  18637. },
  18638. _reset: function _reset() {
  18639. // defined in child classes
  18640. this._project();
  18641. this._update();
  18642. },
  18643. _clickTolerance: function _clickTolerance() {
  18644. // used when doing hit detection for Canvas layers
  18645. return (this.options.stroke ? this.options.weight / 2 : 0) + (this._renderer.options.tolerance || 0);
  18646. }
  18647. });
  18648. /*
  18649. * @class CircleMarker
  18650. * @aka L.CircleMarker
  18651. * @inherits Path
  18652. *
  18653. * A circle of a fixed size with radius specified in pixels. Extends `Path`.
  18654. */
  18655. var CircleMarker = Path.extend({
  18656. // @section
  18657. // @aka CircleMarker options
  18658. options: {
  18659. fill: true,
  18660. // @option radius: Number = 10
  18661. // Radius of the circle marker, in pixels
  18662. radius: 10
  18663. },
  18664. initialize: function initialize(latlng, options) {
  18665. setOptions(this, options);
  18666. this._latlng = toLatLng(latlng);
  18667. this._radius = this.options.radius;
  18668. },
  18669. // @method setLatLng(latLng: LatLng): this
  18670. // Sets the position of a circle marker to a new location.
  18671. setLatLng: function setLatLng(latlng) {
  18672. var oldLatLng = this._latlng;
  18673. this._latlng = toLatLng(latlng);
  18674. this.redraw();
  18675. // @event move: Event
  18676. // Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.
  18677. return this.fire('move', {
  18678. oldLatLng: oldLatLng,
  18679. latlng: this._latlng
  18680. });
  18681. },
  18682. // @method getLatLng(): LatLng
  18683. // Returns the current geographical position of the circle marker
  18684. getLatLng: function getLatLng() {
  18685. return this._latlng;
  18686. },
  18687. // @method setRadius(radius: Number): this
  18688. // Sets the radius of a circle marker. Units are in pixels.
  18689. setRadius: function setRadius(radius) {
  18690. this.options.radius = this._radius = radius;
  18691. return this.redraw();
  18692. },
  18693. // @method getRadius(): Number
  18694. // Returns the current radius of the circle
  18695. getRadius: function getRadius() {
  18696. return this._radius;
  18697. },
  18698. setStyle: function setStyle(options) {
  18699. var radius = options && options.radius || this._radius;
  18700. Path.prototype.setStyle.call(this, options);
  18701. this.setRadius(radius);
  18702. return this;
  18703. },
  18704. _project: function _project() {
  18705. this._point = this._map.latLngToLayerPoint(this._latlng);
  18706. this._updateBounds();
  18707. },
  18708. _updateBounds: function _updateBounds() {
  18709. var r = this._radius,
  18710. r2 = this._radiusY || r,
  18711. w = this._clickTolerance(),
  18712. p = [r + w, r2 + w];
  18713. this._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));
  18714. },
  18715. _update: function _update() {
  18716. if (this._map) {
  18717. this._updatePath();
  18718. }
  18719. },
  18720. _updatePath: function _updatePath() {
  18721. this._renderer._updateCircle(this);
  18722. },
  18723. _empty: function _empty() {
  18724. return this._radius && !this._renderer._bounds.intersects(this._pxBounds);
  18725. },
  18726. // Needed by the `Canvas` renderer for interactivity
  18727. _containsPoint: function _containsPoint(p) {
  18728. return p.distanceTo(this._point) <= this._radius + this._clickTolerance();
  18729. }
  18730. });
  18731. // @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)
  18732. // Instantiates a circle marker object given a geographical point, and an optional options object.
  18733. function circleMarker(latlng, options) {
  18734. return new CircleMarker(latlng, options);
  18735. }
  18736. /*
  18737. * @class Circle
  18738. * @aka L.Circle
  18739. * @inherits CircleMarker
  18740. *
  18741. * A class for drawing circle overlays on a map. Extends `CircleMarker`.
  18742. *
  18743. * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).
  18744. *
  18745. * @example
  18746. *
  18747. * ```js
  18748. * L.circle([50.5, 30.5], {radius: 200}).addTo(map);
  18749. * ```
  18750. */
  18751. var Circle = CircleMarker.extend({
  18752. initialize: function initialize(latlng, options, legacyOptions) {
  18753. if (typeof options === 'number') {
  18754. // Backwards compatibility with 0.7.x factory (latlng, radius, options?)
  18755. options = extend({}, legacyOptions, {
  18756. radius: options
  18757. });
  18758. }
  18759. setOptions(this, options);
  18760. this._latlng = toLatLng(latlng);
  18761. if (isNaN(this.options.radius)) {
  18762. throw new Error('Circle radius cannot be NaN');
  18763. }
  18764. // @section
  18765. // @aka Circle options
  18766. // @option radius: Number; Radius of the circle, in meters.
  18767. this._mRadius = this.options.radius;
  18768. },
  18769. // @method setRadius(radius: Number): this
  18770. // Sets the radius of a circle. Units are in meters.
  18771. setRadius: function setRadius(radius) {
  18772. this._mRadius = radius;
  18773. return this.redraw();
  18774. },
  18775. // @method getRadius(): Number
  18776. // Returns the current radius of a circle. Units are in meters.
  18777. getRadius: function getRadius() {
  18778. return this._mRadius;
  18779. },
  18780. // @method getBounds(): LatLngBounds
  18781. // Returns the `LatLngBounds` of the path.
  18782. getBounds: function getBounds() {
  18783. var half = [this._radius, this._radiusY || this._radius];
  18784. return new LatLngBounds(this._map.layerPointToLatLng(this._point.subtract(half)), this._map.layerPointToLatLng(this._point.add(half)));
  18785. },
  18786. setStyle: Path.prototype.setStyle,
  18787. _project: function _project() {
  18788. var lng = this._latlng.lng,
  18789. lat = this._latlng.lat,
  18790. map = this._map,
  18791. crs = map.options.crs;
  18792. if (crs.distance === Earth.distance) {
  18793. var d = Math.PI / 180,
  18794. latR = this._mRadius / Earth.R / d,
  18795. top = map.project([lat + latR, lng]),
  18796. bottom = map.project([lat - latR, lng]),
  18797. p = top.add(bottom).divideBy(2),
  18798. lat2 = map.unproject(p).lat,
  18799. lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;
  18800. if (isNaN(lngR) || lngR === 0) {
  18801. lngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425
  18802. }
  18803. this._point = p.subtract(map.getPixelOrigin());
  18804. this._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;
  18805. this._radiusY = p.y - top.y;
  18806. } else {
  18807. var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));
  18808. this._point = map.latLngToLayerPoint(this._latlng);
  18809. this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;
  18810. }
  18811. this._updateBounds();
  18812. }
  18813. });
  18814. // @factory L.circle(latlng: LatLng, options?: Circle options)
  18815. // Instantiates a circle object given a geographical point, and an options object
  18816. // which contains the circle radius.
  18817. // @alternative
  18818. // @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)
  18819. // Obsolete way of instantiating a circle, for compatibility with 0.7.x code.
  18820. // Do not use in new applications or plugins.
  18821. function circle(latlng, options, legacyOptions) {
  18822. return new Circle(latlng, options, legacyOptions);
  18823. }
  18824. /*
  18825. * @class Polyline
  18826. * @aka L.Polyline
  18827. * @inherits Path
  18828. *
  18829. * A class for drawing polyline overlays on a map. Extends `Path`.
  18830. *
  18831. * @example
  18832. *
  18833. * ```js
  18834. * // create a red polyline from an array of LatLng points
  18835. * var latlngs = [
  18836. * [45.51, -122.68],
  18837. * [37.77, -122.43],
  18838. * [34.04, -118.2]
  18839. * ];
  18840. *
  18841. * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);
  18842. *
  18843. * // zoom the map to the polyline
  18844. * map.fitBounds(polyline.getBounds());
  18845. * ```
  18846. *
  18847. * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:
  18848. *
  18849. * ```js
  18850. * // create a red polyline from an array of arrays of LatLng points
  18851. * var latlngs = [
  18852. * [[45.51, -122.68],
  18853. * [37.77, -122.43],
  18854. * [34.04, -118.2]],
  18855. * [[40.78, -73.91],
  18856. * [41.83, -87.62],
  18857. * [32.76, -96.72]]
  18858. * ];
  18859. * ```
  18860. */
  18861. var Polyline = Path.extend({
  18862. // @section
  18863. // @aka Polyline options
  18864. options: {
  18865. // @option smoothFactor: Number = 1.0
  18866. // How much to simplify the polyline on each zoom level. More means
  18867. // better performance and smoother look, and less means more accurate representation.
  18868. smoothFactor: 1.0,
  18869. // @option noClip: Boolean = false
  18870. // Disable polyline clipping.
  18871. noClip: false
  18872. },
  18873. initialize: function initialize(latlngs, options) {
  18874. setOptions(this, options);
  18875. this._setLatLngs(latlngs);
  18876. },
  18877. // @method getLatLngs(): LatLng[]
  18878. // Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.
  18879. getLatLngs: function getLatLngs() {
  18880. return this._latlngs;
  18881. },
  18882. // @method setLatLngs(latlngs: LatLng[]): this
  18883. // Replaces all the points in the polyline with the given array of geographical points.
  18884. setLatLngs: function setLatLngs(latlngs) {
  18885. this._setLatLngs(latlngs);
  18886. return this.redraw();
  18887. },
  18888. // @method isEmpty(): Boolean
  18889. // Returns `true` if the Polyline has no LatLngs.
  18890. isEmpty: function isEmpty() {
  18891. return !this._latlngs.length;
  18892. },
  18893. // @method closestLayerPoint(p: Point): Point
  18894. // Returns the point closest to `p` on the Polyline.
  18895. closestLayerPoint: function closestLayerPoint(p) {
  18896. var minDistance = Infinity,
  18897. minPoint = null,
  18898. closest = _sqClosestPointOnSegment,
  18899. p1,
  18900. p2;
  18901. for (var j = 0, jLen = this._parts.length; j < jLen; j++) {
  18902. var points = this._parts[j];
  18903. for (var i = 1, len = points.length; i < len; i++) {
  18904. p1 = points[i - 1];
  18905. p2 = points[i];
  18906. var sqDist = closest(p, p1, p2, true);
  18907. if (sqDist < minDistance) {
  18908. minDistance = sqDist;
  18909. minPoint = closest(p, p1, p2);
  18910. }
  18911. }
  18912. }
  18913. if (minPoint) {
  18914. minPoint.distance = Math.sqrt(minDistance);
  18915. }
  18916. return minPoint;
  18917. },
  18918. // @method getCenter(): LatLng
  18919. // Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline.
  18920. getCenter: function getCenter() {
  18921. // throws error when not yet added to map as this center calculation requires projected coordinates
  18922. if (!this._map) {
  18923. throw new Error('Must add layer to map before using getCenter()');
  18924. }
  18925. return polylineCenter(this._defaultShape(), this._map.options.crs);
  18926. },
  18927. // @method getBounds(): LatLngBounds
  18928. // Returns the `LatLngBounds` of the path.
  18929. getBounds: function getBounds() {
  18930. return this._bounds;
  18931. },
  18932. // @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this
  18933. // Adds a given point to the polyline. By default, adds to the first ring of
  18934. // the polyline in case of a multi-polyline, but can be overridden by passing
  18935. // a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).
  18936. addLatLng: function addLatLng(latlng, latlngs) {
  18937. latlngs = latlngs || this._defaultShape();
  18938. latlng = toLatLng(latlng);
  18939. latlngs.push(latlng);
  18940. this._bounds.extend(latlng);
  18941. return this.redraw();
  18942. },
  18943. _setLatLngs: function _setLatLngs(latlngs) {
  18944. this._bounds = new LatLngBounds();
  18945. this._latlngs = this._convertLatLngs(latlngs);
  18946. },
  18947. _defaultShape: function _defaultShape() {
  18948. return isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];
  18949. },
  18950. // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way
  18951. _convertLatLngs: function _convertLatLngs(latlngs) {
  18952. var result = [],
  18953. flat = isFlat(latlngs);
  18954. for (var i = 0, len = latlngs.length; i < len; i++) {
  18955. if (flat) {
  18956. result[i] = toLatLng(latlngs[i]);
  18957. this._bounds.extend(result[i]);
  18958. } else {
  18959. result[i] = this._convertLatLngs(latlngs[i]);
  18960. }
  18961. }
  18962. return result;
  18963. },
  18964. _project: function _project() {
  18965. var pxBounds = new Bounds();
  18966. this._rings = [];
  18967. this._projectLatlngs(this._latlngs, this._rings, pxBounds);
  18968. if (this._bounds.isValid() && pxBounds.isValid()) {
  18969. this._rawPxBounds = pxBounds;
  18970. this._updateBounds();
  18971. }
  18972. },
  18973. _updateBounds: function _updateBounds() {
  18974. var w = this._clickTolerance(),
  18975. p = new Point(w, w);
  18976. if (!this._rawPxBounds) {
  18977. return;
  18978. }
  18979. this._pxBounds = new Bounds([this._rawPxBounds.min.subtract(p), this._rawPxBounds.max.add(p)]);
  18980. },
  18981. // recursively turns latlngs into a set of rings with projected coordinates
  18982. _projectLatlngs: function _projectLatlngs(latlngs, result, projectedBounds) {
  18983. var flat = latlngs[0] instanceof LatLng,
  18984. len = latlngs.length,
  18985. i,
  18986. ring;
  18987. if (flat) {
  18988. ring = [];
  18989. for (i = 0; i < len; i++) {
  18990. ring[i] = this._map.latLngToLayerPoint(latlngs[i]);
  18991. projectedBounds.extend(ring[i]);
  18992. }
  18993. result.push(ring);
  18994. } else {
  18995. for (i = 0; i < len; i++) {
  18996. this._projectLatlngs(latlngs[i], result, projectedBounds);
  18997. }
  18998. }
  18999. },
  19000. // clip polyline by renderer bounds so that we have less to render for performance
  19001. _clipPoints: function _clipPoints() {
  19002. var bounds = this._renderer._bounds;
  19003. this._parts = [];
  19004. if (!this._pxBounds || !this._pxBounds.intersects(bounds)) {
  19005. return;
  19006. }
  19007. if (this.options.noClip) {
  19008. this._parts = this._rings;
  19009. return;
  19010. }
  19011. var parts = this._parts,
  19012. i,
  19013. j,
  19014. k,
  19015. len,
  19016. len2,
  19017. segment,
  19018. points;
  19019. for (i = 0, k = 0, len = this._rings.length; i < len; i++) {
  19020. points = this._rings[i];
  19021. for (j = 0, len2 = points.length; j < len2 - 1; j++) {
  19022. segment = clipSegment(points[j], points[j + 1], bounds, j, true);
  19023. if (!segment) {
  19024. continue;
  19025. }
  19026. parts[k] = parts[k] || [];
  19027. parts[k].push(segment[0]);
  19028. // if segment goes out of screen, or it's the last one, it's the end of the line part
  19029. if (segment[1] !== points[j + 1] || j === len2 - 2) {
  19030. parts[k].push(segment[1]);
  19031. k++;
  19032. }
  19033. }
  19034. }
  19035. },
  19036. // simplify each clipped part of the polyline for performance
  19037. _simplifyPoints: function _simplifyPoints() {
  19038. var parts = this._parts,
  19039. tolerance = this.options.smoothFactor;
  19040. for (var i = 0, len = parts.length; i < len; i++) {
  19041. parts[i] = simplify(parts[i], tolerance);
  19042. }
  19043. },
  19044. _update: function _update() {
  19045. if (!this._map) {
  19046. return;
  19047. }
  19048. this._clipPoints();
  19049. this._simplifyPoints();
  19050. this._updatePath();
  19051. },
  19052. _updatePath: function _updatePath() {
  19053. this._renderer._updatePoly(this);
  19054. },
  19055. // Needed by the `Canvas` renderer for interactivity
  19056. _containsPoint: function _containsPoint(p, closed) {
  19057. var i,
  19058. j,
  19059. k,
  19060. len,
  19061. len2,
  19062. part,
  19063. w = this._clickTolerance();
  19064. if (!this._pxBounds || !this._pxBounds.contains(p)) {
  19065. return false;
  19066. }
  19067. // hit detection for polylines
  19068. for (i = 0, len = this._parts.length; i < len; i++) {
  19069. part = this._parts[i];
  19070. for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {
  19071. if (!closed && j === 0) {
  19072. continue;
  19073. }
  19074. if (pointToSegmentDistance(p, part[k], part[j]) <= w) {
  19075. return true;
  19076. }
  19077. }
  19078. }
  19079. return false;
  19080. }
  19081. });
  19082. // @factory L.polyline(latlngs: LatLng[], options?: Polyline options)
  19083. // Instantiates a polyline object given an array of geographical points and
  19084. // optionally an options object. You can create a `Polyline` object with
  19085. // multiple separate lines (`MultiPolyline`) by passing an array of arrays
  19086. // of geographic points.
  19087. function polyline(latlngs, options) {
  19088. return new Polyline(latlngs, options);
  19089. }
  19090. // Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.
  19091. Polyline._flat = _flat;
  19092. /*
  19093. * @class Polygon
  19094. * @aka L.Polygon
  19095. * @inherits Polyline
  19096. *
  19097. * A class for drawing polygon overlays on a map. Extends `Polyline`.
  19098. *
  19099. * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.
  19100. *
  19101. *
  19102. * @example
  19103. *
  19104. * ```js
  19105. * // create a red polygon from an array of LatLng points
  19106. * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];
  19107. *
  19108. * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);
  19109. *
  19110. * // zoom the map to the polygon
  19111. * map.fitBounds(polygon.getBounds());
  19112. * ```
  19113. *
  19114. * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:
  19115. *
  19116. * ```js
  19117. * var latlngs = [
  19118. * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring
  19119. * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole
  19120. * ];
  19121. * ```
  19122. *
  19123. * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.
  19124. *
  19125. * ```js
  19126. * var latlngs = [
  19127. * [ // first polygon
  19128. * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring
  19129. * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole
  19130. * ],
  19131. * [ // second polygon
  19132. * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]
  19133. * ]
  19134. * ];
  19135. * ```
  19136. */
  19137. var Polygon = Polyline.extend({
  19138. options: {
  19139. fill: true
  19140. },
  19141. isEmpty: function isEmpty() {
  19142. return !this._latlngs.length || !this._latlngs[0].length;
  19143. },
  19144. // @method getCenter(): LatLng
  19145. // Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.
  19146. getCenter: function getCenter() {
  19147. // throws error when not yet added to map as this center calculation requires projected coordinates
  19148. if (!this._map) {
  19149. throw new Error('Must add layer to map before using getCenter()');
  19150. }
  19151. return polygonCenter(this._defaultShape(), this._map.options.crs);
  19152. },
  19153. _convertLatLngs: function _convertLatLngs(latlngs) {
  19154. var result = Polyline.prototype._convertLatLngs.call(this, latlngs),
  19155. len = result.length;
  19156. // remove last point if it equals first one
  19157. if (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {
  19158. result.pop();
  19159. }
  19160. return result;
  19161. },
  19162. _setLatLngs: function _setLatLngs(latlngs) {
  19163. Polyline.prototype._setLatLngs.call(this, latlngs);
  19164. if (isFlat(this._latlngs)) {
  19165. this._latlngs = [this._latlngs];
  19166. }
  19167. },
  19168. _defaultShape: function _defaultShape() {
  19169. return isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];
  19170. },
  19171. _clipPoints: function _clipPoints() {
  19172. // polygons need a different clipping algorithm so we redefine that
  19173. var bounds = this._renderer._bounds,
  19174. w = this.options.weight,
  19175. p = new Point(w, w);
  19176. // increase clip padding by stroke width to avoid stroke on clip edges
  19177. bounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));
  19178. this._parts = [];
  19179. if (!this._pxBounds || !this._pxBounds.intersects(bounds)) {
  19180. return;
  19181. }
  19182. if (this.options.noClip) {
  19183. this._parts = this._rings;
  19184. return;
  19185. }
  19186. for (var i = 0, len = this._rings.length, clipped; i < len; i++) {
  19187. clipped = clipPolygon(this._rings[i], bounds, true);
  19188. if (clipped.length) {
  19189. this._parts.push(clipped);
  19190. }
  19191. }
  19192. },
  19193. _updatePath: function _updatePath() {
  19194. this._renderer._updatePoly(this, true);
  19195. },
  19196. // Needed by the `Canvas` renderer for interactivity
  19197. _containsPoint: function _containsPoint(p) {
  19198. var inside = false,
  19199. part,
  19200. p1,
  19201. p2,
  19202. i,
  19203. j,
  19204. k,
  19205. len,
  19206. len2;
  19207. if (!this._pxBounds || !this._pxBounds.contains(p)) {
  19208. return false;
  19209. }
  19210. // ray casting algorithm for detecting if point is in polygon
  19211. for (i = 0, len = this._parts.length; i < len; i++) {
  19212. part = this._parts[i];
  19213. for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {
  19214. p1 = part[j];
  19215. p2 = part[k];
  19216. if (p1.y > p.y !== p2.y > p.y && p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x) {
  19217. inside = !inside;
  19218. }
  19219. }
  19220. }
  19221. // also check if it's on polygon stroke
  19222. return inside || Polyline.prototype._containsPoint.call(this, p, true);
  19223. }
  19224. });
  19225. // @factory L.polygon(latlngs: LatLng[], options?: Polyline options)
  19226. function polygon(latlngs, options) {
  19227. return new Polygon(latlngs, options);
  19228. }
  19229. /*
  19230. * @class GeoJSON
  19231. * @aka L.GeoJSON
  19232. * @inherits FeatureGroup
  19233. *
  19234. * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse
  19235. * GeoJSON data and display it on the map. Extends `FeatureGroup`.
  19236. *
  19237. * @example
  19238. *
  19239. * ```js
  19240. * L.geoJSON(data, {
  19241. * style: function (feature) {
  19242. * return {color: feature.properties.color};
  19243. * }
  19244. * }).bindPopup(function (layer) {
  19245. * return layer.feature.properties.description;
  19246. * }).addTo(map);
  19247. * ```
  19248. */
  19249. var GeoJSON = FeatureGroup.extend({
  19250. /* @section
  19251. * @aka GeoJSON options
  19252. *
  19253. * @option pointToLayer: Function = *
  19254. * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally
  19255. * called when data is added, passing the GeoJSON point feature and its `LatLng`.
  19256. * The default is to spawn a default `Marker`:
  19257. * ```js
  19258. * function(geoJsonPoint, latlng) {
  19259. * return L.marker(latlng);
  19260. * }
  19261. * ```
  19262. *
  19263. * @option style: Function = *
  19264. * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,
  19265. * called internally when data is added.
  19266. * The default value is to not override any defaults:
  19267. * ```js
  19268. * function (geoJsonFeature) {
  19269. * return {}
  19270. * }
  19271. * ```
  19272. *
  19273. * @option onEachFeature: Function = *
  19274. * A `Function` that will be called once for each created `Feature`, after it has
  19275. * been created and styled. Useful for attaching events and popups to features.
  19276. * The default is to do nothing with the newly created layers:
  19277. * ```js
  19278. * function (feature, layer) {}
  19279. * ```
  19280. *
  19281. * @option filter: Function = *
  19282. * A `Function` that will be used to decide whether to include a feature or not.
  19283. * The default is to include all features:
  19284. * ```js
  19285. * function (geoJsonFeature) {
  19286. * return true;
  19287. * }
  19288. * ```
  19289. * Note: dynamically changing the `filter` option will have effect only on newly
  19290. * added data. It will _not_ re-evaluate already included features.
  19291. *
  19292. * @option coordsToLatLng: Function = *
  19293. * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.
  19294. * The default is the `coordsToLatLng` static method.
  19295. *
  19296. * @option markersInheritOptions: Boolean = false
  19297. * Whether default Markers for "Point" type Features inherit from group options.
  19298. */
  19299. initialize: function initialize(geojson, options) {
  19300. setOptions(this, options);
  19301. this._layers = {};
  19302. if (geojson) {
  19303. this.addData(geojson);
  19304. }
  19305. },
  19306. // @method addData( <GeoJSON> data ): this
  19307. // Adds a GeoJSON object to the layer.
  19308. addData: function addData(geojson) {
  19309. var features = isArray(geojson) ? geojson : geojson.features,
  19310. i,
  19311. len,
  19312. feature;
  19313. if (features) {
  19314. for (i = 0, len = features.length; i < len; i++) {
  19315. // only add this if geometry or geometries are set and not null
  19316. feature = features[i];
  19317. if (feature.geometries || feature.geometry || feature.features || feature.coordinates) {
  19318. this.addData(feature);
  19319. }
  19320. }
  19321. return this;
  19322. }
  19323. var options = this.options;
  19324. if (options.filter && !options.filter(geojson)) {
  19325. return this;
  19326. }
  19327. var layer = geometryToLayer(geojson, options);
  19328. if (!layer) {
  19329. return this;
  19330. }
  19331. layer.feature = asFeature(geojson);
  19332. layer.defaultOptions = layer.options;
  19333. this.resetStyle(layer);
  19334. if (options.onEachFeature) {
  19335. options.onEachFeature(geojson, layer);
  19336. }
  19337. return this.addLayer(layer);
  19338. },
  19339. // @method resetStyle( <Path> layer? ): this
  19340. // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.
  19341. // If `layer` is omitted, the style of all features in the current layer is reset.
  19342. resetStyle: function resetStyle(layer) {
  19343. if (layer === undefined) {
  19344. return this.eachLayer(this.resetStyle, this);
  19345. }
  19346. // reset any custom styles
  19347. layer.options = extend({}, layer.defaultOptions);
  19348. this._setLayerStyle(layer, this.options.style);
  19349. return this;
  19350. },
  19351. // @method setStyle( <Function> style ): this
  19352. // Changes styles of GeoJSON vector layers with the given style function.
  19353. setStyle: function setStyle(style) {
  19354. return this.eachLayer(function (layer) {
  19355. this._setLayerStyle(layer, style);
  19356. }, this);
  19357. },
  19358. _setLayerStyle: function _setLayerStyle(layer, style) {
  19359. if (layer.setStyle) {
  19360. if (typeof style === 'function') {
  19361. style = style(layer.feature);
  19362. }
  19363. layer.setStyle(style);
  19364. }
  19365. }
  19366. });
  19367. // @section
  19368. // There are several static functions which can be called without instantiating L.GeoJSON:
  19369. // @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer
  19370. // Creates a `Layer` from a given GeoJSON feature. Can use a custom
  19371. // [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)
  19372. // functions if provided as options.
  19373. function geometryToLayer(geojson, options) {
  19374. var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,
  19375. coords = geometry ? geometry.coordinates : null,
  19376. layers = [],
  19377. pointToLayer = options && options.pointToLayer,
  19378. _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,
  19379. latlng,
  19380. latlngs,
  19381. i,
  19382. len;
  19383. if (!coords && !geometry) {
  19384. return null;
  19385. }
  19386. switch (geometry.type) {
  19387. case 'Point':
  19388. latlng = _coordsToLatLng(coords);
  19389. return _pointToLayer(pointToLayer, geojson, latlng, options);
  19390. case 'MultiPoint':
  19391. for (i = 0, len = coords.length; i < len; i++) {
  19392. latlng = _coordsToLatLng(coords[i]);
  19393. layers.push(_pointToLayer(pointToLayer, geojson, latlng, options));
  19394. }
  19395. return new FeatureGroup(layers);
  19396. case 'LineString':
  19397. case 'MultiLineString':
  19398. latlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);
  19399. return new Polyline(latlngs, options);
  19400. case 'Polygon':
  19401. case 'MultiPolygon':
  19402. latlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);
  19403. return new Polygon(latlngs, options);
  19404. case 'GeometryCollection':
  19405. for (i = 0, len = geometry.geometries.length; i < len; i++) {
  19406. var geoLayer = geometryToLayer({
  19407. geometry: geometry.geometries[i],
  19408. type: 'Feature',
  19409. properties: geojson.properties
  19410. }, options);
  19411. if (geoLayer) {
  19412. layers.push(geoLayer);
  19413. }
  19414. }
  19415. return new FeatureGroup(layers);
  19416. case 'FeatureCollection':
  19417. for (i = 0, len = geometry.features.length; i < len; i++) {
  19418. var featureLayer = geometryToLayer(geometry.features[i], options);
  19419. if (featureLayer) {
  19420. layers.push(featureLayer);
  19421. }
  19422. }
  19423. return new FeatureGroup(layers);
  19424. default:
  19425. throw new Error('Invalid GeoJSON object.');
  19426. }
  19427. }
  19428. function _pointToLayer(pointToLayerFn, geojson, latlng, options) {
  19429. return pointToLayerFn ? pointToLayerFn(geojson, latlng) : new Marker(latlng, options && options.markersInheritOptions && options);
  19430. }
  19431. // @function coordsToLatLng(coords: Array): LatLng
  19432. // Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)
  19433. // or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.
  19434. function coordsToLatLng(coords) {
  19435. return new LatLng(coords[1], coords[0], coords[2]);
  19436. }
  19437. // @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array
  19438. // Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.
  19439. // `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).
  19440. // Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.
  19441. function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {
  19442. var latlngs = [];
  19443. for (var i = 0, len = coords.length, latlng; i < len; i++) {
  19444. latlng = levelsDeep ? coordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) : (_coordsToLatLng || coordsToLatLng)(coords[i]);
  19445. latlngs.push(latlng);
  19446. }
  19447. return latlngs;
  19448. }
  19449. // @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array
  19450. // Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)
  19451. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function.
  19452. function latLngToCoords(latlng, precision) {
  19453. latlng = toLatLng(latlng);
  19454. return latlng.alt !== undefined ? [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] : [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)];
  19455. }
  19456. // @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array
  19457. // Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)
  19458. // `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.
  19459. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function.
  19460. function latLngsToCoords(latlngs, levelsDeep, closed, precision) {
  19461. var coords = [];
  19462. for (var i = 0, len = latlngs.length; i < len; i++) {
  19463. // Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion
  19464. coords.push(levelsDeep ? latLngsToCoords(latlngs[i], isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) : latLngToCoords(latlngs[i], precision));
  19465. }
  19466. if (!levelsDeep && closed) {
  19467. coords.push(coords[0].slice());
  19468. }
  19469. return coords;
  19470. }
  19471. function getFeature(layer, newGeometry) {
  19472. return layer.feature ? extend({}, layer.feature, {
  19473. geometry: newGeometry
  19474. }) : asFeature(newGeometry);
  19475. }
  19476. // @function asFeature(geojson: Object): Object
  19477. // Normalize GeoJSON geometries/features into GeoJSON features.
  19478. function asFeature(geojson) {
  19479. if (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {
  19480. return geojson;
  19481. }
  19482. return {
  19483. type: 'Feature',
  19484. properties: {},
  19485. geometry: geojson
  19486. };
  19487. }
  19488. var PointToGeoJSON = {
  19489. toGeoJSON: function toGeoJSON(precision) {
  19490. return getFeature(this, {
  19491. type: 'Point',
  19492. coordinates: latLngToCoords(this.getLatLng(), precision)
  19493. });
  19494. }
  19495. };
  19496. // @namespace Marker
  19497. // @section Other methods
  19498. // @method toGeoJSON(precision?: Number|false): Object
  19499. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.
  19500. // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).
  19501. Marker.include(PointToGeoJSON);
  19502. // @namespace CircleMarker
  19503. // @method toGeoJSON(precision?: Number|false): Object
  19504. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.
  19505. // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).
  19506. Circle.include(PointToGeoJSON);
  19507. CircleMarker.include(PointToGeoJSON);
  19508. // @namespace Polyline
  19509. // @method toGeoJSON(precision?: Number|false): Object
  19510. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.
  19511. // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).
  19512. Polyline.include({
  19513. toGeoJSON: function toGeoJSON(precision) {
  19514. var multi = !isFlat(this._latlngs);
  19515. var coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);
  19516. return getFeature(this, {
  19517. type: (multi ? 'Multi' : '') + 'LineString',
  19518. coordinates: coords
  19519. });
  19520. }
  19521. });
  19522. // @namespace Polygon
  19523. // @method toGeoJSON(precision?: Number|false): Object
  19524. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.
  19525. // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).
  19526. Polygon.include({
  19527. toGeoJSON: function toGeoJSON(precision) {
  19528. var holes = !isFlat(this._latlngs),
  19529. multi = holes && !isFlat(this._latlngs[0]);
  19530. var coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);
  19531. if (!holes) {
  19532. coords = [coords];
  19533. }
  19534. return getFeature(this, {
  19535. type: (multi ? 'Multi' : '') + 'Polygon',
  19536. coordinates: coords
  19537. });
  19538. }
  19539. });
  19540. // @namespace LayerGroup
  19541. LayerGroup.include({
  19542. toMultiPoint: function toMultiPoint(precision) {
  19543. var coords = [];
  19544. this.eachLayer(function (layer) {
  19545. coords.push(layer.toGeoJSON(precision).geometry.coordinates);
  19546. });
  19547. return getFeature(this, {
  19548. type: 'MultiPoint',
  19549. coordinates: coords
  19550. });
  19551. },
  19552. // @method toGeoJSON(precision?: Number|false): Object
  19553. // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.
  19554. // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).
  19555. toGeoJSON: function toGeoJSON(precision) {
  19556. var type = this.feature && this.feature.geometry && this.feature.geometry.type;
  19557. if (type === 'MultiPoint') {
  19558. return this.toMultiPoint(precision);
  19559. }
  19560. var isGeometryCollection = type === 'GeometryCollection',
  19561. jsons = [];
  19562. this.eachLayer(function (layer) {
  19563. if (layer.toGeoJSON) {
  19564. var json = layer.toGeoJSON(precision);
  19565. if (isGeometryCollection) {
  19566. jsons.push(json.geometry);
  19567. } else {
  19568. var feature = asFeature(json);
  19569. // Squash nested feature collections
  19570. if (feature.type === 'FeatureCollection') {
  19571. jsons.push.apply(jsons, feature.features);
  19572. } else {
  19573. jsons.push(feature);
  19574. }
  19575. }
  19576. }
  19577. });
  19578. if (isGeometryCollection) {
  19579. return getFeature(this, {
  19580. geometries: jsons,
  19581. type: 'GeometryCollection'
  19582. });
  19583. }
  19584. return {
  19585. type: 'FeatureCollection',
  19586. features: jsons
  19587. };
  19588. }
  19589. });
  19590. // @namespace GeoJSON
  19591. // @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)
  19592. // Creates a GeoJSON layer. Optionally accepts an object in
  19593. // [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map
  19594. // (you can alternatively add it later with `addData` method) and an `options` object.
  19595. function geoJSON(geojson, options) {
  19596. return new GeoJSON(geojson, options);
  19597. }
  19598. // Backward compatibility.
  19599. var geoJson = geoJSON;
  19600. /*
  19601. * @class ImageOverlay
  19602. * @aka L.ImageOverlay
  19603. * @inherits Interactive layer
  19604. *
  19605. * Used to load and display a single image over specific bounds of the map. Extends `Layer`.
  19606. *
  19607. * @example
  19608. *
  19609. * ```js
  19610. * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',
  19611. * imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];
  19612. * L.imageOverlay(imageUrl, imageBounds).addTo(map);
  19613. * ```
  19614. */
  19615. var ImageOverlay = Layer.extend({
  19616. // @section
  19617. // @aka ImageOverlay options
  19618. options: {
  19619. // @option opacity: Number = 1.0
  19620. // The opacity of the image overlay.
  19621. opacity: 1,
  19622. // @option alt: String = ''
  19623. // Text for the `alt` attribute of the image (useful for accessibility).
  19624. alt: '',
  19625. // @option interactive: Boolean = false
  19626. // If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.
  19627. interactive: false,
  19628. // @option crossOrigin: Boolean|String = false
  19629. // Whether the crossOrigin attribute will be added to the image.
  19630. // If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.
  19631. // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.
  19632. crossOrigin: false,
  19633. // @option errorOverlayUrl: String = ''
  19634. // URL to the overlay image to show in place of the overlay that failed to load.
  19635. errorOverlayUrl: '',
  19636. // @option zIndex: Number = 1
  19637. // The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.
  19638. zIndex: 1,
  19639. // @option className: String = ''
  19640. // A custom class name to assign to the image. Empty by default.
  19641. className: ''
  19642. },
  19643. initialize: function initialize(url, bounds, options) {
  19644. // (String, LatLngBounds, Object)
  19645. this._url = url;
  19646. this._bounds = toLatLngBounds(bounds);
  19647. setOptions(this, options);
  19648. },
  19649. onAdd: function onAdd() {
  19650. if (!this._image) {
  19651. this._initImage();
  19652. if (this.options.opacity < 1) {
  19653. this._updateOpacity();
  19654. }
  19655. }
  19656. if (this.options.interactive) {
  19657. addClass(this._image, 'leaflet-interactive');
  19658. this.addInteractiveTarget(this._image);
  19659. }
  19660. this.getPane().appendChild(this._image);
  19661. this._reset();
  19662. },
  19663. onRemove: function onRemove() {
  19664. _remove(this._image);
  19665. if (this.options.interactive) {
  19666. this.removeInteractiveTarget(this._image);
  19667. }
  19668. },
  19669. // @method setOpacity(opacity: Number): this
  19670. // Sets the opacity of the overlay.
  19671. setOpacity: function setOpacity(opacity) {
  19672. this.options.opacity = opacity;
  19673. if (this._image) {
  19674. this._updateOpacity();
  19675. }
  19676. return this;
  19677. },
  19678. setStyle: function setStyle(styleOpts) {
  19679. if (styleOpts.opacity) {
  19680. this.setOpacity(styleOpts.opacity);
  19681. }
  19682. return this;
  19683. },
  19684. // @method bringToFront(): this
  19685. // Brings the layer to the top of all overlays.
  19686. bringToFront: function bringToFront() {
  19687. if (this._map) {
  19688. toFront(this._image);
  19689. }
  19690. return this;
  19691. },
  19692. // @method bringToBack(): this
  19693. // Brings the layer to the bottom of all overlays.
  19694. bringToBack: function bringToBack() {
  19695. if (this._map) {
  19696. toBack(this._image);
  19697. }
  19698. return this;
  19699. },
  19700. // @method setUrl(url: String): this
  19701. // Changes the URL of the image.
  19702. setUrl: function setUrl(url) {
  19703. this._url = url;
  19704. if (this._image) {
  19705. this._image.src = url;
  19706. }
  19707. return this;
  19708. },
  19709. // @method setBounds(bounds: LatLngBounds): this
  19710. // Update the bounds that this ImageOverlay covers
  19711. setBounds: function setBounds(bounds) {
  19712. this._bounds = toLatLngBounds(bounds);
  19713. if (this._map) {
  19714. this._reset();
  19715. }
  19716. return this;
  19717. },
  19718. getEvents: function getEvents() {
  19719. var events = {
  19720. zoom: this._reset,
  19721. viewreset: this._reset
  19722. };
  19723. if (this._zoomAnimated) {
  19724. events.zoomanim = this._animateZoom;
  19725. }
  19726. return events;
  19727. },
  19728. // @method setZIndex(value: Number): this
  19729. // Changes the [zIndex](#imageoverlay-zindex) of the image overlay.
  19730. setZIndex: function setZIndex(value) {
  19731. this.options.zIndex = value;
  19732. this._updateZIndex();
  19733. return this;
  19734. },
  19735. // @method getBounds(): LatLngBounds
  19736. // Get the bounds that this ImageOverlay covers
  19737. getBounds: function getBounds() {
  19738. return this._bounds;
  19739. },
  19740. // @method getElement(): HTMLElement
  19741. // Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)
  19742. // used by this overlay.
  19743. getElement: function getElement() {
  19744. return this._image;
  19745. },
  19746. _initImage: function _initImage() {
  19747. var wasElementSupplied = this._url.tagName === 'IMG';
  19748. var img = this._image = wasElementSupplied ? this._url : create$1('img');
  19749. addClass(img, 'leaflet-image-layer');
  19750. if (this._zoomAnimated) {
  19751. addClass(img, 'leaflet-zoom-animated');
  19752. }
  19753. if (this.options.className) {
  19754. addClass(img, this.options.className);
  19755. }
  19756. img.onselectstart = falseFn;
  19757. img.onmousemove = falseFn;
  19758. // @event load: Event
  19759. // Fired when the ImageOverlay layer has loaded its image
  19760. img.onload = bind(this.fire, this, 'load');
  19761. img.onerror = bind(this._overlayOnError, this, 'error');
  19762. if (this.options.crossOrigin || this.options.crossOrigin === '') {
  19763. img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;
  19764. }
  19765. if (this.options.zIndex) {
  19766. this._updateZIndex();
  19767. }
  19768. if (wasElementSupplied) {
  19769. this._url = img.src;
  19770. return;
  19771. }
  19772. img.src = this._url;
  19773. img.alt = this.options.alt;
  19774. },
  19775. _animateZoom: function _animateZoom(e) {
  19776. var scale = this._map.getZoomScale(e.zoom),
  19777. offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;
  19778. setTransform(this._image, offset, scale);
  19779. },
  19780. _reset: function _reset() {
  19781. var image = this._image,
  19782. bounds = new Bounds(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map.latLngToLayerPoint(this._bounds.getSouthEast())),
  19783. size = bounds.getSize();
  19784. setPosition(image, bounds.min);
  19785. image.style.width = size.x + 'px';
  19786. image.style.height = size.y + 'px';
  19787. },
  19788. _updateOpacity: function _updateOpacity() {
  19789. _setOpacity(this._image, this.options.opacity);
  19790. },
  19791. _updateZIndex: function _updateZIndex() {
  19792. if (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {
  19793. this._image.style.zIndex = this.options.zIndex;
  19794. }
  19795. },
  19796. _overlayOnError: function _overlayOnError() {
  19797. // @event error: Event
  19798. // Fired when the ImageOverlay layer fails to load its image
  19799. this.fire('error');
  19800. var errorUrl = this.options.errorOverlayUrl;
  19801. if (errorUrl && this._url !== errorUrl) {
  19802. this._url = errorUrl;
  19803. this._image.src = errorUrl;
  19804. }
  19805. },
  19806. // @method getCenter(): LatLng
  19807. // Returns the center of the ImageOverlay.
  19808. getCenter: function getCenter() {
  19809. return this._bounds.getCenter();
  19810. }
  19811. });
  19812. // @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)
  19813. // Instantiates an image overlay object given the URL of the image and the
  19814. // geographical bounds it is tied to.
  19815. var imageOverlay = function imageOverlay(url, bounds, options) {
  19816. return new ImageOverlay(url, bounds, options);
  19817. };
  19818. /*
  19819. * @class VideoOverlay
  19820. * @aka L.VideoOverlay
  19821. * @inherits ImageOverlay
  19822. *
  19823. * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.
  19824. *
  19825. * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)
  19826. * HTML5 element.
  19827. *
  19828. * @example
  19829. *
  19830. * ```js
  19831. * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',
  19832. * videoBounds = [[ 32, -130], [ 13, -100]];
  19833. * L.videoOverlay(videoUrl, videoBounds ).addTo(map);
  19834. * ```
  19835. */
  19836. var VideoOverlay = ImageOverlay.extend({
  19837. // @section
  19838. // @aka VideoOverlay options
  19839. options: {
  19840. // @option autoplay: Boolean = true
  19841. // Whether the video starts playing automatically when loaded.
  19842. // On some browsers autoplay will only work with `muted: true`
  19843. autoplay: true,
  19844. // @option loop: Boolean = true
  19845. // Whether the video will loop back to the beginning when played.
  19846. loop: true,
  19847. // @option keepAspectRatio: Boolean = true
  19848. // Whether the video will save aspect ratio after the projection.
  19849. // Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)
  19850. keepAspectRatio: true,
  19851. // @option muted: Boolean = false
  19852. // Whether the video starts on mute when loaded.
  19853. muted: false,
  19854. // @option playsInline: Boolean = true
  19855. // Mobile browsers will play the video right where it is instead of open it up in fullscreen mode.
  19856. playsInline: true
  19857. },
  19858. _initImage: function _initImage() {
  19859. var wasElementSupplied = this._url.tagName === 'VIDEO';
  19860. var vid = this._image = wasElementSupplied ? this._url : create$1('video');
  19861. addClass(vid, 'leaflet-image-layer');
  19862. if (this._zoomAnimated) {
  19863. addClass(vid, 'leaflet-zoom-animated');
  19864. }
  19865. if (this.options.className) {
  19866. addClass(vid, this.options.className);
  19867. }
  19868. vid.onselectstart = falseFn;
  19869. vid.onmousemove = falseFn;
  19870. // @event load: Event
  19871. // Fired when the video has finished loading the first frame
  19872. vid.onloadeddata = bind(this.fire, this, 'load');
  19873. if (wasElementSupplied) {
  19874. var sourceElements = vid.getElementsByTagName('source');
  19875. var sources = [];
  19876. for (var j = 0; j < sourceElements.length; j++) {
  19877. sources.push(sourceElements[j].src);
  19878. }
  19879. this._url = sourceElements.length > 0 ? sources : [vid.src];
  19880. return;
  19881. }
  19882. if (!isArray(this._url)) {
  19883. this._url = [this._url];
  19884. }
  19885. if (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {
  19886. vid.style['objectFit'] = 'fill';
  19887. }
  19888. vid.autoplay = !!this.options.autoplay;
  19889. vid.loop = !!this.options.loop;
  19890. vid.muted = !!this.options.muted;
  19891. vid.playsInline = !!this.options.playsInline;
  19892. for (var i = 0; i < this._url.length; i++) {
  19893. var source = create$1('source');
  19894. source.src = this._url[i];
  19895. vid.appendChild(source);
  19896. }
  19897. }
  19898. // @method getElement(): HTMLVideoElement
  19899. // Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)
  19900. // used by this overlay.
  19901. });
  19902. // @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)
  19903. // Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the
  19904. // geographical bounds it is tied to.
  19905. function videoOverlay(video, bounds, options) {
  19906. return new VideoOverlay(video, bounds, options);
  19907. }
  19908. /*
  19909. * @class SVGOverlay
  19910. * @aka L.SVGOverlay
  19911. * @inherits ImageOverlay
  19912. *
  19913. * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.
  19914. *
  19915. * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.
  19916. *
  19917. * @example
  19918. *
  19919. * ```js
  19920. * var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  19921. * svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg");
  19922. * svgElement.setAttribute('viewBox', "0 0 200 200");
  19923. * svgElement.innerHTML = '<rect width="200" height="200"/><rect x="75" y="23" width="50" height="50" style="fill:red"/><rect x="75" y="123" width="50" height="50" style="fill:#0013ff"/>';
  19924. * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];
  19925. * L.svgOverlay(svgElement, svgElementBounds).addTo(map);
  19926. * ```
  19927. */
  19928. var SVGOverlay = ImageOverlay.extend({
  19929. _initImage: function _initImage() {
  19930. var el = this._image = this._url;
  19931. addClass(el, 'leaflet-image-layer');
  19932. if (this._zoomAnimated) {
  19933. addClass(el, 'leaflet-zoom-animated');
  19934. }
  19935. if (this.options.className) {
  19936. addClass(el, this.options.className);
  19937. }
  19938. el.onselectstart = falseFn;
  19939. el.onmousemove = falseFn;
  19940. }
  19941. // @method getElement(): SVGElement
  19942. // Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)
  19943. // used by this overlay.
  19944. });
  19945. // @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)
  19946. // Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.
  19947. // A viewBox attribute is required on the SVG element to zoom in and out properly.
  19948. function svgOverlay(el, bounds, options) {
  19949. return new SVGOverlay(el, bounds, options);
  19950. }
  19951. /*
  19952. * @class DivOverlay
  19953. * @inherits Interactive layer
  19954. * @aka L.DivOverlay
  19955. * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins.
  19956. */
  19957. // @namespace DivOverlay
  19958. var DivOverlay = Layer.extend({
  19959. // @section
  19960. // @aka DivOverlay options
  19961. options: {
  19962. // @option interactive: Boolean = false
  19963. // If true, the popup/tooltip will listen to the mouse events.
  19964. interactive: false,
  19965. // @option offset: Point = Point(0, 0)
  19966. // The offset of the overlay position.
  19967. offset: [0, 0],
  19968. // @option className: String = ''
  19969. // A custom CSS class name to assign to the overlay.
  19970. className: '',
  19971. // @option pane: String = undefined
  19972. // `Map pane` where the overlay will be added.
  19973. pane: undefined,
  19974. // @option content: String|HTMLElement|Function = ''
  19975. // Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be
  19976. // passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.
  19977. content: ''
  19978. },
  19979. initialize: function initialize(options, source) {
  19980. if (options && (options instanceof LatLng || isArray(options))) {
  19981. this._latlng = toLatLng(options);
  19982. setOptions(this, source);
  19983. } else {
  19984. setOptions(this, options);
  19985. this._source = source;
  19986. }
  19987. if (this.options.content) {
  19988. this._content = this.options.content;
  19989. }
  19990. },
  19991. // @method openOn(map: Map): this
  19992. // Adds the overlay to the map.
  19993. // Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`.
  19994. openOn: function openOn(map) {
  19995. map = arguments.length ? map : this._source._map; // experimental, not the part of public api
  19996. if (!map.hasLayer(this)) {
  19997. map.addLayer(this);
  19998. }
  19999. return this;
  20000. },
  20001. // @method close(): this
  20002. // Closes the overlay.
  20003. // Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)`
  20004. // and `layer.closePopup()`/`.closeTooltip()`.
  20005. close: function close() {
  20006. if (this._map) {
  20007. this._map.removeLayer(this);
  20008. }
  20009. return this;
  20010. },
  20011. // @method toggle(layer?: Layer): this
  20012. // Opens or closes the overlay bound to layer depending on its current state.
  20013. // Argument may be omitted only for overlay bound to layer.
  20014. // Alternative to `layer.togglePopup()`/`.toggleTooltip()`.
  20015. toggle: function toggle(layer) {
  20016. if (this._map) {
  20017. this.close();
  20018. } else {
  20019. if (arguments.length) {
  20020. this._source = layer;
  20021. } else {
  20022. layer = this._source;
  20023. }
  20024. this._prepareOpen();
  20025. // open the overlay on the map
  20026. this.openOn(layer._map);
  20027. }
  20028. return this;
  20029. },
  20030. onAdd: function onAdd(map) {
  20031. this._zoomAnimated = map._zoomAnimated;
  20032. if (!this._container) {
  20033. this._initLayout();
  20034. }
  20035. if (map._fadeAnimated) {
  20036. _setOpacity(this._container, 0);
  20037. }
  20038. clearTimeout(this._removeTimeout);
  20039. this.getPane().appendChild(this._container);
  20040. this.update();
  20041. if (map._fadeAnimated) {
  20042. _setOpacity(this._container, 1);
  20043. }
  20044. this.bringToFront();
  20045. if (this.options.interactive) {
  20046. addClass(this._container, 'leaflet-interactive');
  20047. this.addInteractiveTarget(this._container);
  20048. }
  20049. },
  20050. onRemove: function onRemove(map) {
  20051. if (map._fadeAnimated) {
  20052. _setOpacity(this._container, 0);
  20053. this._removeTimeout = setTimeout(bind(_remove, undefined, this._container), 200);
  20054. } else {
  20055. _remove(this._container);
  20056. }
  20057. if (this.options.interactive) {
  20058. removeClass(this._container, 'leaflet-interactive');
  20059. this.removeInteractiveTarget(this._container);
  20060. }
  20061. },
  20062. // @namespace DivOverlay
  20063. // @method getLatLng: LatLng
  20064. // Returns the geographical point of the overlay.
  20065. getLatLng: function getLatLng() {
  20066. return this._latlng;
  20067. },
  20068. // @method setLatLng(latlng: LatLng): this
  20069. // Sets the geographical point where the overlay will open.
  20070. setLatLng: function setLatLng(latlng) {
  20071. this._latlng = toLatLng(latlng);
  20072. if (this._map) {
  20073. this._updatePosition();
  20074. this._adjustPan();
  20075. }
  20076. return this;
  20077. },
  20078. // @method getContent: String|HTMLElement
  20079. // Returns the content of the overlay.
  20080. getContent: function getContent() {
  20081. return this._content;
  20082. },
  20083. // @method setContent(htmlContent: String|HTMLElement|Function): this
  20084. // Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function.
  20085. // The function should return a `String` or `HTMLElement` to be used in the overlay.
  20086. setContent: function setContent(content) {
  20087. this._content = content;
  20088. this.update();
  20089. return this;
  20090. },
  20091. // @method getElement: String|HTMLElement
  20092. // Returns the HTML container of the overlay.
  20093. getElement: function getElement() {
  20094. return this._container;
  20095. },
  20096. // @method update: null
  20097. // Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded.
  20098. update: function update() {
  20099. if (!this._map) {
  20100. return;
  20101. }
  20102. this._container.style.visibility = 'hidden';
  20103. this._updateContent();
  20104. this._updateLayout();
  20105. this._updatePosition();
  20106. this._container.style.visibility = '';
  20107. this._adjustPan();
  20108. },
  20109. getEvents: function getEvents() {
  20110. var events = {
  20111. zoom: this._updatePosition,
  20112. viewreset: this._updatePosition
  20113. };
  20114. if (this._zoomAnimated) {
  20115. events.zoomanim = this._animateZoom;
  20116. }
  20117. return events;
  20118. },
  20119. // @method isOpen: Boolean
  20120. // Returns `true` when the overlay is visible on the map.
  20121. isOpen: function isOpen() {
  20122. return !!this._map && this._map.hasLayer(this);
  20123. },
  20124. // @method bringToFront: this
  20125. // Brings this overlay in front of other overlays (in the same map pane).
  20126. bringToFront: function bringToFront() {
  20127. if (this._map) {
  20128. toFront(this._container);
  20129. }
  20130. return this;
  20131. },
  20132. // @method bringToBack: this
  20133. // Brings this overlay to the back of other overlays (in the same map pane).
  20134. bringToBack: function bringToBack() {
  20135. if (this._map) {
  20136. toBack(this._container);
  20137. }
  20138. return this;
  20139. },
  20140. // prepare bound overlay to open: update latlng pos / content source (for FeatureGroup)
  20141. _prepareOpen: function _prepareOpen(latlng) {
  20142. var source = this._source;
  20143. if (!source._map) {
  20144. return false;
  20145. }
  20146. if (source instanceof FeatureGroup) {
  20147. source = null;
  20148. var layers = this._source._layers;
  20149. for (var id in layers) {
  20150. if (layers[id]._map) {
  20151. source = layers[id];
  20152. break;
  20153. }
  20154. }
  20155. if (!source) {
  20156. return false;
  20157. } // Unable to get source layer.
  20158. // set overlay source to this layer
  20159. this._source = source;
  20160. }
  20161. if (!latlng) {
  20162. if (source.getCenter) {
  20163. latlng = source.getCenter();
  20164. } else if (source.getLatLng) {
  20165. latlng = source.getLatLng();
  20166. } else if (source.getBounds) {
  20167. latlng = source.getBounds().getCenter();
  20168. } else {
  20169. throw new Error('Unable to get source layer LatLng.');
  20170. }
  20171. }
  20172. this.setLatLng(latlng);
  20173. if (this._map) {
  20174. // update the overlay (content, layout, etc...)
  20175. this.update();
  20176. }
  20177. return true;
  20178. },
  20179. _updateContent: function _updateContent() {
  20180. if (!this._content) {
  20181. return;
  20182. }
  20183. var node = this._contentNode;
  20184. var content = typeof this._content === 'function' ? this._content(this._source || this) : this._content;
  20185. if (typeof content === 'string') {
  20186. node.innerHTML = content;
  20187. } else {
  20188. while (node.hasChildNodes()) {
  20189. node.removeChild(node.firstChild);
  20190. }
  20191. node.appendChild(content);
  20192. }
  20193. // @namespace DivOverlay
  20194. // @section DivOverlay events
  20195. // @event contentupdate: Event
  20196. // Fired when the content of the overlay is updated
  20197. this.fire('contentupdate');
  20198. },
  20199. _updatePosition: function _updatePosition() {
  20200. if (!this._map) {
  20201. return;
  20202. }
  20203. var pos = this._map.latLngToLayerPoint(this._latlng),
  20204. offset = toPoint(this.options.offset),
  20205. anchor = this._getAnchor();
  20206. if (this._zoomAnimated) {
  20207. setPosition(this._container, pos.add(anchor));
  20208. } else {
  20209. offset = offset.add(pos).add(anchor);
  20210. }
  20211. var bottom = this._containerBottom = -offset.y,
  20212. left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;
  20213. // bottom position the overlay in case the height of the overlay changes (images loading etc)
  20214. this._container.style.bottom = bottom + 'px';
  20215. this._container.style.left = left + 'px';
  20216. },
  20217. _getAnchor: function _getAnchor() {
  20218. return [0, 0];
  20219. }
  20220. });
  20221. Map.include({
  20222. _initOverlay: function _initOverlay(OverlayClass, content, latlng, options) {
  20223. var overlay = content;
  20224. if (!(overlay instanceof OverlayClass)) {
  20225. overlay = new OverlayClass(options).setContent(content);
  20226. }
  20227. if (latlng) {
  20228. overlay.setLatLng(latlng);
  20229. }
  20230. return overlay;
  20231. }
  20232. });
  20233. Layer.include({
  20234. _initOverlay: function _initOverlay(OverlayClass, old, content, options) {
  20235. var overlay = content;
  20236. if (overlay instanceof OverlayClass) {
  20237. setOptions(overlay, options);
  20238. overlay._source = this;
  20239. } else {
  20240. overlay = old && !options ? old : new OverlayClass(options, this);
  20241. overlay.setContent(content);
  20242. }
  20243. return overlay;
  20244. }
  20245. });
  20246. /*
  20247. * @class Popup
  20248. * @inherits DivOverlay
  20249. * @aka L.Popup
  20250. * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to
  20251. * open popups while making sure that only one popup is open at one time
  20252. * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.
  20253. *
  20254. * @example
  20255. *
  20256. * If you want to just bind a popup to marker click and then open it, it's really easy:
  20257. *
  20258. * ```js
  20259. * marker.bindPopup(popupContent).openPopup();
  20260. * ```
  20261. * Path overlays like polylines also have a `bindPopup` method.
  20262. *
  20263. * A popup can be also standalone:
  20264. *
  20265. * ```js
  20266. * var popup = L.popup()
  20267. * .setLatLng(latlng)
  20268. * .setContent('<p>Hello world!<br />This is a nice popup.</p>')
  20269. * .openOn(map);
  20270. * ```
  20271. * or
  20272. * ```js
  20273. * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')
  20274. * .openOn(map);
  20275. * ```
  20276. */
  20277. // @namespace Popup
  20278. var Popup = DivOverlay.extend({
  20279. // @section
  20280. // @aka Popup options
  20281. options: {
  20282. // @option pane: String = 'popupPane'
  20283. // `Map pane` where the popup will be added.
  20284. pane: 'popupPane',
  20285. // @option offset: Point = Point(0, 7)
  20286. // The offset of the popup position.
  20287. offset: [0, 7],
  20288. // @option maxWidth: Number = 300
  20289. // Max width of the popup, in pixels.
  20290. maxWidth: 300,
  20291. // @option minWidth: Number = 50
  20292. // Min width of the popup, in pixels.
  20293. minWidth: 50,
  20294. // @option maxHeight: Number = null
  20295. // If set, creates a scrollable container of the given height
  20296. // inside a popup if its content exceeds it.
  20297. // The scrollable container can be styled using the
  20298. // `leaflet-popup-scrolled` CSS class selector.
  20299. maxHeight: null,
  20300. // @option autoPan: Boolean = true
  20301. // Set it to `false` if you don't want the map to do panning animation
  20302. // to fit the opened popup.
  20303. autoPan: true,
  20304. // @option autoPanPaddingTopLeft: Point = null
  20305. // The margin between the popup and the top left corner of the map
  20306. // view after autopanning was performed.
  20307. autoPanPaddingTopLeft: null,
  20308. // @option autoPanPaddingBottomRight: Point = null
  20309. // The margin between the popup and the bottom right corner of the map
  20310. // view after autopanning was performed.
  20311. autoPanPaddingBottomRight: null,
  20312. // @option autoPanPadding: Point = Point(5, 5)
  20313. // Equivalent of setting both top left and bottom right autopan padding to the same value.
  20314. autoPanPadding: [5, 5],
  20315. // @option keepInView: Boolean = false
  20316. // Set it to `true` if you want to prevent users from panning the popup
  20317. // off of the screen while it is open.
  20318. keepInView: false,
  20319. // @option closeButton: Boolean = true
  20320. // Controls the presence of a close button in the popup.
  20321. closeButton: true,
  20322. // @option autoClose: Boolean = true
  20323. // Set it to `false` if you want to override the default behavior of
  20324. // the popup closing when another popup is opened.
  20325. autoClose: true,
  20326. // @option closeOnEscapeKey: Boolean = true
  20327. // Set it to `false` if you want to override the default behavior of
  20328. // the ESC key for closing of the popup.
  20329. closeOnEscapeKey: true,
  20330. // @option closeOnClick: Boolean = *
  20331. // Set it if you want to override the default behavior of the popup closing when user clicks
  20332. // on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.
  20333. // @option className: String = ''
  20334. // A custom CSS class name to assign to the popup.
  20335. className: ''
  20336. },
  20337. // @namespace Popup
  20338. // @method openOn(map: Map): this
  20339. // Alternative to `map.openPopup(popup)`.
  20340. // Adds the popup to the map and closes the previous one.
  20341. openOn: function openOn(map) {
  20342. map = arguments.length ? map : this._source._map; // experimental, not the part of public api
  20343. if (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) {
  20344. map.removeLayer(map._popup);
  20345. }
  20346. map._popup = this;
  20347. return DivOverlay.prototype.openOn.call(this, map);
  20348. },
  20349. onAdd: function onAdd(map) {
  20350. DivOverlay.prototype.onAdd.call(this, map);
  20351. // @namespace Map
  20352. // @section Popup events
  20353. // @event popupopen: PopupEvent
  20354. // Fired when a popup is opened in the map
  20355. map.fire('popupopen', {
  20356. popup: this
  20357. });
  20358. if (this._source) {
  20359. // @namespace Layer
  20360. // @section Popup events
  20361. // @event popupopen: PopupEvent
  20362. // Fired when a popup bound to this layer is opened
  20363. this._source.fire('popupopen', {
  20364. popup: this
  20365. }, true);
  20366. // For non-path layers, we toggle the popup when clicking
  20367. // again the layer, so prevent the map to reopen it.
  20368. if (!(this._source instanceof Path)) {
  20369. this._source.on('preclick', stopPropagation);
  20370. }
  20371. }
  20372. },
  20373. onRemove: function onRemove(map) {
  20374. DivOverlay.prototype.onRemove.call(this, map);
  20375. // @namespace Map
  20376. // @section Popup events
  20377. // @event popupclose: PopupEvent
  20378. // Fired when a popup in the map is closed
  20379. map.fire('popupclose', {
  20380. popup: this
  20381. });
  20382. if (this._source) {
  20383. // @namespace Layer
  20384. // @section Popup events
  20385. // @event popupclose: PopupEvent
  20386. // Fired when a popup bound to this layer is closed
  20387. this._source.fire('popupclose', {
  20388. popup: this
  20389. }, true);
  20390. if (!(this._source instanceof Path)) {
  20391. this._source.off('preclick', stopPropagation);
  20392. }
  20393. }
  20394. },
  20395. getEvents: function getEvents() {
  20396. var events = DivOverlay.prototype.getEvents.call(this);
  20397. if (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {
  20398. events.preclick = this.close;
  20399. }
  20400. if (this.options.keepInView) {
  20401. events.moveend = this._adjustPan;
  20402. }
  20403. return events;
  20404. },
  20405. _initLayout: function _initLayout() {
  20406. var prefix = 'leaflet-popup',
  20407. container = this._container = create$1('div', prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-animated');
  20408. var wrapper = this._wrapper = create$1('div', prefix + '-content-wrapper', container);
  20409. this._contentNode = create$1('div', prefix + '-content', wrapper);
  20410. disableClickPropagation(container);
  20411. disableScrollPropagation(this._contentNode);
  20412. on(container, 'contextmenu', stopPropagation);
  20413. this._tipContainer = create$1('div', prefix + '-tip-container', container);
  20414. this._tip = create$1('div', prefix + '-tip', this._tipContainer);
  20415. if (this.options.closeButton) {
  20416. var closeButton = this._closeButton = create$1('a', prefix + '-close-button', container);
  20417. closeButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399
  20418. closeButton.setAttribute('aria-label', 'Close popup');
  20419. closeButton.href = '#close';
  20420. closeButton.innerHTML = '<span aria-hidden="true">&#215;</span>';
  20421. on(closeButton, 'click', function (ev) {
  20422. preventDefault(ev);
  20423. this.close();
  20424. }, this);
  20425. }
  20426. },
  20427. _updateLayout: function _updateLayout() {
  20428. var container = this._contentNode,
  20429. style = container.style;
  20430. style.width = '';
  20431. style.whiteSpace = 'nowrap';
  20432. var width = container.offsetWidth;
  20433. width = Math.min(width, this.options.maxWidth);
  20434. width = Math.max(width, this.options.minWidth);
  20435. style.width = width + 1 + 'px';
  20436. style.whiteSpace = '';
  20437. style.height = '';
  20438. var height = container.offsetHeight,
  20439. maxHeight = this.options.maxHeight,
  20440. scrolledClass = 'leaflet-popup-scrolled';
  20441. if (maxHeight && height > maxHeight) {
  20442. style.height = maxHeight + 'px';
  20443. addClass(container, scrolledClass);
  20444. } else {
  20445. removeClass(container, scrolledClass);
  20446. }
  20447. this._containerWidth = this._container.offsetWidth;
  20448. },
  20449. _animateZoom: function _animateZoom(e) {
  20450. var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),
  20451. anchor = this._getAnchor();
  20452. setPosition(this._container, pos.add(anchor));
  20453. },
  20454. _adjustPan: function _adjustPan() {
  20455. if (!this.options.autoPan) {
  20456. return;
  20457. }
  20458. if (this._map._panAnim) {
  20459. this._map._panAnim.stop();
  20460. }
  20461. // We can endlessly recurse if keepInView is set and the view resets.
  20462. // Let's guard against that by exiting early if we're responding to our own autopan.
  20463. if (this._autopanning) {
  20464. this._autopanning = false;
  20465. return;
  20466. }
  20467. var map = this._map,
  20468. marginBottom = parseInt(getStyle(this._container, 'marginBottom'), 10) || 0,
  20469. containerHeight = this._container.offsetHeight + marginBottom,
  20470. containerWidth = this._containerWidth,
  20471. layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);
  20472. layerPos._add(getPosition(this._container));
  20473. var containerPos = map.layerPointToContainerPoint(layerPos),
  20474. padding = toPoint(this.options.autoPanPadding),
  20475. paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),
  20476. paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),
  20477. size = map.getSize(),
  20478. dx = 0,
  20479. dy = 0;
  20480. if (containerPos.x + containerWidth + paddingBR.x > size.x) {
  20481. // right
  20482. dx = containerPos.x + containerWidth - size.x + paddingBR.x;
  20483. }
  20484. if (containerPos.x - dx - paddingTL.x < 0) {
  20485. // left
  20486. dx = containerPos.x - paddingTL.x;
  20487. }
  20488. if (containerPos.y + containerHeight + paddingBR.y > size.y) {
  20489. // bottom
  20490. dy = containerPos.y + containerHeight - size.y + paddingBR.y;
  20491. }
  20492. if (containerPos.y - dy - paddingTL.y < 0) {
  20493. // top
  20494. dy = containerPos.y - paddingTL.y;
  20495. }
  20496. // @namespace Map
  20497. // @section Popup events
  20498. // @event autopanstart: Event
  20499. // Fired when the map starts autopanning when opening a popup.
  20500. if (dx || dy) {
  20501. // Track that we're autopanning, as this function will be re-ran on moveend
  20502. if (this.options.keepInView) {
  20503. this._autopanning = true;
  20504. }
  20505. map.fire('autopanstart').panBy([dx, dy]);
  20506. }
  20507. },
  20508. _getAnchor: function _getAnchor() {
  20509. // Where should we anchor the popup on the source layer?
  20510. return toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);
  20511. }
  20512. });
  20513. // @namespace Popup
  20514. // @factory L.popup(options?: Popup options, source?: Layer)
  20515. // Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.
  20516. // @alternative
  20517. // @factory L.popup(latlng: LatLng, options?: Popup options)
  20518. // Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.
  20519. var popup = function popup(options, source) {
  20520. return new Popup(options, source);
  20521. };
  20522. /* @namespace Map
  20523. * @section Interaction Options
  20524. * @option closePopupOnClick: Boolean = true
  20525. * Set it to `false` if you don't want popups to close when user clicks the map.
  20526. */
  20527. Map.mergeOptions({
  20528. closePopupOnClick: true
  20529. });
  20530. // @namespace Map
  20531. // @section Methods for Layers and Controls
  20532. Map.include({
  20533. // @method openPopup(popup: Popup): this
  20534. // Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).
  20535. // @alternative
  20536. // @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this
  20537. // Creates a popup with the specified content and options and opens it in the given point on a map.
  20538. openPopup: function openPopup(popup, latlng, options) {
  20539. this._initOverlay(Popup, popup, latlng, options).openOn(this);
  20540. return this;
  20541. },
  20542. // @method closePopup(popup?: Popup): this
  20543. // Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).
  20544. closePopup: function closePopup(popup) {
  20545. popup = arguments.length ? popup : this._popup;
  20546. if (popup) {
  20547. popup.close();
  20548. }
  20549. return this;
  20550. }
  20551. });
  20552. /*
  20553. * @namespace Layer
  20554. * @section Popup methods example
  20555. *
  20556. * All layers share a set of methods convenient for binding popups to it.
  20557. *
  20558. * ```js
  20559. * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);
  20560. * layer.openPopup();
  20561. * layer.closePopup();
  20562. * ```
  20563. *
  20564. * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.
  20565. */
  20566. // @section Popup methods
  20567. Layer.include({
  20568. // @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this
  20569. // Binds a popup to the layer with the passed `content` and sets up the
  20570. // necessary event listeners. If a `Function` is passed it will receive
  20571. // the layer as the first argument and should return a `String` or `HTMLElement`.
  20572. bindPopup: function bindPopup(content, options) {
  20573. this._popup = this._initOverlay(Popup, this._popup, content, options);
  20574. if (!this._popupHandlersAdded) {
  20575. this.on({
  20576. click: this._openPopup,
  20577. keypress: this._onKeyPress,
  20578. remove: this.closePopup,
  20579. move: this._movePopup
  20580. });
  20581. this._popupHandlersAdded = true;
  20582. }
  20583. return this;
  20584. },
  20585. // @method unbindPopup(): this
  20586. // Removes the popup previously bound with `bindPopup`.
  20587. unbindPopup: function unbindPopup() {
  20588. if (this._popup) {
  20589. this.off({
  20590. click: this._openPopup,
  20591. keypress: this._onKeyPress,
  20592. remove: this.closePopup,
  20593. move: this._movePopup
  20594. });
  20595. this._popupHandlersAdded = false;
  20596. this._popup = null;
  20597. }
  20598. return this;
  20599. },
  20600. // @method openPopup(latlng?: LatLng): this
  20601. // Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.
  20602. openPopup: function openPopup(latlng) {
  20603. if (this._popup) {
  20604. if (!(this instanceof FeatureGroup)) {
  20605. this._popup._source = this;
  20606. }
  20607. if (this._popup._prepareOpen(latlng || this._latlng)) {
  20608. // open the popup on the map
  20609. this._popup.openOn(this._map);
  20610. }
  20611. }
  20612. return this;
  20613. },
  20614. // @method closePopup(): this
  20615. // Closes the popup bound to this layer if it is open.
  20616. closePopup: function closePopup() {
  20617. if (this._popup) {
  20618. this._popup.close();
  20619. }
  20620. return this;
  20621. },
  20622. // @method togglePopup(): this
  20623. // Opens or closes the popup bound to this layer depending on its current state.
  20624. togglePopup: function togglePopup() {
  20625. if (this._popup) {
  20626. this._popup.toggle(this);
  20627. }
  20628. return this;
  20629. },
  20630. // @method isPopupOpen(): boolean
  20631. // Returns `true` if the popup bound to this layer is currently open.
  20632. isPopupOpen: function isPopupOpen() {
  20633. return this._popup ? this._popup.isOpen() : false;
  20634. },
  20635. // @method setPopupContent(content: String|HTMLElement|Popup): this
  20636. // Sets the content of the popup bound to this layer.
  20637. setPopupContent: function setPopupContent(content) {
  20638. if (this._popup) {
  20639. this._popup.setContent(content);
  20640. }
  20641. return this;
  20642. },
  20643. // @method getPopup(): Popup
  20644. // Returns the popup bound to this layer.
  20645. getPopup: function getPopup() {
  20646. return this._popup;
  20647. },
  20648. _openPopup: function _openPopup(e) {
  20649. if (!this._popup || !this._map) {
  20650. return;
  20651. }
  20652. // prevent map click
  20653. stop(e);
  20654. var target = e.layer || e.target;
  20655. if (this._popup._source === target && !(target instanceof Path)) {
  20656. // treat it like a marker and figure out
  20657. // if we should toggle it open/closed
  20658. if (this._map.hasLayer(this._popup)) {
  20659. this.closePopup();
  20660. } else {
  20661. this.openPopup(e.latlng);
  20662. }
  20663. return;
  20664. }
  20665. this._popup._source = target;
  20666. this.openPopup(e.latlng);
  20667. },
  20668. _movePopup: function _movePopup(e) {
  20669. this._popup.setLatLng(e.latlng);
  20670. },
  20671. _onKeyPress: function _onKeyPress(e) {
  20672. if (e.originalEvent.keyCode === 13) {
  20673. this._openPopup(e);
  20674. }
  20675. }
  20676. });
  20677. /*
  20678. * @class Tooltip
  20679. * @inherits DivOverlay
  20680. * @aka L.Tooltip
  20681. * Used to display small texts on top of map layers.
  20682. *
  20683. * @example
  20684. * If you want to just bind a tooltip to marker:
  20685. *
  20686. * ```js
  20687. * marker.bindTooltip("my tooltip text").openTooltip();
  20688. * ```
  20689. * Path overlays like polylines also have a `bindTooltip` method.
  20690. *
  20691. * A tooltip can be also standalone:
  20692. *
  20693. * ```js
  20694. * var tooltip = L.tooltip()
  20695. * .setLatLng(latlng)
  20696. * .setContent('Hello world!<br />This is a nice tooltip.')
  20697. * .addTo(map);
  20698. * ```
  20699. * or
  20700. * ```js
  20701. * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})
  20702. * .addTo(map);
  20703. * ```
  20704. *
  20705. *
  20706. * Note about tooltip offset. Leaflet takes two options in consideration
  20707. * for computing tooltip offsetting:
  20708. * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.
  20709. * Add a positive x offset to move the tooltip to the right, and a positive y offset to
  20710. * move it to the bottom. Negatives will move to the left and top.
  20711. * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You
  20712. * should adapt this value if you use a custom icon.
  20713. */
  20714. // @namespace Tooltip
  20715. var Tooltip = DivOverlay.extend({
  20716. // @section
  20717. // @aka Tooltip options
  20718. options: {
  20719. // @option pane: String = 'tooltipPane'
  20720. // `Map pane` where the tooltip will be added.
  20721. pane: 'tooltipPane',
  20722. // @option offset: Point = Point(0, 0)
  20723. // Optional offset of the tooltip position.
  20724. offset: [0, 0],
  20725. // @option direction: String = 'auto'
  20726. // Direction where to open the tooltip. Possible values are: `right`, `left`,
  20727. // `top`, `bottom`, `center`, `auto`.
  20728. // `auto` will dynamically switch between `right` and `left` according to the tooltip
  20729. // position on the map.
  20730. direction: 'auto',
  20731. // @option permanent: Boolean = false
  20732. // Whether to open the tooltip permanently or only on mouseover.
  20733. permanent: false,
  20734. // @option sticky: Boolean = false
  20735. // If true, the tooltip will follow the mouse instead of being fixed at the feature center.
  20736. sticky: false,
  20737. // @option opacity: Number = 0.9
  20738. // Tooltip container opacity.
  20739. opacity: 0.9
  20740. },
  20741. onAdd: function onAdd(map) {
  20742. DivOverlay.prototype.onAdd.call(this, map);
  20743. this.setOpacity(this.options.opacity);
  20744. // @namespace Map
  20745. // @section Tooltip events
  20746. // @event tooltipopen: TooltipEvent
  20747. // Fired when a tooltip is opened in the map.
  20748. map.fire('tooltipopen', {
  20749. tooltip: this
  20750. });
  20751. if (this._source) {
  20752. this.addEventParent(this._source);
  20753. // @namespace Layer
  20754. // @section Tooltip events
  20755. // @event tooltipopen: TooltipEvent
  20756. // Fired when a tooltip bound to this layer is opened.
  20757. this._source.fire('tooltipopen', {
  20758. tooltip: this
  20759. }, true);
  20760. }
  20761. },
  20762. onRemove: function onRemove(map) {
  20763. DivOverlay.prototype.onRemove.call(this, map);
  20764. // @namespace Map
  20765. // @section Tooltip events
  20766. // @event tooltipclose: TooltipEvent
  20767. // Fired when a tooltip in the map is closed.
  20768. map.fire('tooltipclose', {
  20769. tooltip: this
  20770. });
  20771. if (this._source) {
  20772. this.removeEventParent(this._source);
  20773. // @namespace Layer
  20774. // @section Tooltip events
  20775. // @event tooltipclose: TooltipEvent
  20776. // Fired when a tooltip bound to this layer is closed.
  20777. this._source.fire('tooltipclose', {
  20778. tooltip: this
  20779. }, true);
  20780. }
  20781. },
  20782. getEvents: function getEvents() {
  20783. var events = DivOverlay.prototype.getEvents.call(this);
  20784. if (!this.options.permanent) {
  20785. events.preclick = this.close;
  20786. }
  20787. return events;
  20788. },
  20789. _initLayout: function _initLayout() {
  20790. var prefix = 'leaflet-tooltip',
  20791. className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');
  20792. this._contentNode = this._container = create$1('div', className);
  20793. this._container.setAttribute('role', 'tooltip');
  20794. this._container.setAttribute('id', 'leaflet-tooltip-' + stamp(this));
  20795. },
  20796. _updateLayout: function _updateLayout() {},
  20797. _adjustPan: function _adjustPan() {},
  20798. _setPosition: function _setPosition(pos) {
  20799. var subX,
  20800. subY,
  20801. map = this._map,
  20802. container = this._container,
  20803. centerPoint = map.latLngToContainerPoint(map.getCenter()),
  20804. tooltipPoint = map.layerPointToContainerPoint(pos),
  20805. direction = this.options.direction,
  20806. tooltipWidth = container.offsetWidth,
  20807. tooltipHeight = container.offsetHeight,
  20808. offset = toPoint(this.options.offset),
  20809. anchor = this._getAnchor();
  20810. if (direction === 'top') {
  20811. subX = tooltipWidth / 2;
  20812. subY = tooltipHeight;
  20813. } else if (direction === 'bottom') {
  20814. subX = tooltipWidth / 2;
  20815. subY = 0;
  20816. } else if (direction === 'center') {
  20817. subX = tooltipWidth / 2;
  20818. subY = tooltipHeight / 2;
  20819. } else if (direction === 'right') {
  20820. subX = 0;
  20821. subY = tooltipHeight / 2;
  20822. } else if (direction === 'left') {
  20823. subX = tooltipWidth;
  20824. subY = tooltipHeight / 2;
  20825. } else if (tooltipPoint.x < centerPoint.x) {
  20826. direction = 'right';
  20827. subX = 0;
  20828. subY = tooltipHeight / 2;
  20829. } else {
  20830. direction = 'left';
  20831. subX = tooltipWidth + (offset.x + anchor.x) * 2;
  20832. subY = tooltipHeight / 2;
  20833. }
  20834. pos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);
  20835. removeClass(container, 'leaflet-tooltip-right');
  20836. removeClass(container, 'leaflet-tooltip-left');
  20837. removeClass(container, 'leaflet-tooltip-top');
  20838. removeClass(container, 'leaflet-tooltip-bottom');
  20839. addClass(container, 'leaflet-tooltip-' + direction);
  20840. setPosition(container, pos);
  20841. },
  20842. _updatePosition: function _updatePosition() {
  20843. var pos = this._map.latLngToLayerPoint(this._latlng);
  20844. this._setPosition(pos);
  20845. },
  20846. setOpacity: function setOpacity(opacity) {
  20847. this.options.opacity = opacity;
  20848. if (this._container) {
  20849. _setOpacity(this._container, opacity);
  20850. }
  20851. },
  20852. _animateZoom: function _animateZoom(e) {
  20853. var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);
  20854. this._setPosition(pos);
  20855. },
  20856. _getAnchor: function _getAnchor() {
  20857. // Where should we anchor the tooltip on the source layer?
  20858. return toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);
  20859. }
  20860. });
  20861. // @namespace Tooltip
  20862. // @factory L.tooltip(options?: Tooltip options, source?: Layer)
  20863. // Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.
  20864. // @alternative
  20865. // @factory L.tooltip(latlng: LatLng, options?: Tooltip options)
  20866. // Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.
  20867. var tooltip = function tooltip(options, source) {
  20868. return new Tooltip(options, source);
  20869. };
  20870. // @namespace Map
  20871. // @section Methods for Layers and Controls
  20872. Map.include({
  20873. // @method openTooltip(tooltip: Tooltip): this
  20874. // Opens the specified tooltip.
  20875. // @alternative
  20876. // @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this
  20877. // Creates a tooltip with the specified content and options and open it.
  20878. openTooltip: function openTooltip(tooltip, latlng, options) {
  20879. this._initOverlay(Tooltip, tooltip, latlng, options).openOn(this);
  20880. return this;
  20881. },
  20882. // @method closeTooltip(tooltip: Tooltip): this
  20883. // Closes the tooltip given as parameter.
  20884. closeTooltip: function closeTooltip(tooltip) {
  20885. tooltip.close();
  20886. return this;
  20887. }
  20888. });
  20889. /*
  20890. * @namespace Layer
  20891. * @section Tooltip methods example
  20892. *
  20893. * All layers share a set of methods convenient for binding tooltips to it.
  20894. *
  20895. * ```js
  20896. * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);
  20897. * layer.openTooltip();
  20898. * layer.closeTooltip();
  20899. * ```
  20900. */
  20901. // @section Tooltip methods
  20902. Layer.include({
  20903. // @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this
  20904. // Binds a tooltip to the layer with the passed `content` and sets up the
  20905. // necessary event listeners. If a `Function` is passed it will receive
  20906. // the layer as the first argument and should return a `String` or `HTMLElement`.
  20907. bindTooltip: function bindTooltip(content, options) {
  20908. if (this._tooltip && this.isTooltipOpen()) {
  20909. this.unbindTooltip();
  20910. }
  20911. this._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options);
  20912. this._initTooltipInteractions();
  20913. if (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {
  20914. this.openTooltip();
  20915. }
  20916. return this;
  20917. },
  20918. // @method unbindTooltip(): this
  20919. // Removes the tooltip previously bound with `bindTooltip`.
  20920. unbindTooltip: function unbindTooltip() {
  20921. if (this._tooltip) {
  20922. this._initTooltipInteractions(true);
  20923. this.closeTooltip();
  20924. this._tooltip = null;
  20925. }
  20926. return this;
  20927. },
  20928. _initTooltipInteractions: function _initTooltipInteractions(remove) {
  20929. if (!remove && this._tooltipHandlersAdded) {
  20930. return;
  20931. }
  20932. var onOff = remove ? 'off' : 'on',
  20933. events = {
  20934. remove: this.closeTooltip,
  20935. move: this._moveTooltip
  20936. };
  20937. if (!this._tooltip.options.permanent) {
  20938. events.mouseover = this._openTooltip;
  20939. events.mouseout = this.closeTooltip;
  20940. events.click = this._openTooltip;
  20941. if (this._map) {
  20942. this._addFocusListeners();
  20943. } else {
  20944. events.add = this._addFocusListeners;
  20945. }
  20946. } else {
  20947. events.add = this._openTooltip;
  20948. }
  20949. if (this._tooltip.options.sticky) {
  20950. events.mousemove = this._moveTooltip;
  20951. }
  20952. this[onOff](events);
  20953. this._tooltipHandlersAdded = !remove;
  20954. },
  20955. // @method openTooltip(latlng?: LatLng): this
  20956. // Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.
  20957. openTooltip: function openTooltip(latlng) {
  20958. if (this._tooltip) {
  20959. if (!(this instanceof FeatureGroup)) {
  20960. this._tooltip._source = this;
  20961. }
  20962. if (this._tooltip._prepareOpen(latlng)) {
  20963. // open the tooltip on the map
  20964. this._tooltip.openOn(this._map);
  20965. if (this.getElement) {
  20966. this._setAriaDescribedByOnLayer(this);
  20967. } else if (this.eachLayer) {
  20968. this.eachLayer(this._setAriaDescribedByOnLayer, this);
  20969. }
  20970. }
  20971. }
  20972. return this;
  20973. },
  20974. // @method closeTooltip(): this
  20975. // Closes the tooltip bound to this layer if it is open.
  20976. closeTooltip: function closeTooltip() {
  20977. if (this._tooltip) {
  20978. return this._tooltip.close();
  20979. }
  20980. },
  20981. // @method toggleTooltip(): this
  20982. // Opens or closes the tooltip bound to this layer depending on its current state.
  20983. toggleTooltip: function toggleTooltip() {
  20984. if (this._tooltip) {
  20985. this._tooltip.toggle(this);
  20986. }
  20987. return this;
  20988. },
  20989. // @method isTooltipOpen(): boolean
  20990. // Returns `true` if the tooltip bound to this layer is currently open.
  20991. isTooltipOpen: function isTooltipOpen() {
  20992. return this._tooltip.isOpen();
  20993. },
  20994. // @method setTooltipContent(content: String|HTMLElement|Tooltip): this
  20995. // Sets the content of the tooltip bound to this layer.
  20996. setTooltipContent: function setTooltipContent(content) {
  20997. if (this._tooltip) {
  20998. this._tooltip.setContent(content);
  20999. }
  21000. return this;
  21001. },
  21002. // @method getTooltip(): Tooltip
  21003. // Returns the tooltip bound to this layer.
  21004. getTooltip: function getTooltip() {
  21005. return this._tooltip;
  21006. },
  21007. _addFocusListeners: function _addFocusListeners() {
  21008. if (this.getElement) {
  21009. this._addFocusListenersOnLayer(this);
  21010. } else if (this.eachLayer) {
  21011. this.eachLayer(this._addFocusListenersOnLayer, this);
  21012. }
  21013. },
  21014. _addFocusListenersOnLayer: function _addFocusListenersOnLayer(layer) {
  21015. var el = layer.getElement();
  21016. if (el) {
  21017. on(el, 'focus', function () {
  21018. this._tooltip._source = layer;
  21019. this.openTooltip();
  21020. }, this);
  21021. on(el, 'blur', this.closeTooltip, this);
  21022. }
  21023. },
  21024. _setAriaDescribedByOnLayer: function _setAriaDescribedByOnLayer(layer) {
  21025. var el = layer.getElement();
  21026. if (el) {
  21027. el.setAttribute('aria-describedby', this._tooltip._container.id);
  21028. }
  21029. },
  21030. _openTooltip: function _openTooltip(e) {
  21031. if (!this._tooltip || !this._map || this._map.dragging && this._map.dragging.moving()) {
  21032. return;
  21033. }
  21034. this._tooltip._source = e.layer || e.target;
  21035. this.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined);
  21036. },
  21037. _moveTooltip: function _moveTooltip(e) {
  21038. var latlng = e.latlng,
  21039. containerPoint,
  21040. layerPoint;
  21041. if (this._tooltip.options.sticky && e.originalEvent) {
  21042. containerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);
  21043. layerPoint = this._map.containerPointToLayerPoint(containerPoint);
  21044. latlng = this._map.layerPointToLatLng(layerPoint);
  21045. }
  21046. this._tooltip.setLatLng(latlng);
  21047. }
  21048. });
  21049. /*
  21050. * @class DivIcon
  21051. * @aka L.DivIcon
  21052. * @inherits Icon
  21053. *
  21054. * Represents a lightweight icon for markers that uses a simple `<div>`
  21055. * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.
  21056. *
  21057. * @example
  21058. * ```js
  21059. * var myIcon = L.divIcon({className: 'my-div-icon'});
  21060. * // you can set .my-div-icon styles in CSS
  21061. *
  21062. * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);
  21063. * ```
  21064. *
  21065. * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.
  21066. */
  21067. var DivIcon = Icon.extend({
  21068. options: {
  21069. // @section
  21070. // @aka DivIcon options
  21071. iconSize: [12, 12],
  21072. // also can be set through CSS
  21073. // iconAnchor: (Point),
  21074. // popupAnchor: (Point),
  21075. // @option html: String|HTMLElement = ''
  21076. // Custom HTML code to put inside the div element, empty by default. Alternatively,
  21077. // an instance of `HTMLElement`.
  21078. html: false,
  21079. // @option bgPos: Point = [0, 0]
  21080. // Optional relative position of the background, in pixels
  21081. bgPos: null,
  21082. className: 'leaflet-div-icon'
  21083. },
  21084. createIcon: function createIcon(oldIcon) {
  21085. var div = oldIcon && oldIcon.tagName === 'DIV' ? oldIcon : document.createElement('div'),
  21086. options = this.options;
  21087. if (options.html instanceof Element) {
  21088. empty(div);
  21089. div.appendChild(options.html);
  21090. } else {
  21091. div.innerHTML = options.html !== false ? options.html : '';
  21092. }
  21093. if (options.bgPos) {
  21094. var bgPos = toPoint(options.bgPos);
  21095. div.style.backgroundPosition = -bgPos.x + 'px ' + -bgPos.y + 'px';
  21096. }
  21097. this._setIconStyles(div, 'icon');
  21098. return div;
  21099. },
  21100. createShadow: function createShadow() {
  21101. return null;
  21102. }
  21103. });
  21104. // @factory L.divIcon(options: DivIcon options)
  21105. // Creates a `DivIcon` instance with the given options.
  21106. function divIcon(options) {
  21107. return new DivIcon(options);
  21108. }
  21109. Icon.Default = IconDefault;
  21110. /*
  21111. * @class GridLayer
  21112. * @inherits Layer
  21113. * @aka L.GridLayer
  21114. *
  21115. * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.
  21116. * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.
  21117. *
  21118. *
  21119. * @section Synchronous usage
  21120. * @example
  21121. *
  21122. * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.
  21123. *
  21124. * ```js
  21125. * var CanvasLayer = L.GridLayer.extend({
  21126. * createTile: function(coords){
  21127. * // create a <canvas> element for drawing
  21128. * var tile = L.DomUtil.create('canvas', 'leaflet-tile');
  21129. *
  21130. * // setup tile width and height according to the options
  21131. * var size = this.getTileSize();
  21132. * tile.width = size.x;
  21133. * tile.height = size.y;
  21134. *
  21135. * // get a canvas context and draw something on it using coords.x, coords.y and coords.z
  21136. * var ctx = tile.getContext('2d');
  21137. *
  21138. * // return the tile so it can be rendered on screen
  21139. * return tile;
  21140. * }
  21141. * });
  21142. * ```
  21143. *
  21144. * @section Asynchronous usage
  21145. * @example
  21146. *
  21147. * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.
  21148. *
  21149. * ```js
  21150. * var CanvasLayer = L.GridLayer.extend({
  21151. * createTile: function(coords, done){
  21152. * var error;
  21153. *
  21154. * // create a <canvas> element for drawing
  21155. * var tile = L.DomUtil.create('canvas', 'leaflet-tile');
  21156. *
  21157. * // setup tile width and height according to the options
  21158. * var size = this.getTileSize();
  21159. * tile.width = size.x;
  21160. * tile.height = size.y;
  21161. *
  21162. * // draw something asynchronously and pass the tile to the done() callback
  21163. * setTimeout(function() {
  21164. * done(error, tile);
  21165. * }, 1000);
  21166. *
  21167. * return tile;
  21168. * }
  21169. * });
  21170. * ```
  21171. *
  21172. * @section
  21173. */
  21174. var GridLayer = Layer.extend({
  21175. // @section
  21176. // @aka GridLayer options
  21177. options: {
  21178. // @option tileSize: Number|Point = 256
  21179. // Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.
  21180. tileSize: 256,
  21181. // @option opacity: Number = 1.0
  21182. // Opacity of the tiles. Can be used in the `createTile()` function.
  21183. opacity: 1,
  21184. // @option updateWhenIdle: Boolean = (depends)
  21185. // Load new tiles only when panning ends.
  21186. // `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.
  21187. // `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the
  21188. // [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.
  21189. updateWhenIdle: Browser.mobile,
  21190. // @option updateWhenZooming: Boolean = true
  21191. // By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.
  21192. updateWhenZooming: true,
  21193. // @option updateInterval: Number = 200
  21194. // Tiles will not update more than once every `updateInterval` milliseconds when panning.
  21195. updateInterval: 200,
  21196. // @option zIndex: Number = 1
  21197. // The explicit zIndex of the tile layer.
  21198. zIndex: 1,
  21199. // @option bounds: LatLngBounds = undefined
  21200. // If set, tiles will only be loaded inside the set `LatLngBounds`.
  21201. bounds: null,
  21202. // @option minZoom: Number = 0
  21203. // The minimum zoom level down to which this layer will be displayed (inclusive).
  21204. minZoom: 0,
  21205. // @option maxZoom: Number = undefined
  21206. // The maximum zoom level up to which this layer will be displayed (inclusive).
  21207. maxZoom: undefined,
  21208. // @option maxNativeZoom: Number = undefined
  21209. // Maximum zoom number the tile source has available. If it is specified,
  21210. // the tiles on all zoom levels higher than `maxNativeZoom` will be loaded
  21211. // from `maxNativeZoom` level and auto-scaled.
  21212. maxNativeZoom: undefined,
  21213. // @option minNativeZoom: Number = undefined
  21214. // Minimum zoom number the tile source has available. If it is specified,
  21215. // the tiles on all zoom levels lower than `minNativeZoom` will be loaded
  21216. // from `minNativeZoom` level and auto-scaled.
  21217. minNativeZoom: undefined,
  21218. // @option noWrap: Boolean = false
  21219. // Whether the layer is wrapped around the antimeridian. If `true`, the
  21220. // GridLayer will only be displayed once at low zoom levels. Has no
  21221. // effect when the [map CRS](#map-crs) doesn't wrap around. Can be used
  21222. // in combination with [`bounds`](#gridlayer-bounds) to prevent requesting
  21223. // tiles outside the CRS limits.
  21224. noWrap: false,
  21225. // @option pane: String = 'tilePane'
  21226. // `Map pane` where the grid layer will be added.
  21227. pane: 'tilePane',
  21228. // @option className: String = ''
  21229. // A custom class name to assign to the tile layer. Empty by default.
  21230. className: '',
  21231. // @option keepBuffer: Number = 2
  21232. // When panning the map, keep this many rows and columns of tiles before unloading them.
  21233. keepBuffer: 2
  21234. },
  21235. initialize: function initialize(options) {
  21236. setOptions(this, options);
  21237. },
  21238. onAdd: function onAdd() {
  21239. this._initContainer();
  21240. this._levels = {};
  21241. this._tiles = {};
  21242. this._resetView(); // implicit _update() call
  21243. },
  21244. beforeAdd: function beforeAdd(map) {
  21245. map._addZoomLimit(this);
  21246. },
  21247. onRemove: function onRemove(map) {
  21248. this._removeAllTiles();
  21249. _remove(this._container);
  21250. map._removeZoomLimit(this);
  21251. this._container = null;
  21252. this._tileZoom = undefined;
  21253. },
  21254. // @method bringToFront: this
  21255. // Brings the tile layer to the top of all tile layers.
  21256. bringToFront: function bringToFront() {
  21257. if (this._map) {
  21258. toFront(this._container);
  21259. this._setAutoZIndex(Math.max);
  21260. }
  21261. return this;
  21262. },
  21263. // @method bringToBack: this
  21264. // Brings the tile layer to the bottom of all tile layers.
  21265. bringToBack: function bringToBack() {
  21266. if (this._map) {
  21267. toBack(this._container);
  21268. this._setAutoZIndex(Math.min);
  21269. }
  21270. return this;
  21271. },
  21272. // @method getContainer: HTMLElement
  21273. // Returns the HTML element that contains the tiles for this layer.
  21274. getContainer: function getContainer() {
  21275. return this._container;
  21276. },
  21277. // @method setOpacity(opacity: Number): this
  21278. // Changes the [opacity](#gridlayer-opacity) of the grid layer.
  21279. setOpacity: function setOpacity(opacity) {
  21280. this.options.opacity = opacity;
  21281. this._updateOpacity();
  21282. return this;
  21283. },
  21284. // @method setZIndex(zIndex: Number): this
  21285. // Changes the [zIndex](#gridlayer-zindex) of the grid layer.
  21286. setZIndex: function setZIndex(zIndex) {
  21287. this.options.zIndex = zIndex;
  21288. this._updateZIndex();
  21289. return this;
  21290. },
  21291. // @method isLoading: Boolean
  21292. // Returns `true` if any tile in the grid layer has not finished loading.
  21293. isLoading: function isLoading() {
  21294. return this._loading;
  21295. },
  21296. // @method redraw: this
  21297. // Causes the layer to clear all the tiles and request them again.
  21298. redraw: function redraw() {
  21299. if (this._map) {
  21300. this._removeAllTiles();
  21301. var tileZoom = this._clampZoom(this._map.getZoom());
  21302. if (tileZoom !== this._tileZoom) {
  21303. this._tileZoom = tileZoom;
  21304. this._updateLevels();
  21305. }
  21306. this._update();
  21307. }
  21308. return this;
  21309. },
  21310. getEvents: function getEvents() {
  21311. var events = {
  21312. viewprereset: this._invalidateAll,
  21313. viewreset: this._resetView,
  21314. zoom: this._resetView,
  21315. moveend: this._onMoveEnd
  21316. };
  21317. if (!this.options.updateWhenIdle) {
  21318. // update tiles on move, but not more often than once per given interval
  21319. if (!this._onMove) {
  21320. this._onMove = throttle(this._onMoveEnd, this.options.updateInterval, this);
  21321. }
  21322. events.move = this._onMove;
  21323. }
  21324. if (this._zoomAnimated) {
  21325. events.zoomanim = this._animateZoom;
  21326. }
  21327. return events;
  21328. },
  21329. // @section Extension methods
  21330. // Layers extending `GridLayer` shall reimplement the following method.
  21331. // @method createTile(coords: Object, done?: Function): HTMLElement
  21332. // Called only internally, must be overridden by classes extending `GridLayer`.
  21333. // Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback
  21334. // is specified, it must be called when the tile has finished loading and drawing.
  21335. createTile: function createTile() {
  21336. return document.createElement('div');
  21337. },
  21338. // @section
  21339. // @method getTileSize: Point
  21340. // Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.
  21341. getTileSize: function getTileSize() {
  21342. var s = this.options.tileSize;
  21343. return s instanceof Point ? s : new Point(s, s);
  21344. },
  21345. _updateZIndex: function _updateZIndex() {
  21346. if (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {
  21347. this._container.style.zIndex = this.options.zIndex;
  21348. }
  21349. },
  21350. _setAutoZIndex: function _setAutoZIndex(compare) {
  21351. // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)
  21352. var layers = this.getPane().children,
  21353. edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min
  21354. for (var i = 0, len = layers.length, zIndex; i < len; i++) {
  21355. zIndex = layers[i].style.zIndex;
  21356. if (layers[i] !== this._container && zIndex) {
  21357. edgeZIndex = compare(edgeZIndex, +zIndex);
  21358. }
  21359. }
  21360. if (isFinite(edgeZIndex)) {
  21361. this.options.zIndex = edgeZIndex + compare(-1, 1);
  21362. this._updateZIndex();
  21363. }
  21364. },
  21365. _updateOpacity: function _updateOpacity() {
  21366. if (!this._map) {
  21367. return;
  21368. }
  21369. // IE doesn't inherit filter opacity properly, so we're forced to set it on tiles
  21370. if (Browser.ielt9) {
  21371. return;
  21372. }
  21373. _setOpacity(this._container, this.options.opacity);
  21374. var now = +new Date(),
  21375. nextFrame = false,
  21376. willPrune = false;
  21377. for (var key in this._tiles) {
  21378. var tile = this._tiles[key];
  21379. if (!tile.current || !tile.loaded) {
  21380. continue;
  21381. }
  21382. var fade = Math.min(1, (now - tile.loaded) / 200);
  21383. _setOpacity(tile.el, fade);
  21384. if (fade < 1) {
  21385. nextFrame = true;
  21386. } else {
  21387. if (tile.active) {
  21388. willPrune = true;
  21389. } else {
  21390. this._onOpaqueTile(tile);
  21391. }
  21392. tile.active = true;
  21393. }
  21394. }
  21395. if (willPrune && !this._noPrune) {
  21396. this._pruneTiles();
  21397. }
  21398. if (nextFrame) {
  21399. cancelAnimFrame(this._fadeFrame);
  21400. this._fadeFrame = requestAnimFrame(this._updateOpacity, this);
  21401. }
  21402. },
  21403. _onOpaqueTile: falseFn,
  21404. _initContainer: function _initContainer() {
  21405. if (this._container) {
  21406. return;
  21407. }
  21408. this._container = create$1('div', 'leaflet-layer ' + (this.options.className || ''));
  21409. this._updateZIndex();
  21410. if (this.options.opacity < 1) {
  21411. this._updateOpacity();
  21412. }
  21413. this.getPane().appendChild(this._container);
  21414. },
  21415. _updateLevels: function _updateLevels() {
  21416. var zoom = this._tileZoom,
  21417. maxZoom = this.options.maxZoom;
  21418. if (zoom === undefined) {
  21419. return undefined;
  21420. }
  21421. for (var z in this._levels) {
  21422. z = Number(z);
  21423. if (this._levels[z].el.children.length || z === zoom) {
  21424. this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);
  21425. this._onUpdateLevel(z);
  21426. } else {
  21427. _remove(this._levels[z].el);
  21428. this._removeTilesAtZoom(z);
  21429. this._onRemoveLevel(z);
  21430. delete this._levels[z];
  21431. }
  21432. }
  21433. var level = this._levels[zoom],
  21434. map = this._map;
  21435. if (!level) {
  21436. level = this._levels[zoom] = {};
  21437. level.el = create$1('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);
  21438. level.el.style.zIndex = maxZoom;
  21439. level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();
  21440. level.zoom = zoom;
  21441. this._setZoomTransform(level, map.getCenter(), map.getZoom());
  21442. // force the browser to consider the newly added element for transition
  21443. falseFn(level.el.offsetWidth);
  21444. this._onCreateLevel(level);
  21445. }
  21446. this._level = level;
  21447. return level;
  21448. },
  21449. _onUpdateLevel: falseFn,
  21450. _onRemoveLevel: falseFn,
  21451. _onCreateLevel: falseFn,
  21452. _pruneTiles: function _pruneTiles() {
  21453. if (!this._map) {
  21454. return;
  21455. }
  21456. var key, tile;
  21457. var zoom = this._map.getZoom();
  21458. if (zoom > this.options.maxZoom || zoom < this.options.minZoom) {
  21459. this._removeAllTiles();
  21460. return;
  21461. }
  21462. for (key in this._tiles) {
  21463. tile = this._tiles[key];
  21464. tile.retain = tile.current;
  21465. }
  21466. for (key in this._tiles) {
  21467. tile = this._tiles[key];
  21468. if (tile.current && !tile.active) {
  21469. var coords = tile.coords;
  21470. if (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {
  21471. this._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);
  21472. }
  21473. }
  21474. }
  21475. for (key in this._tiles) {
  21476. if (!this._tiles[key].retain) {
  21477. this._removeTile(key);
  21478. }
  21479. }
  21480. },
  21481. _removeTilesAtZoom: function _removeTilesAtZoom(zoom) {
  21482. for (var key in this._tiles) {
  21483. if (this._tiles[key].coords.z !== zoom) {
  21484. continue;
  21485. }
  21486. this._removeTile(key);
  21487. }
  21488. },
  21489. _removeAllTiles: function _removeAllTiles() {
  21490. for (var key in this._tiles) {
  21491. this._removeTile(key);
  21492. }
  21493. },
  21494. _invalidateAll: function _invalidateAll() {
  21495. for (var z in this._levels) {
  21496. _remove(this._levels[z].el);
  21497. this._onRemoveLevel(Number(z));
  21498. delete this._levels[z];
  21499. }
  21500. this._removeAllTiles();
  21501. this._tileZoom = undefined;
  21502. },
  21503. _retainParent: function _retainParent(x, y, z, minZoom) {
  21504. var x2 = Math.floor(x / 2),
  21505. y2 = Math.floor(y / 2),
  21506. z2 = z - 1,
  21507. coords2 = new Point(+x2, +y2);
  21508. coords2.z = +z2;
  21509. var key = this._tileCoordsToKey(coords2),
  21510. tile = this._tiles[key];
  21511. if (tile && tile.active) {
  21512. tile.retain = true;
  21513. return true;
  21514. } else if (tile && tile.loaded) {
  21515. tile.retain = true;
  21516. }
  21517. if (z2 > minZoom) {
  21518. return this._retainParent(x2, y2, z2, minZoom);
  21519. }
  21520. return false;
  21521. },
  21522. _retainChildren: function _retainChildren(x, y, z, maxZoom) {
  21523. for (var i = 2 * x; i < 2 * x + 2; i++) {
  21524. for (var j = 2 * y; j < 2 * y + 2; j++) {
  21525. var coords = new Point(i, j);
  21526. coords.z = z + 1;
  21527. var key = this._tileCoordsToKey(coords),
  21528. tile = this._tiles[key];
  21529. if (tile && tile.active) {
  21530. tile.retain = true;
  21531. continue;
  21532. } else if (tile && tile.loaded) {
  21533. tile.retain = true;
  21534. }
  21535. if (z + 1 < maxZoom) {
  21536. this._retainChildren(i, j, z + 1, maxZoom);
  21537. }
  21538. }
  21539. }
  21540. },
  21541. _resetView: function _resetView(e) {
  21542. var animating = e && (e.pinch || e.flyTo);
  21543. this._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);
  21544. },
  21545. _animateZoom: function _animateZoom(e) {
  21546. this._setView(e.center, e.zoom, true, e.noUpdate);
  21547. },
  21548. _clampZoom: function _clampZoom(zoom) {
  21549. var options = this.options;
  21550. if (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {
  21551. return options.minNativeZoom;
  21552. }
  21553. if (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {
  21554. return options.maxNativeZoom;
  21555. }
  21556. return zoom;
  21557. },
  21558. _setView: function _setView(center, zoom, noPrune, noUpdate) {
  21559. var tileZoom = Math.round(zoom);
  21560. if (this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom || this.options.minZoom !== undefined && tileZoom < this.options.minZoom) {
  21561. tileZoom = undefined;
  21562. } else {
  21563. tileZoom = this._clampZoom(tileZoom);
  21564. }
  21565. var tileZoomChanged = this.options.updateWhenZooming && tileZoom !== this._tileZoom;
  21566. if (!noUpdate || tileZoomChanged) {
  21567. this._tileZoom = tileZoom;
  21568. if (this._abortLoading) {
  21569. this._abortLoading();
  21570. }
  21571. this._updateLevels();
  21572. this._resetGrid();
  21573. if (tileZoom !== undefined) {
  21574. this._update(center);
  21575. }
  21576. if (!noPrune) {
  21577. this._pruneTiles();
  21578. }
  21579. // Flag to prevent _updateOpacity from pruning tiles during
  21580. // a zoom anim or a pinch gesture
  21581. this._noPrune = !!noPrune;
  21582. }
  21583. this._setZoomTransforms(center, zoom);
  21584. },
  21585. _setZoomTransforms: function _setZoomTransforms(center, zoom) {
  21586. for (var i in this._levels) {
  21587. this._setZoomTransform(this._levels[i], center, zoom);
  21588. }
  21589. },
  21590. _setZoomTransform: function _setZoomTransform(level, center, zoom) {
  21591. var scale = this._map.getZoomScale(zoom, level.zoom),
  21592. translate = level.origin.multiplyBy(scale).subtract(this._map._getNewPixelOrigin(center, zoom)).round();
  21593. if (Browser.any3d) {
  21594. setTransform(level.el, translate, scale);
  21595. } else {
  21596. setPosition(level.el, translate);
  21597. }
  21598. },
  21599. _resetGrid: function _resetGrid() {
  21600. var map = this._map,
  21601. crs = map.options.crs,
  21602. tileSize = this._tileSize = this.getTileSize(),
  21603. tileZoom = this._tileZoom;
  21604. var bounds = this._map.getPixelWorldBounds(this._tileZoom);
  21605. if (bounds) {
  21606. this._globalTileRange = this._pxBoundsToTileRange(bounds);
  21607. }
  21608. this._wrapX = crs.wrapLng && !this.options.noWrap && [Math.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x), Math.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)];
  21609. this._wrapY = crs.wrapLat && !this.options.noWrap && [Math.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x), Math.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)];
  21610. },
  21611. _onMoveEnd: function _onMoveEnd() {
  21612. if (!this._map || this._map._animatingZoom) {
  21613. return;
  21614. }
  21615. this._update();
  21616. },
  21617. _getTiledPixelBounds: function _getTiledPixelBounds(center) {
  21618. var map = this._map,
  21619. mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),
  21620. scale = map.getZoomScale(mapZoom, this._tileZoom),
  21621. pixelCenter = map.project(center, this._tileZoom).floor(),
  21622. halfSize = map.getSize().divideBy(scale * 2);
  21623. return new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));
  21624. },
  21625. // Private method to load tiles in the grid's active zoom level according to map bounds
  21626. _update: function _update(center) {
  21627. var map = this._map;
  21628. if (!map) {
  21629. return;
  21630. }
  21631. var zoom = this._clampZoom(map.getZoom());
  21632. if (center === undefined) {
  21633. center = map.getCenter();
  21634. }
  21635. if (this._tileZoom === undefined) {
  21636. return;
  21637. } // if out of minzoom/maxzoom
  21638. var pixelBounds = this._getTiledPixelBounds(center),
  21639. tileRange = this._pxBoundsToTileRange(pixelBounds),
  21640. tileCenter = tileRange.getCenter(),
  21641. queue = [],
  21642. margin = this.options.keepBuffer,
  21643. noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]), tileRange.getTopRight().add([margin, -margin]));
  21644. // Sanity check: panic if the tile range contains Infinity somewhere.
  21645. if (!(isFinite(tileRange.min.x) && isFinite(tileRange.min.y) && isFinite(tileRange.max.x) && isFinite(tileRange.max.y))) {
  21646. throw new Error('Attempted to load an infinite number of tiles');
  21647. }
  21648. for (var key in this._tiles) {
  21649. var c = this._tiles[key].coords;
  21650. if (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {
  21651. this._tiles[key].current = false;
  21652. }
  21653. }
  21654. // _update just loads more tiles. If the tile zoom level differs too much
  21655. // from the map's, let _setView reset levels and prune old tiles.
  21656. if (Math.abs(zoom - this._tileZoom) > 1) {
  21657. this._setView(center, zoom);
  21658. return;
  21659. }
  21660. // create a queue of coordinates to load tiles from
  21661. for (var j = tileRange.min.y; j <= tileRange.max.y; j++) {
  21662. for (var i = tileRange.min.x; i <= tileRange.max.x; i++) {
  21663. var coords = new Point(i, j);
  21664. coords.z = this._tileZoom;
  21665. if (!this._isValidTile(coords)) {
  21666. continue;
  21667. }
  21668. var tile = this._tiles[this._tileCoordsToKey(coords)];
  21669. if (tile) {
  21670. tile.current = true;
  21671. } else {
  21672. queue.push(coords);
  21673. }
  21674. }
  21675. }
  21676. // sort tile queue to load tiles in order of their distance to center
  21677. queue.sort(function (a, b) {
  21678. return a.distanceTo(tileCenter) - b.distanceTo(tileCenter);
  21679. });
  21680. if (queue.length !== 0) {
  21681. // if it's the first batch of tiles to load
  21682. if (!this._loading) {
  21683. this._loading = true;
  21684. // @event loading: Event
  21685. // Fired when the grid layer starts loading tiles.
  21686. this.fire('loading');
  21687. }
  21688. // create DOM fragment to append tiles in one batch
  21689. var fragment = document.createDocumentFragment();
  21690. for (i = 0; i < queue.length; i++) {
  21691. this._addTile(queue[i], fragment);
  21692. }
  21693. this._level.el.appendChild(fragment);
  21694. }
  21695. },
  21696. _isValidTile: function _isValidTile(coords) {
  21697. var crs = this._map.options.crs;
  21698. if (!crs.infinite) {
  21699. // don't load tile if it's out of bounds and not wrapped
  21700. var bounds = this._globalTileRange;
  21701. if (!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x) || !crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y)) {
  21702. return false;
  21703. }
  21704. }
  21705. if (!this.options.bounds) {
  21706. return true;
  21707. }
  21708. // don't load tile if it doesn't intersect the bounds in options
  21709. var tileBounds = this._tileCoordsToBounds(coords);
  21710. return toLatLngBounds(this.options.bounds).overlaps(tileBounds);
  21711. },
  21712. _keyToBounds: function _keyToBounds(key) {
  21713. return this._tileCoordsToBounds(this._keyToTileCoords(key));
  21714. },
  21715. _tileCoordsToNwSe: function _tileCoordsToNwSe(coords) {
  21716. var map = this._map,
  21717. tileSize = this.getTileSize(),
  21718. nwPoint = coords.scaleBy(tileSize),
  21719. sePoint = nwPoint.add(tileSize),
  21720. nw = map.unproject(nwPoint, coords.z),
  21721. se = map.unproject(sePoint, coords.z);
  21722. return [nw, se];
  21723. },
  21724. // converts tile coordinates to its geographical bounds
  21725. _tileCoordsToBounds: function _tileCoordsToBounds(coords) {
  21726. var bp = this._tileCoordsToNwSe(coords),
  21727. bounds = new LatLngBounds(bp[0], bp[1]);
  21728. if (!this.options.noWrap) {
  21729. bounds = this._map.wrapLatLngBounds(bounds);
  21730. }
  21731. return bounds;
  21732. },
  21733. // converts tile coordinates to key for the tile cache
  21734. _tileCoordsToKey: function _tileCoordsToKey(coords) {
  21735. return coords.x + ':' + coords.y + ':' + coords.z;
  21736. },
  21737. // converts tile cache key to coordinates
  21738. _keyToTileCoords: function _keyToTileCoords(key) {
  21739. var k = key.split(':'),
  21740. coords = new Point(+k[0], +k[1]);
  21741. coords.z = +k[2];
  21742. return coords;
  21743. },
  21744. _removeTile: function _removeTile(key) {
  21745. var tile = this._tiles[key];
  21746. if (!tile) {
  21747. return;
  21748. }
  21749. _remove(tile.el);
  21750. delete this._tiles[key];
  21751. // @event tileunload: TileEvent
  21752. // Fired when a tile is removed (e.g. when a tile goes off the screen).
  21753. this.fire('tileunload', {
  21754. tile: tile.el,
  21755. coords: this._keyToTileCoords(key)
  21756. });
  21757. },
  21758. _initTile: function _initTile(tile) {
  21759. addClass(tile, 'leaflet-tile');
  21760. var tileSize = this.getTileSize();
  21761. tile.style.width = tileSize.x + 'px';
  21762. tile.style.height = tileSize.y + 'px';
  21763. tile.onselectstart = falseFn;
  21764. tile.onmousemove = falseFn;
  21765. // update opacity on tiles in IE7-8 because of filter inheritance problems
  21766. if (Browser.ielt9 && this.options.opacity < 1) {
  21767. _setOpacity(tile, this.options.opacity);
  21768. }
  21769. },
  21770. _addTile: function _addTile(coords, container) {
  21771. var tilePos = this._getTilePos(coords),
  21772. key = this._tileCoordsToKey(coords);
  21773. var tile = this.createTile(this._wrapCoords(coords), bind(this._tileReady, this, coords));
  21774. this._initTile(tile);
  21775. // if createTile is defined with a second argument ("done" callback),
  21776. // we know that tile is async and will be ready later; otherwise
  21777. if (this.createTile.length < 2) {
  21778. // mark tile as ready, but delay one frame for opacity animation to happen
  21779. requestAnimFrame(bind(this._tileReady, this, coords, null, tile));
  21780. }
  21781. setPosition(tile, tilePos);
  21782. // save tile in cache
  21783. this._tiles[key] = {
  21784. el: tile,
  21785. coords: coords,
  21786. current: true
  21787. };
  21788. container.appendChild(tile);
  21789. // @event tileloadstart: TileEvent
  21790. // Fired when a tile is requested and starts loading.
  21791. this.fire('tileloadstart', {
  21792. tile: tile,
  21793. coords: coords
  21794. });
  21795. },
  21796. _tileReady: function _tileReady(coords, err, tile) {
  21797. if (err) {
  21798. // @event tileerror: TileErrorEvent
  21799. // Fired when there is an error loading a tile.
  21800. this.fire('tileerror', {
  21801. error: err,
  21802. tile: tile,
  21803. coords: coords
  21804. });
  21805. }
  21806. var key = this._tileCoordsToKey(coords);
  21807. tile = this._tiles[key];
  21808. if (!tile) {
  21809. return;
  21810. }
  21811. tile.loaded = +new Date();
  21812. if (this._map._fadeAnimated) {
  21813. _setOpacity(tile.el, 0);
  21814. cancelAnimFrame(this._fadeFrame);
  21815. this._fadeFrame = requestAnimFrame(this._updateOpacity, this);
  21816. } else {
  21817. tile.active = true;
  21818. this._pruneTiles();
  21819. }
  21820. if (!err) {
  21821. addClass(tile.el, 'leaflet-tile-loaded');
  21822. // @event tileload: TileEvent
  21823. // Fired when a tile loads.
  21824. this.fire('tileload', {
  21825. tile: tile.el,
  21826. coords: coords
  21827. });
  21828. }
  21829. if (this._noTilesToLoad()) {
  21830. this._loading = false;
  21831. // @event load: Event
  21832. // Fired when the grid layer loaded all visible tiles.
  21833. this.fire('load');
  21834. if (Browser.ielt9 || !this._map._fadeAnimated) {
  21835. requestAnimFrame(this._pruneTiles, this);
  21836. } else {
  21837. // Wait a bit more than 0.2 secs (the duration of the tile fade-in)
  21838. // to trigger a pruning.
  21839. setTimeout(bind(this._pruneTiles, this), 250);
  21840. }
  21841. }
  21842. },
  21843. _getTilePos: function _getTilePos(coords) {
  21844. return coords.scaleBy(this.getTileSize()).subtract(this._level.origin);
  21845. },
  21846. _wrapCoords: function _wrapCoords(coords) {
  21847. var newCoords = new Point(this._wrapX ? wrapNum(coords.x, this._wrapX) : coords.x, this._wrapY ? wrapNum(coords.y, this._wrapY) : coords.y);
  21848. newCoords.z = coords.z;
  21849. return newCoords;
  21850. },
  21851. _pxBoundsToTileRange: function _pxBoundsToTileRange(bounds) {
  21852. var tileSize = this.getTileSize();
  21853. return new Bounds(bounds.min.unscaleBy(tileSize).floor(), bounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));
  21854. },
  21855. _noTilesToLoad: function _noTilesToLoad() {
  21856. for (var key in this._tiles) {
  21857. if (!this._tiles[key].loaded) {
  21858. return false;
  21859. }
  21860. }
  21861. return true;
  21862. }
  21863. });
  21864. // @factory L.gridLayer(options?: GridLayer options)
  21865. // Creates a new instance of GridLayer with the supplied options.
  21866. function gridLayer(options) {
  21867. return new GridLayer(options);
  21868. }
  21869. /*
  21870. * @class TileLayer
  21871. * @inherits GridLayer
  21872. * @aka L.TileLayer
  21873. * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.
  21874. *
  21875. * @example
  21876. *
  21877. * ```js
  21878. * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(map);
  21879. * ```
  21880. *
  21881. * @section URL template
  21882. * @example
  21883. *
  21884. * A string of the following form:
  21885. *
  21886. * ```
  21887. * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'
  21888. * ```
  21889. *
  21890. * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add "&commat;2x" to the URL to load retina tiles.
  21891. *
  21892. * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:
  21893. *
  21894. * ```
  21895. * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});
  21896. * ```
  21897. */
  21898. var TileLayer = GridLayer.extend({
  21899. // @section
  21900. // @aka TileLayer options
  21901. options: {
  21902. // @option minZoom: Number = 0
  21903. // The minimum zoom level down to which this layer will be displayed (inclusive).
  21904. minZoom: 0,
  21905. // @option maxZoom: Number = 18
  21906. // The maximum zoom level up to which this layer will be displayed (inclusive).
  21907. maxZoom: 18,
  21908. // @option subdomains: String|String[] = 'abc'
  21909. // Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.
  21910. subdomains: 'abc',
  21911. // @option errorTileUrl: String = ''
  21912. // URL to the tile image to show in place of the tile that failed to load.
  21913. errorTileUrl: '',
  21914. // @option zoomOffset: Number = 0
  21915. // The zoom number used in tile URLs will be offset with this value.
  21916. zoomOffset: 0,
  21917. // @option tms: Boolean = false
  21918. // If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).
  21919. tms: false,
  21920. // @option zoomReverse: Boolean = false
  21921. // If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)
  21922. zoomReverse: false,
  21923. // @option detectRetina: Boolean = false
  21924. // If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.
  21925. detectRetina: false,
  21926. // @option crossOrigin: Boolean|String = false
  21927. // Whether the crossOrigin attribute will be added to the tiles.
  21928. // If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.
  21929. // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.
  21930. crossOrigin: false,
  21931. // @option referrerPolicy: Boolean|String = false
  21932. // Whether the referrerPolicy attribute will be added to the tiles.
  21933. // If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided.
  21934. // This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer
  21935. // (e.g. to validate an API token).
  21936. // Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values.
  21937. referrerPolicy: false
  21938. },
  21939. initialize: function initialize(url, options) {
  21940. this._url = url;
  21941. options = setOptions(this, options);
  21942. // detecting retina displays, adjusting tileSize and zoom levels
  21943. if (options.detectRetina && Browser.retina && options.maxZoom > 0) {
  21944. options.tileSize = Math.floor(options.tileSize / 2);
  21945. if (!options.zoomReverse) {
  21946. options.zoomOffset++;
  21947. options.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);
  21948. } else {
  21949. options.zoomOffset--;
  21950. options.minZoom = Math.min(options.maxZoom, options.minZoom + 1);
  21951. }
  21952. options.minZoom = Math.max(0, options.minZoom);
  21953. } else if (!options.zoomReverse) {
  21954. // make sure maxZoom is gte minZoom
  21955. options.maxZoom = Math.max(options.minZoom, options.maxZoom);
  21956. } else {
  21957. // make sure minZoom is lte maxZoom
  21958. options.minZoom = Math.min(options.maxZoom, options.minZoom);
  21959. }
  21960. if (typeof options.subdomains === 'string') {
  21961. options.subdomains = options.subdomains.split('');
  21962. }
  21963. this.on('tileunload', this._onTileRemove);
  21964. },
  21965. // @method setUrl(url: String, noRedraw?: Boolean): this
  21966. // Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).
  21967. // If the URL does not change, the layer will not be redrawn unless
  21968. // the noRedraw parameter is set to false.
  21969. setUrl: function setUrl(url, noRedraw) {
  21970. if (this._url === url && noRedraw === undefined) {
  21971. noRedraw = true;
  21972. }
  21973. this._url = url;
  21974. if (!noRedraw) {
  21975. this.redraw();
  21976. }
  21977. return this;
  21978. },
  21979. // @method createTile(coords: Object, done?: Function): HTMLElement
  21980. // Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)
  21981. // to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`
  21982. // callback is called when the tile has been loaded.
  21983. createTile: function createTile(coords, done) {
  21984. var tile = document.createElement('img');
  21985. on(tile, 'load', bind(this._tileOnLoad, this, done, tile));
  21986. on(tile, 'error', bind(this._tileOnError, this, done, tile));
  21987. if (this.options.crossOrigin || this.options.crossOrigin === '') {
  21988. tile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;
  21989. }
  21990. // for this new option we follow the documented behavior
  21991. // more closely by only setting the property when string
  21992. if (typeof this.options.referrerPolicy === 'string') {
  21993. tile.referrerPolicy = this.options.referrerPolicy;
  21994. }
  21995. // The alt attribute is set to the empty string,
  21996. // allowing screen readers to ignore the decorative image tiles.
  21997. // https://www.w3.org/WAI/tutorials/images/decorative/
  21998. // https://www.w3.org/TR/html-aria/#el-img-empty-alt
  21999. tile.alt = '';
  22000. tile.src = this.getTileUrl(coords);
  22001. return tile;
  22002. },
  22003. // @section Extension methods
  22004. // @uninheritable
  22005. // Layers extending `TileLayer` might reimplement the following method.
  22006. // @method getTileUrl(coords: Object): String
  22007. // Called only internally, returns the URL for a tile given its coordinates.
  22008. // Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.
  22009. getTileUrl: function getTileUrl(coords) {
  22010. var data = {
  22011. r: Browser.retina ? '@2x' : '',
  22012. s: this._getSubdomain(coords),
  22013. x: coords.x,
  22014. y: coords.y,
  22015. z: this._getZoomForUrl()
  22016. };
  22017. if (this._map && !this._map.options.crs.infinite) {
  22018. var invertedY = this._globalTileRange.max.y - coords.y;
  22019. if (this.options.tms) {
  22020. data['y'] = invertedY;
  22021. }
  22022. data['-y'] = invertedY;
  22023. }
  22024. return template(this._url, extend(data, this.options));
  22025. },
  22026. _tileOnLoad: function _tileOnLoad(done, tile) {
  22027. // For https://github.com/Leaflet/Leaflet/issues/3332
  22028. if (Browser.ielt9) {
  22029. setTimeout(bind(done, this, null, tile), 0);
  22030. } else {
  22031. done(null, tile);
  22032. }
  22033. },
  22034. _tileOnError: function _tileOnError(done, tile, e) {
  22035. var errorUrl = this.options.errorTileUrl;
  22036. if (errorUrl && tile.getAttribute('src') !== errorUrl) {
  22037. tile.src = errorUrl;
  22038. }
  22039. done(e, tile);
  22040. },
  22041. _onTileRemove: function _onTileRemove(e) {
  22042. e.tile.onload = null;
  22043. },
  22044. _getZoomForUrl: function _getZoomForUrl() {
  22045. var zoom = this._tileZoom,
  22046. maxZoom = this.options.maxZoom,
  22047. zoomReverse = this.options.zoomReverse,
  22048. zoomOffset = this.options.zoomOffset;
  22049. if (zoomReverse) {
  22050. zoom = maxZoom - zoom;
  22051. }
  22052. return zoom + zoomOffset;
  22053. },
  22054. _getSubdomain: function _getSubdomain(tilePoint) {
  22055. var index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;
  22056. return this.options.subdomains[index];
  22057. },
  22058. // stops loading all tiles in the background layer
  22059. _abortLoading: function _abortLoading() {
  22060. var i, tile;
  22061. for (i in this._tiles) {
  22062. if (this._tiles[i].coords.z !== this._tileZoom) {
  22063. tile = this._tiles[i].el;
  22064. tile.onload = falseFn;
  22065. tile.onerror = falseFn;
  22066. if (!tile.complete) {
  22067. tile.src = emptyImageUrl;
  22068. var coords = this._tiles[i].coords;
  22069. _remove(tile);
  22070. delete this._tiles[i];
  22071. // @event tileabort: TileEvent
  22072. // Fired when a tile was loading but is now not wanted.
  22073. this.fire('tileabort', {
  22074. tile: tile,
  22075. coords: coords
  22076. });
  22077. }
  22078. }
  22079. }
  22080. },
  22081. _removeTile: function _removeTile(key) {
  22082. var tile = this._tiles[key];
  22083. if (!tile) {
  22084. return;
  22085. }
  22086. // Cancels any pending http requests associated with the tile
  22087. tile.el.setAttribute('src', emptyImageUrl);
  22088. return GridLayer.prototype._removeTile.call(this, key);
  22089. },
  22090. _tileReady: function _tileReady(coords, err, tile) {
  22091. if (!this._map || tile && tile.getAttribute('src') === emptyImageUrl) {
  22092. return;
  22093. }
  22094. return GridLayer.prototype._tileReady.call(this, coords, err, tile);
  22095. }
  22096. });
  22097. // @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)
  22098. // Instantiates a tile layer object given a `URL template` and optionally an options object.
  22099. function tileLayer(url, options) {
  22100. return new TileLayer(url, options);
  22101. }
  22102. /*
  22103. * @class TileLayer.WMS
  22104. * @inherits TileLayer
  22105. * @aka L.TileLayer.WMS
  22106. * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.
  22107. *
  22108. * @example
  22109. *
  22110. * ```js
  22111. * var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", {
  22112. * layers: 'nexrad-n0r-900913',
  22113. * format: 'image/png',
  22114. * transparent: true,
  22115. * attribution: "Weather data © 2012 IEM Nexrad"
  22116. * });
  22117. * ```
  22118. */
  22119. var TileLayerWMS = TileLayer.extend({
  22120. // @section
  22121. // @aka TileLayer.WMS options
  22122. // If any custom options not documented here are used, they will be sent to the
  22123. // WMS server as extra parameters in each request URL. This can be useful for
  22124. // [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html).
  22125. defaultWmsParams: {
  22126. service: 'WMS',
  22127. request: 'GetMap',
  22128. // @option layers: String = ''
  22129. // **(required)** Comma-separated list of WMS layers to show.
  22130. layers: '',
  22131. // @option styles: String = ''
  22132. // Comma-separated list of WMS styles.
  22133. styles: '',
  22134. // @option format: String = 'image/jpeg'
  22135. // WMS image format (use `'image/png'` for layers with transparency).
  22136. format: 'image/jpeg',
  22137. // @option transparent: Boolean = false
  22138. // If `true`, the WMS service will return images with transparency.
  22139. transparent: false,
  22140. // @option version: String = '1.1.1'
  22141. // Version of the WMS service to use
  22142. version: '1.1.1'
  22143. },
  22144. options: {
  22145. // @option crs: CRS = null
  22146. // Coordinate Reference System to use for the WMS requests, defaults to
  22147. // map CRS. Don't change this if you're not sure what it means.
  22148. crs: null,
  22149. // @option uppercase: Boolean = false
  22150. // If `true`, WMS request parameter keys will be uppercase.
  22151. uppercase: false
  22152. },
  22153. initialize: function initialize(url, options) {
  22154. this._url = url;
  22155. var wmsParams = extend({}, this.defaultWmsParams);
  22156. // all keys that are not TileLayer options go to WMS params
  22157. for (var i in options) {
  22158. if (!(i in this.options)) {
  22159. wmsParams[i] = options[i];
  22160. }
  22161. }
  22162. options = setOptions(this, options);
  22163. var realRetina = options.detectRetina && Browser.retina ? 2 : 1;
  22164. var tileSize = this.getTileSize();
  22165. wmsParams.width = tileSize.x * realRetina;
  22166. wmsParams.height = tileSize.y * realRetina;
  22167. this.wmsParams = wmsParams;
  22168. },
  22169. onAdd: function onAdd(map) {
  22170. this._crs = this.options.crs || map.options.crs;
  22171. this._wmsVersion = parseFloat(this.wmsParams.version);
  22172. var projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';
  22173. this.wmsParams[projectionKey] = this._crs.code;
  22174. TileLayer.prototype.onAdd.call(this, map);
  22175. },
  22176. getTileUrl: function getTileUrl(coords) {
  22177. var tileBounds = this._tileCoordsToNwSe(coords),
  22178. crs = this._crs,
  22179. bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),
  22180. min = bounds.min,
  22181. max = bounds.max,
  22182. bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ? [min.y, min.x, max.y, max.x] : [min.x, min.y, max.x, max.y]).join(','),
  22183. url = TileLayer.prototype.getTileUrl.call(this, coords);
  22184. return url + getParamString(this.wmsParams, url, this.options.uppercase) + (this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;
  22185. },
  22186. // @method setParams(params: Object, noRedraw?: Boolean): this
  22187. // Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).
  22188. setParams: function setParams(params, noRedraw) {
  22189. extend(this.wmsParams, params);
  22190. if (!noRedraw) {
  22191. this.redraw();
  22192. }
  22193. return this;
  22194. }
  22195. });
  22196. // @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)
  22197. // Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.
  22198. function tileLayerWMS(url, options) {
  22199. return new TileLayerWMS(url, options);
  22200. }
  22201. TileLayer.WMS = TileLayerWMS;
  22202. tileLayer.wms = tileLayerWMS;
  22203. /*
  22204. * @class Renderer
  22205. * @inherits Layer
  22206. * @aka L.Renderer
  22207. *
  22208. * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the
  22209. * DOM container of the renderer, its bounds, and its zoom animation.
  22210. *
  22211. * A `Renderer` works as an implicit layer group for all `Path`s - the renderer
  22212. * itself can be added or removed to the map. All paths use a renderer, which can
  22213. * be implicit (the map will decide the type of renderer and use it automatically)
  22214. * or explicit (using the [`renderer`](#path-renderer) option of the path).
  22215. *
  22216. * Do not use this class directly, use `SVG` and `Canvas` instead.
  22217. *
  22218. * @event update: Event
  22219. * Fired when the renderer updates its bounds, center and zoom, for example when
  22220. * its map has moved
  22221. */
  22222. var Renderer = Layer.extend({
  22223. // @section
  22224. // @aka Renderer options
  22225. options: {
  22226. // @option padding: Number = 0.1
  22227. // How much to extend the clip area around the map view (relative to its size)
  22228. // e.g. 0.1 would be 10% of map view in each direction
  22229. padding: 0.1
  22230. },
  22231. initialize: function initialize(options) {
  22232. setOptions(this, options);
  22233. stamp(this);
  22234. this._layers = this._layers || {};
  22235. },
  22236. onAdd: function onAdd() {
  22237. if (!this._container) {
  22238. this._initContainer(); // defined by renderer implementations
  22239. if (this._zoomAnimated) {
  22240. addClass(this._container, 'leaflet-zoom-animated');
  22241. }
  22242. }
  22243. this.getPane().appendChild(this._container);
  22244. this._update();
  22245. this.on('update', this._updatePaths, this);
  22246. },
  22247. onRemove: function onRemove() {
  22248. this.off('update', this._updatePaths, this);
  22249. this._destroyContainer();
  22250. },
  22251. getEvents: function getEvents() {
  22252. var events = {
  22253. viewreset: this._reset,
  22254. zoom: this._onZoom,
  22255. moveend: this._update,
  22256. zoomend: this._onZoomEnd
  22257. };
  22258. if (this._zoomAnimated) {
  22259. events.zoomanim = this._onAnimZoom;
  22260. }
  22261. return events;
  22262. },
  22263. _onAnimZoom: function _onAnimZoom(ev) {
  22264. this._updateTransform(ev.center, ev.zoom);
  22265. },
  22266. _onZoom: function _onZoom() {
  22267. this._updateTransform(this._map.getCenter(), this._map.getZoom());
  22268. },
  22269. _updateTransform: function _updateTransform(center, zoom) {
  22270. var scale = this._map.getZoomScale(zoom, this._zoom),
  22271. viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),
  22272. currentCenterPoint = this._map.project(this._center, zoom),
  22273. topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint).subtract(this._map._getNewPixelOrigin(center, zoom));
  22274. if (Browser.any3d) {
  22275. setTransform(this._container, topLeftOffset, scale);
  22276. } else {
  22277. setPosition(this._container, topLeftOffset);
  22278. }
  22279. },
  22280. _reset: function _reset() {
  22281. this._update();
  22282. this._updateTransform(this._center, this._zoom);
  22283. for (var id in this._layers) {
  22284. this._layers[id]._reset();
  22285. }
  22286. },
  22287. _onZoomEnd: function _onZoomEnd() {
  22288. for (var id in this._layers) {
  22289. this._layers[id]._project();
  22290. }
  22291. },
  22292. _updatePaths: function _updatePaths() {
  22293. for (var id in this._layers) {
  22294. this._layers[id]._update();
  22295. }
  22296. },
  22297. _update: function _update() {
  22298. // Update pixel bounds of renderer container (for positioning/sizing/clipping later)
  22299. // Subclasses are responsible of firing the 'update' event.
  22300. var p = this.options.padding,
  22301. size = this._map.getSize(),
  22302. min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();
  22303. this._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());
  22304. this._center = this._map.getCenter();
  22305. this._zoom = this._map.getZoom();
  22306. }
  22307. });
  22308. /*
  22309. * @class Canvas
  22310. * @inherits Renderer
  22311. * @aka L.Canvas
  22312. *
  22313. * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).
  22314. * Inherits `Renderer`.
  22315. *
  22316. * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not
  22317. * available in all web browsers, notably IE8, and overlapping geometries might
  22318. * not display properly in some edge cases.
  22319. *
  22320. * @example
  22321. *
  22322. * Use Canvas by default for all paths in the map:
  22323. *
  22324. * ```js
  22325. * var map = L.map('map', {
  22326. * renderer: L.canvas()
  22327. * });
  22328. * ```
  22329. *
  22330. * Use a Canvas renderer with extra padding for specific vector geometries:
  22331. *
  22332. * ```js
  22333. * var map = L.map('map');
  22334. * var myRenderer = L.canvas({ padding: 0.5 });
  22335. * var line = L.polyline( coordinates, { renderer: myRenderer } );
  22336. * var circle = L.circle( center, { renderer: myRenderer } );
  22337. * ```
  22338. */
  22339. var Canvas = Renderer.extend({
  22340. // @section
  22341. // @aka Canvas options
  22342. options: {
  22343. // @option tolerance: Number = 0
  22344. // How much to extend the click tolerance around a path/object on the map.
  22345. tolerance: 0
  22346. },
  22347. getEvents: function getEvents() {
  22348. var events = Renderer.prototype.getEvents.call(this);
  22349. events.viewprereset = this._onViewPreReset;
  22350. return events;
  22351. },
  22352. _onViewPreReset: function _onViewPreReset() {
  22353. // Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once
  22354. this._postponeUpdatePaths = true;
  22355. },
  22356. onAdd: function onAdd() {
  22357. Renderer.prototype.onAdd.call(this);
  22358. // Redraw vectors since canvas is cleared upon removal,
  22359. // in case of removing the renderer itself from the map.
  22360. this._draw();
  22361. },
  22362. _initContainer: function _initContainer() {
  22363. var container = this._container = document.createElement('canvas');
  22364. on(container, 'mousemove', this._onMouseMove, this);
  22365. on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);
  22366. on(container, 'mouseout', this._handleMouseOut, this);
  22367. container['_leaflet_disable_events'] = true;
  22368. this._ctx = container.getContext('2d');
  22369. },
  22370. _destroyContainer: function _destroyContainer() {
  22371. cancelAnimFrame(this._redrawRequest);
  22372. delete this._ctx;
  22373. _remove(this._container);
  22374. off(this._container);
  22375. delete this._container;
  22376. },
  22377. _updatePaths: function _updatePaths() {
  22378. if (this._postponeUpdatePaths) {
  22379. return;
  22380. }
  22381. var layer;
  22382. this._redrawBounds = null;
  22383. for (var id in this._layers) {
  22384. layer = this._layers[id];
  22385. layer._update();
  22386. }
  22387. this._redraw();
  22388. },
  22389. _update: function _update() {
  22390. if (this._map._animatingZoom && this._bounds) {
  22391. return;
  22392. }
  22393. Renderer.prototype._update.call(this);
  22394. var b = this._bounds,
  22395. container = this._container,
  22396. size = b.getSize(),
  22397. m = Browser.retina ? 2 : 1;
  22398. setPosition(container, b.min);
  22399. // set canvas size (also clearing it); use double size on retina
  22400. container.width = m * size.x;
  22401. container.height = m * size.y;
  22402. container.style.width = size.x + 'px';
  22403. container.style.height = size.y + 'px';
  22404. if (Browser.retina) {
  22405. this._ctx.scale(2, 2);
  22406. }
  22407. // translate so we use the same path coordinates after canvas element moves
  22408. this._ctx.translate(-b.min.x, -b.min.y);
  22409. // Tell paths to redraw themselves
  22410. this.fire('update');
  22411. },
  22412. _reset: function _reset() {
  22413. Renderer.prototype._reset.call(this);
  22414. if (this._postponeUpdatePaths) {
  22415. this._postponeUpdatePaths = false;
  22416. this._updatePaths();
  22417. }
  22418. },
  22419. _initPath: function _initPath(layer) {
  22420. this._updateDashArray(layer);
  22421. this._layers[stamp(layer)] = layer;
  22422. var order = layer._order = {
  22423. layer: layer,
  22424. prev: this._drawLast,
  22425. next: null
  22426. };
  22427. if (this._drawLast) {
  22428. this._drawLast.next = order;
  22429. }
  22430. this._drawLast = order;
  22431. this._drawFirst = this._drawFirst || this._drawLast;
  22432. },
  22433. _addPath: function _addPath(layer) {
  22434. this._requestRedraw(layer);
  22435. },
  22436. _removePath: function _removePath(layer) {
  22437. var order = layer._order;
  22438. var next = order.next;
  22439. var prev = order.prev;
  22440. if (next) {
  22441. next.prev = prev;
  22442. } else {
  22443. this._drawLast = prev;
  22444. }
  22445. if (prev) {
  22446. prev.next = next;
  22447. } else {
  22448. this._drawFirst = next;
  22449. }
  22450. delete layer._order;
  22451. delete this._layers[stamp(layer)];
  22452. this._requestRedraw(layer);
  22453. },
  22454. _updatePath: function _updatePath(layer) {
  22455. // Redraw the union of the layer's old pixel
  22456. // bounds and the new pixel bounds.
  22457. this._extendRedrawBounds(layer);
  22458. layer._project();
  22459. layer._update();
  22460. // The redraw will extend the redraw bounds
  22461. // with the new pixel bounds.
  22462. this._requestRedraw(layer);
  22463. },
  22464. _updateStyle: function _updateStyle(layer) {
  22465. this._updateDashArray(layer);
  22466. this._requestRedraw(layer);
  22467. },
  22468. _updateDashArray: function _updateDashArray(layer) {
  22469. if (typeof layer.options.dashArray === 'string') {
  22470. var parts = layer.options.dashArray.split(/[, ]+/),
  22471. dashArray = [],
  22472. dashValue,
  22473. i;
  22474. for (i = 0; i < parts.length; i++) {
  22475. dashValue = Number(parts[i]);
  22476. // Ignore dash array containing invalid lengths
  22477. if (isNaN(dashValue)) {
  22478. return;
  22479. }
  22480. dashArray.push(dashValue);
  22481. }
  22482. layer.options._dashArray = dashArray;
  22483. } else {
  22484. layer.options._dashArray = layer.options.dashArray;
  22485. }
  22486. },
  22487. _requestRedraw: function _requestRedraw(layer) {
  22488. if (!this._map) {
  22489. return;
  22490. }
  22491. this._extendRedrawBounds(layer);
  22492. this._redrawRequest = this._redrawRequest || requestAnimFrame(this._redraw, this);
  22493. },
  22494. _extendRedrawBounds: function _extendRedrawBounds(layer) {
  22495. if (layer._pxBounds) {
  22496. var padding = (layer.options.weight || 0) + 1;
  22497. this._redrawBounds = this._redrawBounds || new Bounds();
  22498. this._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));
  22499. this._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));
  22500. }
  22501. },
  22502. _redraw: function _redraw() {
  22503. this._redrawRequest = null;
  22504. if (this._redrawBounds) {
  22505. this._redrawBounds.min._floor();
  22506. this._redrawBounds.max._ceil();
  22507. }
  22508. this._clear(); // clear layers in redraw bounds
  22509. this._draw(); // draw layers
  22510. this._redrawBounds = null;
  22511. },
  22512. _clear: function _clear() {
  22513. var bounds = this._redrawBounds;
  22514. if (bounds) {
  22515. var size = bounds.getSize();
  22516. this._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);
  22517. } else {
  22518. this._ctx.save();
  22519. this._ctx.setTransform(1, 0, 0, 1, 0, 0);
  22520. this._ctx.clearRect(0, 0, this._container.width, this._container.height);
  22521. this._ctx.restore();
  22522. }
  22523. },
  22524. _draw: function _draw() {
  22525. var layer,
  22526. bounds = this._redrawBounds;
  22527. this._ctx.save();
  22528. if (bounds) {
  22529. var size = bounds.getSize();
  22530. this._ctx.beginPath();
  22531. this._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);
  22532. this._ctx.clip();
  22533. }
  22534. this._drawing = true;
  22535. for (var order = this._drawFirst; order; order = order.next) {
  22536. layer = order.layer;
  22537. if (!bounds || layer._pxBounds && layer._pxBounds.intersects(bounds)) {
  22538. layer._updatePath();
  22539. }
  22540. }
  22541. this._drawing = false;
  22542. this._ctx.restore(); // Restore state before clipping.
  22543. },
  22544. _updatePoly: function _updatePoly(layer, closed) {
  22545. if (!this._drawing) {
  22546. return;
  22547. }
  22548. var i,
  22549. j,
  22550. len2,
  22551. p,
  22552. parts = layer._parts,
  22553. len = parts.length,
  22554. ctx = this._ctx;
  22555. if (!len) {
  22556. return;
  22557. }
  22558. ctx.beginPath();
  22559. for (i = 0; i < len; i++) {
  22560. for (j = 0, len2 = parts[i].length; j < len2; j++) {
  22561. p = parts[i][j];
  22562. ctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);
  22563. }
  22564. if (closed) {
  22565. ctx.closePath();
  22566. }
  22567. }
  22568. this._fillStroke(ctx, layer);
  22569. // TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature
  22570. },
  22571. _updateCircle: function _updateCircle(layer) {
  22572. if (!this._drawing || layer._empty()) {
  22573. return;
  22574. }
  22575. var p = layer._point,
  22576. ctx = this._ctx,
  22577. r = Math.max(Math.round(layer._radius), 1),
  22578. s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;
  22579. if (s !== 1) {
  22580. ctx.save();
  22581. ctx.scale(1, s);
  22582. }
  22583. ctx.beginPath();
  22584. ctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);
  22585. if (s !== 1) {
  22586. ctx.restore();
  22587. }
  22588. this._fillStroke(ctx, layer);
  22589. },
  22590. _fillStroke: function _fillStroke(ctx, layer) {
  22591. var options = layer.options;
  22592. if (options.fill) {
  22593. ctx.globalAlpha = options.fillOpacity;
  22594. ctx.fillStyle = options.fillColor || options.color;
  22595. ctx.fill(options.fillRule || 'evenodd');
  22596. }
  22597. if (options.stroke && options.weight !== 0) {
  22598. if (ctx.setLineDash) {
  22599. ctx.setLineDash(layer.options && layer.options._dashArray || []);
  22600. }
  22601. ctx.globalAlpha = options.opacity;
  22602. ctx.lineWidth = options.weight;
  22603. ctx.strokeStyle = options.color;
  22604. ctx.lineCap = options.lineCap;
  22605. ctx.lineJoin = options.lineJoin;
  22606. ctx.stroke();
  22607. }
  22608. },
  22609. // Canvas obviously doesn't have mouse events for individual drawn objects,
  22610. // so we emulate that by calculating what's under the mouse on mousemove/click manually
  22611. _onClick: function _onClick(e) {
  22612. var point = this._map.mouseEventToLayerPoint(e),
  22613. layer,
  22614. clickedLayer;
  22615. for (var order = this._drawFirst; order; order = order.next) {
  22616. layer = order.layer;
  22617. if (layer.options.interactive && layer._containsPoint(point)) {
  22618. if (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) {
  22619. clickedLayer = layer;
  22620. }
  22621. }
  22622. }
  22623. this._fireEvent(clickedLayer ? [clickedLayer] : false, e);
  22624. },
  22625. _onMouseMove: function _onMouseMove(e) {
  22626. if (!this._map || this._map.dragging.moving() || this._map._animatingZoom) {
  22627. return;
  22628. }
  22629. var point = this._map.mouseEventToLayerPoint(e);
  22630. this._handleMouseHover(e, point);
  22631. },
  22632. _handleMouseOut: function _handleMouseOut(e) {
  22633. var layer = this._hoveredLayer;
  22634. if (layer) {
  22635. // if we're leaving the layer, fire mouseout
  22636. removeClass(this._container, 'leaflet-interactive');
  22637. this._fireEvent([layer], e, 'mouseout');
  22638. this._hoveredLayer = null;
  22639. this._mouseHoverThrottled = false;
  22640. }
  22641. },
  22642. _handleMouseHover: function _handleMouseHover(e, point) {
  22643. if (this._mouseHoverThrottled) {
  22644. return;
  22645. }
  22646. var layer, candidateHoveredLayer;
  22647. for (var order = this._drawFirst; order; order = order.next) {
  22648. layer = order.layer;
  22649. if (layer.options.interactive && layer._containsPoint(point)) {
  22650. candidateHoveredLayer = layer;
  22651. }
  22652. }
  22653. if (candidateHoveredLayer !== this._hoveredLayer) {
  22654. this._handleMouseOut(e);
  22655. if (candidateHoveredLayer) {
  22656. addClass(this._container, 'leaflet-interactive'); // change cursor
  22657. this._fireEvent([candidateHoveredLayer], e, 'mouseover');
  22658. this._hoveredLayer = candidateHoveredLayer;
  22659. }
  22660. }
  22661. this._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e);
  22662. this._mouseHoverThrottled = true;
  22663. setTimeout(bind(function () {
  22664. this._mouseHoverThrottled = false;
  22665. }, this), 32);
  22666. },
  22667. _fireEvent: function _fireEvent(layers, e, type) {
  22668. this._map._fireDOMEvent(e, type || e.type, layers);
  22669. },
  22670. _bringToFront: function _bringToFront(layer) {
  22671. var order = layer._order;
  22672. if (!order) {
  22673. return;
  22674. }
  22675. var next = order.next;
  22676. var prev = order.prev;
  22677. if (next) {
  22678. next.prev = prev;
  22679. } else {
  22680. // Already last
  22681. return;
  22682. }
  22683. if (prev) {
  22684. prev.next = next;
  22685. } else if (next) {
  22686. // Update first entry unless this is the
  22687. // single entry
  22688. this._drawFirst = next;
  22689. }
  22690. order.prev = this._drawLast;
  22691. this._drawLast.next = order;
  22692. order.next = null;
  22693. this._drawLast = order;
  22694. this._requestRedraw(layer);
  22695. },
  22696. _bringToBack: function _bringToBack(layer) {
  22697. var order = layer._order;
  22698. if (!order) {
  22699. return;
  22700. }
  22701. var next = order.next;
  22702. var prev = order.prev;
  22703. if (prev) {
  22704. prev.next = next;
  22705. } else {
  22706. // Already first
  22707. return;
  22708. }
  22709. if (next) {
  22710. next.prev = prev;
  22711. } else if (prev) {
  22712. // Update last entry unless this is the
  22713. // single entry
  22714. this._drawLast = prev;
  22715. }
  22716. order.prev = null;
  22717. order.next = this._drawFirst;
  22718. this._drawFirst.prev = order;
  22719. this._drawFirst = order;
  22720. this._requestRedraw(layer);
  22721. }
  22722. });
  22723. // @factory L.canvas(options?: Renderer options)
  22724. // Creates a Canvas renderer with the given options.
  22725. function canvas(options) {
  22726. return Browser.canvas ? new Canvas(options) : null;
  22727. }
  22728. /*
  22729. * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!
  22730. */
  22731. var vmlCreate = function () {
  22732. try {
  22733. document.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');
  22734. return function (name) {
  22735. return document.createElement('<lvml:' + name + ' class="lvml">');
  22736. };
  22737. } catch (e) {
  22738. // Do not return fn from catch block so `e` can be garbage collected
  22739. // See https://github.com/Leaflet/Leaflet/pull/7279
  22740. }
  22741. return function (name) {
  22742. return document.createElement('<' + name + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">');
  22743. };
  22744. }();
  22745. /*
  22746. * @class SVG
  22747. *
  22748. *
  22749. * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility
  22750. * with old versions of Internet Explorer.
  22751. */
  22752. // mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences
  22753. var vmlMixin = {
  22754. _initContainer: function _initContainer() {
  22755. this._container = create$1('div', 'leaflet-vml-container');
  22756. },
  22757. _update: function _update() {
  22758. if (this._map._animatingZoom) {
  22759. return;
  22760. }
  22761. Renderer.prototype._update.call(this);
  22762. this.fire('update');
  22763. },
  22764. _initPath: function _initPath(layer) {
  22765. var container = layer._container = vmlCreate('shape');
  22766. addClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));
  22767. container.coordsize = '1 1';
  22768. layer._path = vmlCreate('path');
  22769. container.appendChild(layer._path);
  22770. this._updateStyle(layer);
  22771. this._layers[stamp(layer)] = layer;
  22772. },
  22773. _addPath: function _addPath(layer) {
  22774. var container = layer._container;
  22775. this._container.appendChild(container);
  22776. if (layer.options.interactive) {
  22777. layer.addInteractiveTarget(container);
  22778. }
  22779. },
  22780. _removePath: function _removePath(layer) {
  22781. var container = layer._container;
  22782. _remove(container);
  22783. layer.removeInteractiveTarget(container);
  22784. delete this._layers[stamp(layer)];
  22785. },
  22786. _updateStyle: function _updateStyle(layer) {
  22787. var stroke = layer._stroke,
  22788. fill = layer._fill,
  22789. options = layer.options,
  22790. container = layer._container;
  22791. container.stroked = !!options.stroke;
  22792. container.filled = !!options.fill;
  22793. if (options.stroke) {
  22794. if (!stroke) {
  22795. stroke = layer._stroke = vmlCreate('stroke');
  22796. }
  22797. container.appendChild(stroke);
  22798. stroke.weight = options.weight + 'px';
  22799. stroke.color = options.color;
  22800. stroke.opacity = options.opacity;
  22801. if (options.dashArray) {
  22802. stroke.dashStyle = isArray(options.dashArray) ? options.dashArray.join(' ') : options.dashArray.replace(/( *, *)/g, ' ');
  22803. } else {
  22804. stroke.dashStyle = '';
  22805. }
  22806. stroke.endcap = options.lineCap.replace('butt', 'flat');
  22807. stroke.joinstyle = options.lineJoin;
  22808. } else if (stroke) {
  22809. container.removeChild(stroke);
  22810. layer._stroke = null;
  22811. }
  22812. if (options.fill) {
  22813. if (!fill) {
  22814. fill = layer._fill = vmlCreate('fill');
  22815. }
  22816. container.appendChild(fill);
  22817. fill.color = options.fillColor || options.color;
  22818. fill.opacity = options.fillOpacity;
  22819. } else if (fill) {
  22820. container.removeChild(fill);
  22821. layer._fill = null;
  22822. }
  22823. },
  22824. _updateCircle: function _updateCircle(layer) {
  22825. var p = layer._point.round(),
  22826. r = Math.round(layer._radius),
  22827. r2 = Math.round(layer._radiusY || r);
  22828. this._setPath(layer, layer._empty() ? 'M0 0' : 'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + 65535 * 360);
  22829. },
  22830. _setPath: function _setPath(layer, path) {
  22831. layer._path.v = path;
  22832. },
  22833. _bringToFront: function _bringToFront(layer) {
  22834. toFront(layer._container);
  22835. },
  22836. _bringToBack: function _bringToBack(layer) {
  22837. toBack(layer._container);
  22838. }
  22839. };
  22840. var create = Browser.vml ? vmlCreate : svgCreate;
  22841. /*
  22842. * @class SVG
  22843. * @inherits Renderer
  22844. * @aka L.SVG
  22845. *
  22846. * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).
  22847. * Inherits `Renderer`.
  22848. *
  22849. * Due to [technical limitations](https://caniuse.com/svg), SVG is not
  22850. * available in all web browsers, notably Android 2.x and 3.x.
  22851. *
  22852. * Although SVG is not available on IE7 and IE8, these browsers support
  22853. * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)
  22854. * (a now deprecated technology), and the SVG renderer will fall back to VML in
  22855. * this case.
  22856. *
  22857. * @example
  22858. *
  22859. * Use SVG by default for all paths in the map:
  22860. *
  22861. * ```js
  22862. * var map = L.map('map', {
  22863. * renderer: L.svg()
  22864. * });
  22865. * ```
  22866. *
  22867. * Use a SVG renderer with extra padding for specific vector geometries:
  22868. *
  22869. * ```js
  22870. * var map = L.map('map');
  22871. * var myRenderer = L.svg({ padding: 0.5 });
  22872. * var line = L.polyline( coordinates, { renderer: myRenderer } );
  22873. * var circle = L.circle( center, { renderer: myRenderer } );
  22874. * ```
  22875. */
  22876. var SVG = Renderer.extend({
  22877. _initContainer: function _initContainer() {
  22878. this._container = create('svg');
  22879. // makes it possible to click through svg root; we'll reset it back in individual paths
  22880. this._container.setAttribute('pointer-events', 'none');
  22881. this._rootGroup = create('g');
  22882. this._container.appendChild(this._rootGroup);
  22883. },
  22884. _destroyContainer: function _destroyContainer() {
  22885. _remove(this._container);
  22886. off(this._container);
  22887. delete this._container;
  22888. delete this._rootGroup;
  22889. delete this._svgSize;
  22890. },
  22891. _update: function _update() {
  22892. if (this._map._animatingZoom && this._bounds) {
  22893. return;
  22894. }
  22895. Renderer.prototype._update.call(this);
  22896. var b = this._bounds,
  22897. size = b.getSize(),
  22898. container = this._container;
  22899. // set size of svg-container if changed
  22900. if (!this._svgSize || !this._svgSize.equals(size)) {
  22901. this._svgSize = size;
  22902. container.setAttribute('width', size.x);
  22903. container.setAttribute('height', size.y);
  22904. }
  22905. // movement: update container viewBox so that we don't have to change coordinates of individual layers
  22906. setPosition(container, b.min);
  22907. container.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));
  22908. this.fire('update');
  22909. },
  22910. // methods below are called by vector layers implementations
  22911. _initPath: function _initPath(layer) {
  22912. var path = layer._path = create('path');
  22913. // @namespace Path
  22914. // @option className: String = null
  22915. // Custom class name set on an element. Only for SVG renderer.
  22916. if (layer.options.className) {
  22917. addClass(path, layer.options.className);
  22918. }
  22919. if (layer.options.interactive) {
  22920. addClass(path, 'leaflet-interactive');
  22921. }
  22922. this._updateStyle(layer);
  22923. this._layers[stamp(layer)] = layer;
  22924. },
  22925. _addPath: function _addPath(layer) {
  22926. if (!this._rootGroup) {
  22927. this._initContainer();
  22928. }
  22929. this._rootGroup.appendChild(layer._path);
  22930. layer.addInteractiveTarget(layer._path);
  22931. },
  22932. _removePath: function _removePath(layer) {
  22933. _remove(layer._path);
  22934. layer.removeInteractiveTarget(layer._path);
  22935. delete this._layers[stamp(layer)];
  22936. },
  22937. _updatePath: function _updatePath(layer) {
  22938. layer._project();
  22939. layer._update();
  22940. },
  22941. _updateStyle: function _updateStyle(layer) {
  22942. var path = layer._path,
  22943. options = layer.options;
  22944. if (!path) {
  22945. return;
  22946. }
  22947. if (options.stroke) {
  22948. path.setAttribute('stroke', options.color);
  22949. path.setAttribute('stroke-opacity', options.opacity);
  22950. path.setAttribute('stroke-width', options.weight);
  22951. path.setAttribute('stroke-linecap', options.lineCap);
  22952. path.setAttribute('stroke-linejoin', options.lineJoin);
  22953. if (options.dashArray) {
  22954. path.setAttribute('stroke-dasharray', options.dashArray);
  22955. } else {
  22956. path.removeAttribute('stroke-dasharray');
  22957. }
  22958. if (options.dashOffset) {
  22959. path.setAttribute('stroke-dashoffset', options.dashOffset);
  22960. } else {
  22961. path.removeAttribute('stroke-dashoffset');
  22962. }
  22963. } else {
  22964. path.setAttribute('stroke', 'none');
  22965. }
  22966. if (options.fill) {
  22967. path.setAttribute('fill', options.fillColor || options.color);
  22968. path.setAttribute('fill-opacity', options.fillOpacity);
  22969. path.setAttribute('fill-rule', options.fillRule || 'evenodd');
  22970. } else {
  22971. path.setAttribute('fill', 'none');
  22972. }
  22973. },
  22974. _updatePoly: function _updatePoly(layer, closed) {
  22975. this._setPath(layer, pointsToPath(layer._parts, closed));
  22976. },
  22977. _updateCircle: function _updateCircle(layer) {
  22978. var p = layer._point,
  22979. r = Math.max(Math.round(layer._radius), 1),
  22980. r2 = Math.max(Math.round(layer._radiusY), 1) || r,
  22981. arc = 'a' + r + ',' + r2 + ' 0 1,0 ';
  22982. // drawing a circle with two half-arcs
  22983. var d = layer._empty() ? 'M0 0' : 'M' + (p.x - r) + ',' + p.y + arc + r * 2 + ',0 ' + arc + -r * 2 + ',0 ';
  22984. this._setPath(layer, d);
  22985. },
  22986. _setPath: function _setPath(layer, path) {
  22987. layer._path.setAttribute('d', path);
  22988. },
  22989. // SVG does not have the concept of zIndex so we resort to changing the DOM order of elements
  22990. _bringToFront: function _bringToFront(layer) {
  22991. toFront(layer._path);
  22992. },
  22993. _bringToBack: function _bringToBack(layer) {
  22994. toBack(layer._path);
  22995. }
  22996. });
  22997. if (Browser.vml) {
  22998. SVG.include(vmlMixin);
  22999. }
  23000. // @namespace SVG
  23001. // @factory L.svg(options?: Renderer options)
  23002. // Creates a SVG renderer with the given options.
  23003. function svg(options) {
  23004. return Browser.svg || Browser.vml ? new SVG(options) : null;
  23005. }
  23006. Map.include({
  23007. // @namespace Map; @method getRenderer(layer: Path): Renderer
  23008. // Returns the instance of `Renderer` that should be used to render the given
  23009. // `Path`. It will ensure that the `renderer` options of the map and paths
  23010. // are respected, and that the renderers do exist on the map.
  23011. getRenderer: function getRenderer(layer) {
  23012. // @namespace Path; @option renderer: Renderer
  23013. // Use this specific instance of `Renderer` for this path. Takes
  23014. // precedence over the map's [default renderer](#map-renderer).
  23015. var renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;
  23016. if (!renderer) {
  23017. renderer = this._renderer = this._createRenderer();
  23018. }
  23019. if (!this.hasLayer(renderer)) {
  23020. this.addLayer(renderer);
  23021. }
  23022. return renderer;
  23023. },
  23024. _getPaneRenderer: function _getPaneRenderer(name) {
  23025. if (name === 'overlayPane' || name === undefined) {
  23026. return false;
  23027. }
  23028. var renderer = this._paneRenderers[name];
  23029. if (renderer === undefined) {
  23030. renderer = this._createRenderer({
  23031. pane: name
  23032. });
  23033. this._paneRenderers[name] = renderer;
  23034. }
  23035. return renderer;
  23036. },
  23037. _createRenderer: function _createRenderer(options) {
  23038. // @namespace Map; @option preferCanvas: Boolean = false
  23039. // Whether `Path`s should be rendered on a `Canvas` renderer.
  23040. // By default, all `Path`s are rendered in a `SVG` renderer.
  23041. return this.options.preferCanvas && canvas(options) || svg(options);
  23042. }
  23043. });
  23044. /*
  23045. * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.
  23046. */
  23047. /*
  23048. * @class Rectangle
  23049. * @aka L.Rectangle
  23050. * @inherits Polygon
  23051. *
  23052. * A class for drawing rectangle overlays on a map. Extends `Polygon`.
  23053. *
  23054. * @example
  23055. *
  23056. * ```js
  23057. * // define rectangle geographical bounds
  23058. * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];
  23059. *
  23060. * // create an orange rectangle
  23061. * L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map);
  23062. *
  23063. * // zoom the map to the rectangle bounds
  23064. * map.fitBounds(bounds);
  23065. * ```
  23066. *
  23067. */
  23068. var Rectangle = Polygon.extend({
  23069. initialize: function initialize(latLngBounds, options) {
  23070. Polygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);
  23071. },
  23072. // @method setBounds(latLngBounds: LatLngBounds): this
  23073. // Redraws the rectangle with the passed bounds.
  23074. setBounds: function setBounds(latLngBounds) {
  23075. return this.setLatLngs(this._boundsToLatLngs(latLngBounds));
  23076. },
  23077. _boundsToLatLngs: function _boundsToLatLngs(latLngBounds) {
  23078. latLngBounds = toLatLngBounds(latLngBounds);
  23079. return [latLngBounds.getSouthWest(), latLngBounds.getNorthWest(), latLngBounds.getNorthEast(), latLngBounds.getSouthEast()];
  23080. }
  23081. });
  23082. // @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)
  23083. function rectangle(latLngBounds, options) {
  23084. return new Rectangle(latLngBounds, options);
  23085. }
  23086. SVG.create = create;
  23087. SVG.pointsToPath = pointsToPath;
  23088. GeoJSON.geometryToLayer = geometryToLayer;
  23089. GeoJSON.coordsToLatLng = coordsToLatLng;
  23090. GeoJSON.coordsToLatLngs = coordsToLatLngs;
  23091. GeoJSON.latLngToCoords = latLngToCoords;
  23092. GeoJSON.latLngsToCoords = latLngsToCoords;
  23093. GeoJSON.getFeature = getFeature;
  23094. GeoJSON.asFeature = asFeature;
  23095. /*
  23096. * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map
  23097. * (zoom to a selected bounding box), enabled by default.
  23098. */
  23099. // @namespace Map
  23100. // @section Interaction Options
  23101. Map.mergeOptions({
  23102. // @option boxZoom: Boolean = true
  23103. // Whether the map can be zoomed to a rectangular area specified by
  23104. // dragging the mouse while pressing the shift key.
  23105. boxZoom: true
  23106. });
  23107. var BoxZoom = Handler.extend({
  23108. initialize: function initialize(map) {
  23109. this._map = map;
  23110. this._container = map._container;
  23111. this._pane = map._panes.overlayPane;
  23112. this._resetStateTimeout = 0;
  23113. map.on('unload', this._destroy, this);
  23114. },
  23115. addHooks: function addHooks() {
  23116. on(this._container, 'mousedown', this._onMouseDown, this);
  23117. },
  23118. removeHooks: function removeHooks() {
  23119. off(this._container, 'mousedown', this._onMouseDown, this);
  23120. },
  23121. moved: function moved() {
  23122. return this._moved;
  23123. },
  23124. _destroy: function _destroy() {
  23125. _remove(this._pane);
  23126. delete this._pane;
  23127. },
  23128. _resetState: function _resetState() {
  23129. this._resetStateTimeout = 0;
  23130. this._moved = false;
  23131. },
  23132. _clearDeferredResetState: function _clearDeferredResetState() {
  23133. if (this._resetStateTimeout !== 0) {
  23134. clearTimeout(this._resetStateTimeout);
  23135. this._resetStateTimeout = 0;
  23136. }
  23137. },
  23138. _onMouseDown: function _onMouseDown(e) {
  23139. if (!e.shiftKey || e.which !== 1 && e.button !== 1) {
  23140. return false;
  23141. }
  23142. // Clear the deferred resetState if it hasn't executed yet, otherwise it
  23143. // will interrupt the interaction and orphan a box element in the container.
  23144. this._clearDeferredResetState();
  23145. this._resetState();
  23146. disableTextSelection();
  23147. disableImageDrag();
  23148. this._startPoint = this._map.mouseEventToContainerPoint(e);
  23149. on(document, {
  23150. contextmenu: stop,
  23151. mousemove: this._onMouseMove,
  23152. mouseup: this._onMouseUp,
  23153. keydown: this._onKeyDown
  23154. }, this);
  23155. },
  23156. _onMouseMove: function _onMouseMove(e) {
  23157. if (!this._moved) {
  23158. this._moved = true;
  23159. this._box = create$1('div', 'leaflet-zoom-box', this._container);
  23160. addClass(this._container, 'leaflet-crosshair');
  23161. this._map.fire('boxzoomstart');
  23162. }
  23163. this._point = this._map.mouseEventToContainerPoint(e);
  23164. var bounds = new Bounds(this._point, this._startPoint),
  23165. size = bounds.getSize();
  23166. setPosition(this._box, bounds.min);
  23167. this._box.style.width = size.x + 'px';
  23168. this._box.style.height = size.y + 'px';
  23169. },
  23170. _finish: function _finish() {
  23171. if (this._moved) {
  23172. _remove(this._box);
  23173. removeClass(this._container, 'leaflet-crosshair');
  23174. }
  23175. enableTextSelection();
  23176. enableImageDrag();
  23177. off(document, {
  23178. contextmenu: stop,
  23179. mousemove: this._onMouseMove,
  23180. mouseup: this._onMouseUp,
  23181. keydown: this._onKeyDown
  23182. }, this);
  23183. },
  23184. _onMouseUp: function _onMouseUp(e) {
  23185. if (e.which !== 1 && e.button !== 1) {
  23186. return;
  23187. }
  23188. this._finish();
  23189. if (!this._moved) {
  23190. return;
  23191. }
  23192. // Postpone to next JS tick so internal click event handling
  23193. // still see it as "moved".
  23194. this._clearDeferredResetState();
  23195. this._resetStateTimeout = setTimeout(bind(this._resetState, this), 0);
  23196. var bounds = new LatLngBounds(this._map.containerPointToLatLng(this._startPoint), this._map.containerPointToLatLng(this._point));
  23197. this._map.fitBounds(bounds).fire('boxzoomend', {
  23198. boxZoomBounds: bounds
  23199. });
  23200. },
  23201. _onKeyDown: function _onKeyDown(e) {
  23202. if (e.keyCode === 27) {
  23203. this._finish();
  23204. this._clearDeferredResetState();
  23205. this._resetState();
  23206. }
  23207. }
  23208. });
  23209. // @section Handlers
  23210. // @property boxZoom: Handler
  23211. // Box (shift-drag with mouse) zoom handler.
  23212. Map.addInitHook('addHandler', 'boxZoom', BoxZoom);
  23213. /*
  23214. * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.
  23215. */
  23216. // @namespace Map
  23217. // @section Interaction Options
  23218. Map.mergeOptions({
  23219. // @option doubleClickZoom: Boolean|String = true
  23220. // Whether the map can be zoomed in by double clicking on it and
  23221. // zoomed out by double clicking while holding shift. If passed
  23222. // `'center'`, double-click zoom will zoom to the center of the
  23223. // view regardless of where the mouse was.
  23224. doubleClickZoom: true
  23225. });
  23226. var DoubleClickZoom = Handler.extend({
  23227. addHooks: function addHooks() {
  23228. this._map.on('dblclick', this._onDoubleClick, this);
  23229. },
  23230. removeHooks: function removeHooks() {
  23231. this._map.off('dblclick', this._onDoubleClick, this);
  23232. },
  23233. _onDoubleClick: function _onDoubleClick(e) {
  23234. var map = this._map,
  23235. oldZoom = map.getZoom(),
  23236. delta = map.options.zoomDelta,
  23237. zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;
  23238. if (map.options.doubleClickZoom === 'center') {
  23239. map.setZoom(zoom);
  23240. } else {
  23241. map.setZoomAround(e.containerPoint, zoom);
  23242. }
  23243. }
  23244. });
  23245. // @section Handlers
  23246. //
  23247. // Map properties include interaction handlers that allow you to control
  23248. // interaction behavior in runtime, enabling or disabling certain features such
  23249. // as dragging or touch zoom (see `Handler` methods). For example:
  23250. //
  23251. // ```js
  23252. // map.doubleClickZoom.disable();
  23253. // ```
  23254. //
  23255. // @property doubleClickZoom: Handler
  23256. // Double click zoom handler.
  23257. Map.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);
  23258. /*
  23259. * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.
  23260. */
  23261. // @namespace Map
  23262. // @section Interaction Options
  23263. Map.mergeOptions({
  23264. // @option dragging: Boolean = true
  23265. // Whether the map is draggable with mouse/touch or not.
  23266. dragging: true,
  23267. // @section Panning Inertia Options
  23268. // @option inertia: Boolean = *
  23269. // If enabled, panning of the map will have an inertia effect where
  23270. // the map builds momentum while dragging and continues moving in
  23271. // the same direction for some time. Feels especially nice on touch
  23272. // devices. Enabled by default.
  23273. inertia: true,
  23274. // @option inertiaDeceleration: Number = 3000
  23275. // The rate with which the inertial movement slows down, in pixels/second².
  23276. inertiaDeceleration: 3400,
  23277. // px/s^2
  23278. // @option inertiaMaxSpeed: Number = Infinity
  23279. // Max speed of the inertial movement, in pixels/second.
  23280. inertiaMaxSpeed: Infinity,
  23281. // px/s
  23282. // @option easeLinearity: Number = 0.2
  23283. easeLinearity: 0.2,
  23284. // TODO refactor, move to CRS
  23285. // @option worldCopyJump: Boolean = false
  23286. // With this option enabled, the map tracks when you pan to another "copy"
  23287. // of the world and seamlessly jumps to the original one so that all overlays
  23288. // like markers and vector layers are still visible.
  23289. worldCopyJump: false,
  23290. // @option maxBoundsViscosity: Number = 0.0
  23291. // If `maxBounds` is set, this option will control how solid the bounds
  23292. // are when dragging the map around. The default value of `0.0` allows the
  23293. // user to drag outside the bounds at normal speed, higher values will
  23294. // slow down map dragging outside bounds, and `1.0` makes the bounds fully
  23295. // solid, preventing the user from dragging outside the bounds.
  23296. maxBoundsViscosity: 0.0
  23297. });
  23298. var Drag = Handler.extend({
  23299. addHooks: function addHooks() {
  23300. if (!this._draggable) {
  23301. var map = this._map;
  23302. this._draggable = new Draggable(map._mapPane, map._container);
  23303. this._draggable.on({
  23304. dragstart: this._onDragStart,
  23305. drag: this._onDrag,
  23306. dragend: this._onDragEnd
  23307. }, this);
  23308. this._draggable.on('predrag', this._onPreDragLimit, this);
  23309. if (map.options.worldCopyJump) {
  23310. this._draggable.on('predrag', this._onPreDragWrap, this);
  23311. map.on('zoomend', this._onZoomEnd, this);
  23312. map.whenReady(this._onZoomEnd, this);
  23313. }
  23314. }
  23315. addClass(this._map._container, 'leaflet-grab leaflet-touch-drag');
  23316. this._draggable.enable();
  23317. this._positions = [];
  23318. this._times = [];
  23319. },
  23320. removeHooks: function removeHooks() {
  23321. removeClass(this._map._container, 'leaflet-grab');
  23322. removeClass(this._map._container, 'leaflet-touch-drag');
  23323. this._draggable.disable();
  23324. },
  23325. moved: function moved() {
  23326. return this._draggable && this._draggable._moved;
  23327. },
  23328. moving: function moving() {
  23329. return this._draggable && this._draggable._moving;
  23330. },
  23331. _onDragStart: function _onDragStart() {
  23332. var map = this._map;
  23333. map._stop();
  23334. if (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {
  23335. var bounds = toLatLngBounds(this._map.options.maxBounds);
  23336. this._offsetLimit = toBounds(this._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1), this._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1).add(this._map.getSize()));
  23337. this._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));
  23338. } else {
  23339. this._offsetLimit = null;
  23340. }
  23341. map.fire('movestart').fire('dragstart');
  23342. if (map.options.inertia) {
  23343. this._positions = [];
  23344. this._times = [];
  23345. }
  23346. },
  23347. _onDrag: function _onDrag(e) {
  23348. if (this._map.options.inertia) {
  23349. var time = this._lastTime = +new Date(),
  23350. pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;
  23351. this._positions.push(pos);
  23352. this._times.push(time);
  23353. this._prunePositions(time);
  23354. }
  23355. this._map.fire('move', e).fire('drag', e);
  23356. },
  23357. _prunePositions: function _prunePositions(time) {
  23358. while (this._positions.length > 1 && time - this._times[0] > 50) {
  23359. this._positions.shift();
  23360. this._times.shift();
  23361. }
  23362. },
  23363. _onZoomEnd: function _onZoomEnd() {
  23364. var pxCenter = this._map.getSize().divideBy(2),
  23365. pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);
  23366. this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;
  23367. this._worldWidth = this._map.getPixelWorldBounds().getSize().x;
  23368. },
  23369. _viscousLimit: function _viscousLimit(value, threshold) {
  23370. return value - (value - threshold) * this._viscosity;
  23371. },
  23372. _onPreDragLimit: function _onPreDragLimit() {
  23373. if (!this._viscosity || !this._offsetLimit) {
  23374. return;
  23375. }
  23376. var offset = this._draggable._newPos.subtract(this._draggable._startPos);
  23377. var limit = this._offsetLimit;
  23378. if (offset.x < limit.min.x) {
  23379. offset.x = this._viscousLimit(offset.x, limit.min.x);
  23380. }
  23381. if (offset.y < limit.min.y) {
  23382. offset.y = this._viscousLimit(offset.y, limit.min.y);
  23383. }
  23384. if (offset.x > limit.max.x) {
  23385. offset.x = this._viscousLimit(offset.x, limit.max.x);
  23386. }
  23387. if (offset.y > limit.max.y) {
  23388. offset.y = this._viscousLimit(offset.y, limit.max.y);
  23389. }
  23390. this._draggable._newPos = this._draggable._startPos.add(offset);
  23391. },
  23392. _onPreDragWrap: function _onPreDragWrap() {
  23393. // TODO refactor to be able to adjust map pane position after zoom
  23394. var worldWidth = this._worldWidth,
  23395. halfWidth = Math.round(worldWidth / 2),
  23396. dx = this._initialWorldOffset,
  23397. x = this._draggable._newPos.x,
  23398. newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,
  23399. newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,
  23400. newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;
  23401. this._draggable._absPos = this._draggable._newPos.clone();
  23402. this._draggable._newPos.x = newX;
  23403. },
  23404. _onDragEnd: function _onDragEnd(e) {
  23405. var map = this._map,
  23406. options = map.options,
  23407. noInertia = !options.inertia || e.noInertia || this._times.length < 2;
  23408. map.fire('dragend', e);
  23409. if (noInertia) {
  23410. map.fire('moveend');
  23411. } else {
  23412. this._prunePositions(+new Date());
  23413. var direction = this._lastPos.subtract(this._positions[0]),
  23414. duration = (this._lastTime - this._times[0]) / 1000,
  23415. ease = options.easeLinearity,
  23416. speedVector = direction.multiplyBy(ease / duration),
  23417. speed = speedVector.distanceTo([0, 0]),
  23418. limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),
  23419. limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),
  23420. decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),
  23421. offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();
  23422. if (!offset.x && !offset.y) {
  23423. map.fire('moveend');
  23424. } else {
  23425. offset = map._limitOffset(offset, map.options.maxBounds);
  23426. requestAnimFrame(function () {
  23427. map.panBy(offset, {
  23428. duration: decelerationDuration,
  23429. easeLinearity: ease,
  23430. noMoveStart: true,
  23431. animate: true
  23432. });
  23433. });
  23434. }
  23435. }
  23436. }
  23437. });
  23438. // @section Handlers
  23439. // @property dragging: Handler
  23440. // Map dragging handler (by both mouse and touch).
  23441. Map.addInitHook('addHandler', 'dragging', Drag);
  23442. /*
  23443. * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.
  23444. */
  23445. // @namespace Map
  23446. // @section Keyboard Navigation Options
  23447. Map.mergeOptions({
  23448. // @option keyboard: Boolean = true
  23449. // Makes the map focusable and allows users to navigate the map with keyboard
  23450. // arrows and `+`/`-` keys.
  23451. keyboard: true,
  23452. // @option keyboardPanDelta: Number = 80
  23453. // Amount of pixels to pan when pressing an arrow key.
  23454. keyboardPanDelta: 80
  23455. });
  23456. var Keyboard = Handler.extend({
  23457. keyCodes: {
  23458. left: [37],
  23459. right: [39],
  23460. down: [40],
  23461. up: [38],
  23462. zoomIn: [187, 107, 61, 171],
  23463. zoomOut: [189, 109, 54, 173]
  23464. },
  23465. initialize: function initialize(map) {
  23466. this._map = map;
  23467. this._setPanDelta(map.options.keyboardPanDelta);
  23468. this._setZoomDelta(map.options.zoomDelta);
  23469. },
  23470. addHooks: function addHooks() {
  23471. var container = this._map._container;
  23472. // make the container focusable by tabbing
  23473. if (container.tabIndex <= 0) {
  23474. container.tabIndex = '0';
  23475. }
  23476. on(container, {
  23477. focus: this._onFocus,
  23478. blur: this._onBlur,
  23479. mousedown: this._onMouseDown
  23480. }, this);
  23481. this._map.on({
  23482. focus: this._addHooks,
  23483. blur: this._removeHooks
  23484. }, this);
  23485. },
  23486. removeHooks: function removeHooks() {
  23487. this._removeHooks();
  23488. off(this._map._container, {
  23489. focus: this._onFocus,
  23490. blur: this._onBlur,
  23491. mousedown: this._onMouseDown
  23492. }, this);
  23493. this._map.off({
  23494. focus: this._addHooks,
  23495. blur: this._removeHooks
  23496. }, this);
  23497. },
  23498. _onMouseDown: function _onMouseDown() {
  23499. if (this._focused) {
  23500. return;
  23501. }
  23502. var body = document.body,
  23503. docEl = document.documentElement,
  23504. top = body.scrollTop || docEl.scrollTop,
  23505. left = body.scrollLeft || docEl.scrollLeft;
  23506. this._map._container.focus();
  23507. window.scrollTo(left, top);
  23508. },
  23509. _onFocus: function _onFocus() {
  23510. this._focused = true;
  23511. this._map.fire('focus');
  23512. },
  23513. _onBlur: function _onBlur() {
  23514. this._focused = false;
  23515. this._map.fire('blur');
  23516. },
  23517. _setPanDelta: function _setPanDelta(panDelta) {
  23518. var keys = this._panKeys = {},
  23519. codes = this.keyCodes,
  23520. i,
  23521. len;
  23522. for (i = 0, len = codes.left.length; i < len; i++) {
  23523. keys[codes.left[i]] = [-1 * panDelta, 0];
  23524. }
  23525. for (i = 0, len = codes.right.length; i < len; i++) {
  23526. keys[codes.right[i]] = [panDelta, 0];
  23527. }
  23528. for (i = 0, len = codes.down.length; i < len; i++) {
  23529. keys[codes.down[i]] = [0, panDelta];
  23530. }
  23531. for (i = 0, len = codes.up.length; i < len; i++) {
  23532. keys[codes.up[i]] = [0, -1 * panDelta];
  23533. }
  23534. },
  23535. _setZoomDelta: function _setZoomDelta(zoomDelta) {
  23536. var keys = this._zoomKeys = {},
  23537. codes = this.keyCodes,
  23538. i,
  23539. len;
  23540. for (i = 0, len = codes.zoomIn.length; i < len; i++) {
  23541. keys[codes.zoomIn[i]] = zoomDelta;
  23542. }
  23543. for (i = 0, len = codes.zoomOut.length; i < len; i++) {
  23544. keys[codes.zoomOut[i]] = -zoomDelta;
  23545. }
  23546. },
  23547. _addHooks: function _addHooks() {
  23548. on(document, 'keydown', this._onKeyDown, this);
  23549. },
  23550. _removeHooks: function _removeHooks() {
  23551. off(document, 'keydown', this._onKeyDown, this);
  23552. },
  23553. _onKeyDown: function _onKeyDown(e) {
  23554. if (e.altKey || e.ctrlKey || e.metaKey) {
  23555. return;
  23556. }
  23557. var key = e.keyCode,
  23558. map = this._map,
  23559. offset;
  23560. if (key in this._panKeys) {
  23561. if (!map._panAnim || !map._panAnim._inProgress) {
  23562. offset = this._panKeys[key];
  23563. if (e.shiftKey) {
  23564. offset = toPoint(offset).multiplyBy(3);
  23565. }
  23566. if (map.options.maxBounds) {
  23567. offset = map._limitOffset(toPoint(offset), map.options.maxBounds);
  23568. }
  23569. if (map.options.worldCopyJump) {
  23570. var newLatLng = map.wrapLatLng(map.unproject(map.project(map.getCenter()).add(offset)));
  23571. map.panTo(newLatLng);
  23572. } else {
  23573. map.panBy(offset);
  23574. }
  23575. }
  23576. } else if (key in this._zoomKeys) {
  23577. map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);
  23578. } else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {
  23579. map.closePopup();
  23580. } else {
  23581. return;
  23582. }
  23583. stop(e);
  23584. }
  23585. });
  23586. // @section Handlers
  23587. // @section Handlers
  23588. // @property keyboard: Handler
  23589. // Keyboard navigation handler.
  23590. Map.addInitHook('addHandler', 'keyboard', Keyboard);
  23591. /*
  23592. * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.
  23593. */
  23594. // @namespace Map
  23595. // @section Interaction Options
  23596. Map.mergeOptions({
  23597. // @section Mouse wheel options
  23598. // @option scrollWheelZoom: Boolean|String = true
  23599. // Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,
  23600. // it will zoom to the center of the view regardless of where the mouse was.
  23601. scrollWheelZoom: true,
  23602. // @option wheelDebounceTime: Number = 40
  23603. // Limits the rate at which a wheel can fire (in milliseconds). By default
  23604. // user can't zoom via wheel more often than once per 40 ms.
  23605. wheelDebounceTime: 40,
  23606. // @option wheelPxPerZoomLevel: Number = 60
  23607. // How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))
  23608. // mean a change of one full zoom level. Smaller values will make wheel-zooming
  23609. // faster (and vice versa).
  23610. wheelPxPerZoomLevel: 60
  23611. });
  23612. var ScrollWheelZoom = Handler.extend({
  23613. addHooks: function addHooks() {
  23614. on(this._map._container, 'wheel', this._onWheelScroll, this);
  23615. this._delta = 0;
  23616. },
  23617. removeHooks: function removeHooks() {
  23618. off(this._map._container, 'wheel', this._onWheelScroll, this);
  23619. },
  23620. _onWheelScroll: function _onWheelScroll(e) {
  23621. var delta = getWheelDelta(e);
  23622. var debounce = this._map.options.wheelDebounceTime;
  23623. this._delta += delta;
  23624. this._lastMousePos = this._map.mouseEventToContainerPoint(e);
  23625. if (!this._startTime) {
  23626. this._startTime = +new Date();
  23627. }
  23628. var left = Math.max(debounce - (+new Date() - this._startTime), 0);
  23629. clearTimeout(this._timer);
  23630. this._timer = setTimeout(bind(this._performZoom, this), left);
  23631. stop(e);
  23632. },
  23633. _performZoom: function _performZoom() {
  23634. var map = this._map,
  23635. zoom = map.getZoom(),
  23636. snap = this._map.options.zoomSnap || 0;
  23637. map._stop(); // stop panning and fly animations if any
  23638. // map the delta with a sigmoid function to -4..4 range leaning on -1..1
  23639. var d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),
  23640. d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,
  23641. d4 = snap ? Math.ceil(d3 / snap) * snap : d3,
  23642. delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;
  23643. this._delta = 0;
  23644. this._startTime = null;
  23645. if (!delta) {
  23646. return;
  23647. }
  23648. if (map.options.scrollWheelZoom === 'center') {
  23649. map.setZoom(zoom + delta);
  23650. } else {
  23651. map.setZoomAround(this._lastMousePos, zoom + delta);
  23652. }
  23653. }
  23654. });
  23655. // @section Handlers
  23656. // @property scrollWheelZoom: Handler
  23657. // Scroll wheel zoom handler.
  23658. Map.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);
  23659. /*
  23660. * L.Map.TapHold is used to simulate `contextmenu` event on long hold,
  23661. * which otherwise is not fired by mobile Safari.
  23662. */
  23663. var tapHoldDelay = 600;
  23664. // @namespace Map
  23665. // @section Interaction Options
  23666. Map.mergeOptions({
  23667. // @section Touch interaction options
  23668. // @option tapHold: Boolean
  23669. // Enables simulation of `contextmenu` event, default is `true` for mobile Safari.
  23670. tapHold: Browser.touchNative && Browser.safari && Browser.mobile,
  23671. // @option tapTolerance: Number = 15
  23672. // The max number of pixels a user can shift his finger during touch
  23673. // for it to be considered a valid tap.
  23674. tapTolerance: 15
  23675. });
  23676. var TapHold = Handler.extend({
  23677. addHooks: function addHooks() {
  23678. on(this._map._container, 'touchstart', this._onDown, this);
  23679. },
  23680. removeHooks: function removeHooks() {
  23681. off(this._map._container, 'touchstart', this._onDown, this);
  23682. },
  23683. _onDown: function _onDown(e) {
  23684. clearTimeout(this._holdTimeout);
  23685. if (e.touches.length !== 1) {
  23686. return;
  23687. }
  23688. var first = e.touches[0];
  23689. this._startPos = this._newPos = new Point(first.clientX, first.clientY);
  23690. this._holdTimeout = setTimeout(bind(function () {
  23691. this._cancel();
  23692. if (!this._isTapValid()) {
  23693. return;
  23694. }
  23695. // prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events
  23696. on(document, 'touchend', preventDefault);
  23697. on(document, 'touchend touchcancel', this._cancelClickPrevent);
  23698. this._simulateEvent('contextmenu', first);
  23699. }, this), tapHoldDelay);
  23700. on(document, 'touchend touchcancel contextmenu', this._cancel, this);
  23701. on(document, 'touchmove', this._onMove, this);
  23702. },
  23703. _cancelClickPrevent: function cancelClickPrevent() {
  23704. off(document, 'touchend', preventDefault);
  23705. off(document, 'touchend touchcancel', cancelClickPrevent);
  23706. },
  23707. _cancel: function _cancel() {
  23708. clearTimeout(this._holdTimeout);
  23709. off(document, 'touchend touchcancel contextmenu', this._cancel, this);
  23710. off(document, 'touchmove', this._onMove, this);
  23711. },
  23712. _onMove: function _onMove(e) {
  23713. var first = e.touches[0];
  23714. this._newPos = new Point(first.clientX, first.clientY);
  23715. },
  23716. _isTapValid: function _isTapValid() {
  23717. return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;
  23718. },
  23719. _simulateEvent: function _simulateEvent(type, e) {
  23720. var simulatedEvent = new MouseEvent(type, {
  23721. bubbles: true,
  23722. cancelable: true,
  23723. view: window,
  23724. // detail: 1,
  23725. screenX: e.screenX,
  23726. screenY: e.screenY,
  23727. clientX: e.clientX,
  23728. clientY: e.clientY
  23729. // button: 2,
  23730. // buttons: 2
  23731. });
  23732. simulatedEvent._simulated = true;
  23733. e.target.dispatchEvent(simulatedEvent);
  23734. }
  23735. });
  23736. // @section Handlers
  23737. // @property tapHold: Handler
  23738. // Long tap handler to simulate `contextmenu` event (useful in mobile Safari).
  23739. Map.addInitHook('addHandler', 'tapHold', TapHold);
  23740. /*
  23741. * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.
  23742. */
  23743. // @namespace Map
  23744. // @section Interaction Options
  23745. Map.mergeOptions({
  23746. // @section Touch interaction options
  23747. // @option touchZoom: Boolean|String = *
  23748. // Whether the map can be zoomed by touch-dragging with two fingers. If
  23749. // passed `'center'`, it will zoom to the center of the view regardless of
  23750. // where the touch events (fingers) were. Enabled for touch-capable web
  23751. // browsers.
  23752. touchZoom: Browser.touch,
  23753. // @option bounceAtZoomLimits: Boolean = true
  23754. // Set it to false if you don't want the map to zoom beyond min/max zoom
  23755. // and then bounce back when pinch-zooming.
  23756. bounceAtZoomLimits: true
  23757. });
  23758. var TouchZoom = Handler.extend({
  23759. addHooks: function addHooks() {
  23760. addClass(this._map._container, 'leaflet-touch-zoom');
  23761. on(this._map._container, 'touchstart', this._onTouchStart, this);
  23762. },
  23763. removeHooks: function removeHooks() {
  23764. removeClass(this._map._container, 'leaflet-touch-zoom');
  23765. off(this._map._container, 'touchstart', this._onTouchStart, this);
  23766. },
  23767. _onTouchStart: function _onTouchStart(e) {
  23768. var map = this._map;
  23769. if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) {
  23770. return;
  23771. }
  23772. var p1 = map.mouseEventToContainerPoint(e.touches[0]),
  23773. p2 = map.mouseEventToContainerPoint(e.touches[1]);
  23774. this._centerPoint = map.getSize()._divideBy(2);
  23775. this._startLatLng = map.containerPointToLatLng(this._centerPoint);
  23776. if (map.options.touchZoom !== 'center') {
  23777. this._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));
  23778. }
  23779. this._startDist = p1.distanceTo(p2);
  23780. this._startZoom = map.getZoom();
  23781. this._moved = false;
  23782. this._zooming = true;
  23783. map._stop();
  23784. on(document, 'touchmove', this._onTouchMove, this);
  23785. on(document, 'touchend touchcancel', this._onTouchEnd, this);
  23786. preventDefault(e);
  23787. },
  23788. _onTouchMove: function _onTouchMove(e) {
  23789. if (!e.touches || e.touches.length !== 2 || !this._zooming) {
  23790. return;
  23791. }
  23792. var map = this._map,
  23793. p1 = map.mouseEventToContainerPoint(e.touches[0]),
  23794. p2 = map.mouseEventToContainerPoint(e.touches[1]),
  23795. scale = p1.distanceTo(p2) / this._startDist;
  23796. this._zoom = map.getScaleZoom(scale, this._startZoom);
  23797. if (!map.options.bounceAtZoomLimits && (this._zoom < map.getMinZoom() && scale < 1 || this._zoom > map.getMaxZoom() && scale > 1)) {
  23798. this._zoom = map._limitZoom(this._zoom);
  23799. }
  23800. if (map.options.touchZoom === 'center') {
  23801. this._center = this._startLatLng;
  23802. if (scale === 1) {
  23803. return;
  23804. }
  23805. } else {
  23806. // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng
  23807. var delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);
  23808. if (scale === 1 && delta.x === 0 && delta.y === 0) {
  23809. return;
  23810. }
  23811. this._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);
  23812. }
  23813. if (!this._moved) {
  23814. map._moveStart(true, false);
  23815. this._moved = true;
  23816. }
  23817. cancelAnimFrame(this._animRequest);
  23818. var moveFn = bind(map._move, map, this._center, this._zoom, {
  23819. pinch: true,
  23820. round: false
  23821. }, undefined);
  23822. this._animRequest = requestAnimFrame(moveFn, this, true);
  23823. preventDefault(e);
  23824. },
  23825. _onTouchEnd: function _onTouchEnd() {
  23826. if (!this._moved || !this._zooming) {
  23827. this._zooming = false;
  23828. return;
  23829. }
  23830. this._zooming = false;
  23831. cancelAnimFrame(this._animRequest);
  23832. off(document, 'touchmove', this._onTouchMove, this);
  23833. off(document, 'touchend touchcancel', this._onTouchEnd, this);
  23834. // Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.
  23835. if (this._map.options.zoomAnimation) {
  23836. this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);
  23837. } else {
  23838. this._map._resetView(this._center, this._map._limitZoom(this._zoom));
  23839. }
  23840. }
  23841. });
  23842. // @section Handlers
  23843. // @property touchZoom: Handler
  23844. // Touch zoom handler.
  23845. Map.addInitHook('addHandler', 'touchZoom', TouchZoom);
  23846. Map.BoxZoom = BoxZoom;
  23847. Map.DoubleClickZoom = DoubleClickZoom;
  23848. Map.Drag = Drag;
  23849. Map.Keyboard = Keyboard;
  23850. Map.ScrollWheelZoom = ScrollWheelZoom;
  23851. Map.TapHold = TapHold;
  23852. Map.TouchZoom = TouchZoom;
  23853. exports.Bounds = Bounds;
  23854. exports.Browser = Browser;
  23855. exports.CRS = CRS;
  23856. exports.Canvas = Canvas;
  23857. exports.Circle = Circle;
  23858. exports.CircleMarker = CircleMarker;
  23859. exports.Class = Class;
  23860. exports.Control = Control;
  23861. exports.DivIcon = DivIcon;
  23862. exports.DivOverlay = DivOverlay;
  23863. exports.DomEvent = DomEvent;
  23864. exports.DomUtil = DomUtil;
  23865. exports.Draggable = Draggable;
  23866. exports.Evented = Evented;
  23867. exports.FeatureGroup = FeatureGroup;
  23868. exports.GeoJSON = GeoJSON;
  23869. exports.GridLayer = GridLayer;
  23870. exports.Handler = Handler;
  23871. exports.Icon = Icon;
  23872. exports.ImageOverlay = ImageOverlay;
  23873. exports.LatLng = LatLng;
  23874. exports.LatLngBounds = LatLngBounds;
  23875. exports.Layer = Layer;
  23876. exports.LayerGroup = LayerGroup;
  23877. exports.LineUtil = LineUtil;
  23878. exports.Map = Map;
  23879. exports.Marker = Marker;
  23880. exports.Mixin = Mixin;
  23881. exports.Path = Path;
  23882. exports.Point = Point;
  23883. exports.PolyUtil = PolyUtil;
  23884. exports.Polygon = Polygon;
  23885. exports.Polyline = Polyline;
  23886. exports.Popup = Popup;
  23887. exports.PosAnimation = PosAnimation;
  23888. exports.Projection = index;
  23889. exports.Rectangle = Rectangle;
  23890. exports.Renderer = Renderer;
  23891. exports.SVG = SVG;
  23892. exports.SVGOverlay = SVGOverlay;
  23893. exports.TileLayer = TileLayer;
  23894. exports.Tooltip = Tooltip;
  23895. exports.Transformation = Transformation;
  23896. exports.Util = Util;
  23897. exports.VideoOverlay = VideoOverlay;
  23898. exports.bind = bind;
  23899. exports.bounds = toBounds;
  23900. exports.canvas = canvas;
  23901. exports.circle = circle;
  23902. exports.circleMarker = circleMarker;
  23903. exports.control = control;
  23904. exports.divIcon = divIcon;
  23905. exports.extend = extend;
  23906. exports.featureGroup = featureGroup;
  23907. exports.geoJSON = geoJSON;
  23908. exports.geoJson = geoJson;
  23909. exports.gridLayer = gridLayer;
  23910. exports.icon = icon;
  23911. exports.imageOverlay = imageOverlay;
  23912. exports.latLng = toLatLng;
  23913. exports.latLngBounds = toLatLngBounds;
  23914. exports.layerGroup = layerGroup;
  23915. exports.map = createMap;
  23916. exports.marker = marker;
  23917. exports.point = toPoint;
  23918. exports.polygon = polygon;
  23919. exports.polyline = polyline;
  23920. exports.popup = popup;
  23921. exports.rectangle = rectangle;
  23922. exports.setOptions = setOptions;
  23923. exports.stamp = stamp;
  23924. exports.svg = svg;
  23925. exports.svgOverlay = svgOverlay;
  23926. exports.tileLayer = tileLayer;
  23927. exports.tooltip = tooltip;
  23928. exports.transformation = toTransformation;
  23929. exports.version = version;
  23930. exports.videoOverlay = videoOverlay;
  23931. var oldL = window.L;
  23932. exports.noConflict = function () {
  23933. window.L = oldL;
  23934. return this;
  23935. };
  23936. // Always export us to window global (see #2364)
  23937. window.L = exports;
  23938. });
  23939. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 7)["default"]))
  23940. /***/ }),
  23941. /* 28 */
  23942. /*!**********************************************************************************************!*\
  23943. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/images/marker-icon-2x.png ***!
  23944. \**********************************************************************************************/
  23945. /*! no static exports found */
  23946. /***/ (function(module, exports) {
  23947. module.exports = "/node-modules/leaflet/dist/images/marker-icon-2x.png";
  23948. /***/ }),
  23949. /* 29 */
  23950. /*!*********************************************************************************************!*\
  23951. !*** D:/Work2/Orienteering/TrackOffical/node_modules/leaflet/dist/images/marker-shadow.png ***!
  23952. \*********************************************************************************************/
  23953. /*! no static exports found */
  23954. /***/ (function(module, exports) {
  23955. module.exports = "/node-modules/leaflet/dist/images/marker-shadow.png";
  23956. /***/ }),
  23957. /* 30 */
  23958. /*!************************************************************************************************************************************!*\
  23959. !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=style&index=0&id=7c4266a1&lang=scss&scoped=true&mpType=page ***!
  23960. \************************************************************************************************************************************/
  23961. /*! no static exports found */
  23962. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  23963. "use strict";
  23964. __webpack_require__.r(__webpack_exports__);
  23965. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./mapShow.vue?vue&type=style&index=0&id=7c4266a1&lang=scss&scoped=true&mpType=page */ 31);
  23966. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
  23967. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  23968. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_mapShow_vue_vue_type_style_index_0_id_7c4266a1_lang_scss_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
  23969. /***/ }),
  23970. /* 31 */
  23971. /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  23972. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=style&index=0&id=7c4266a1&lang=scss&scoped=true&mpType=page ***!
  23973. \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  23974. /*! no static exports found */
  23975. /***/ (function(module, exports, __webpack_require__) {
  23976. // style-loader: Adds some css to the DOM by adding a <style> tag
  23977. // load the styles
  23978. var content = __webpack_require__(/*! !../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./mapShow.vue?vue&type=style&index=0&id=7c4266a1&lang=scss&scoped=true&mpType=page */ 32);
  23979. if(content.__esModule) content = content.default;
  23980. if(typeof content === 'string') content = [[module.i, content, '']];
  23981. if(content.locals) module.exports = content.locals;
  23982. // add the styles to the DOM
  23983. var add = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  23984. var update = add("7b306cbc", content, false, {"sourceMap":false,"shadowMode":false});
  23985. // Hot Module Replacement
  23986. if(false) {}
  23987. /***/ }),
  23988. /* 32 */
  23989. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  23990. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=style&index=0&id=7c4266a1&lang=scss&scoped=true&mpType=page ***!
  23991. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  23992. /*! no static exports found */
  23993. /***/ (function(module, exports, __webpack_require__) {
  23994. // Imports
  23995. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  23996. exports = ___CSS_LOADER_API_IMPORT___(false);
  23997. // Module
  23998. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n.map[data-v-7c4266a1] {\n width: 100vw;\n height: 95vh;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: white;\n}\n.leaflet-tile-container img[data-v-7c4266a1] {\n width: 257px !important;\n height: 257px !important;\n}\n.my-div-icon[data-v-7c4266a1] {\n text-align: center !important;\n font-size: 50px !important;\n color: red !important;\n}\n", ""]);
  23999. // Exports
  24000. module.exports = exports;
  24001. /***/ }),
  24002. /* 33 */
  24003. /*!**********************************************************************************************************!*\
  24004. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
  24005. \**********************************************************************************************************/
  24006. /*! exports provided: default */
  24007. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24008. "use strict";
  24009. __webpack_require__.r(__webpack_exports__);
  24010. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
  24011. /* globals __VUE_SSR_CONTEXT__ */
  24012. // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
  24013. // This module is a runtime utility for cleaner component module output and will
  24014. // be included in the final webpack user bundle.
  24015. function normalizeComponent (
  24016. scriptExports,
  24017. render,
  24018. staticRenderFns,
  24019. functionalTemplate,
  24020. injectStyles,
  24021. scopeId,
  24022. moduleIdentifier, /* server only */
  24023. shadowMode, /* vue-cli only */
  24024. components, // fixed by xxxxxx auto components
  24025. renderjs // fixed by xxxxxx renderjs
  24026. ) {
  24027. // Vue.extend constructor export interop
  24028. var options = typeof scriptExports === 'function'
  24029. ? scriptExports.options
  24030. : scriptExports
  24031. // fixed by xxxxxx auto components
  24032. if (components) {
  24033. if (!options.components) {
  24034. options.components = {}
  24035. }
  24036. var hasOwn = Object.prototype.hasOwnProperty
  24037. for (var name in components) {
  24038. if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
  24039. options.components[name] = components[name]
  24040. }
  24041. }
  24042. }
  24043. // fixed by xxxxxx renderjs
  24044. if (renderjs) {
  24045. if(typeof renderjs.beforeCreate === 'function'){
  24046. renderjs.beforeCreate = [renderjs.beforeCreate]
  24047. }
  24048. (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
  24049. this[renderjs.__module] = this
  24050. });
  24051. (options.mixins || (options.mixins = [])).push(renderjs)
  24052. }
  24053. // render functions
  24054. if (render) {
  24055. options.render = render
  24056. options.staticRenderFns = staticRenderFns
  24057. options._compiled = true
  24058. }
  24059. // functional template
  24060. if (functionalTemplate) {
  24061. options.functional = true
  24062. }
  24063. // scopedId
  24064. if (scopeId) {
  24065. options._scopeId = 'data-v-' + scopeId
  24066. }
  24067. var hook
  24068. if (moduleIdentifier) { // server build
  24069. hook = function (context) {
  24070. // 2.3 injection
  24071. context =
  24072. context || // cached call
  24073. (this.$vnode && this.$vnode.ssrContext) || // stateful
  24074. (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
  24075. // 2.2 with runInNewContext: true
  24076. if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
  24077. context = __VUE_SSR_CONTEXT__
  24078. }
  24079. // inject component styles
  24080. if (injectStyles) {
  24081. injectStyles.call(this, context)
  24082. }
  24083. // register component module identifier for async chunk inferrence
  24084. if (context && context._registeredComponents) {
  24085. context._registeredComponents.add(moduleIdentifier)
  24086. }
  24087. }
  24088. // used by ssr in case component is cached and beforeCreate
  24089. // never gets called
  24090. options._ssrRegister = hook
  24091. } else if (injectStyles) {
  24092. hook = shadowMode
  24093. ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
  24094. : injectStyles
  24095. }
  24096. if (hook) {
  24097. if (options.functional) {
  24098. // for template-only hot-reload because in that case the render fn doesn't
  24099. // go through the normalizer
  24100. options._injectStyles = hook
  24101. // register for functioal component in vue file
  24102. var originalRender = options.render
  24103. options.render = function renderWithStyleInjection (h, context) {
  24104. hook.call(context)
  24105. return originalRender(h, context)
  24106. }
  24107. } else {
  24108. // inject component registration as beforeCreate hook
  24109. var existing = options.beforeCreate
  24110. options.beforeCreate = existing
  24111. ? [].concat(existing, hook)
  24112. : [hook]
  24113. }
  24114. }
  24115. return {
  24116. exports: scriptExports,
  24117. options: options
  24118. }
  24119. }
  24120. /***/ }),
  24121. /* 34 */
  24122. /*!************************************************************************!*\
  24123. !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?mpType=page ***!
  24124. \************************************************************************/
  24125. /*! no static exports found */
  24126. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24127. "use strict";
  24128. __webpack_require__.r(__webpack_exports__);
  24129. /* harmony import */ var _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page */ 35);
  24130. /* harmony import */ var _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nfc.vue?vue&type=script&lang=js&mpType=page */ 54);
  24131. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24132. /* harmony import */ var _nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nfc.vue?vue&type=style&index=0&id=6158afae&scoped=true&lang=scss&mpType=page */ 56);
  24133. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  24134. var renderjs
  24135. /* normalize component */
  24136. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  24137. _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__["default"],
  24138. _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"],
  24139. _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  24140. false,
  24141. null,
  24142. "6158afae",
  24143. null,
  24144. false,
  24145. _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"],
  24146. renderjs
  24147. )
  24148. component.options.__file = "pages/nfc/nfc.vue"
  24149. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  24150. /***/ }),
  24151. /* 35 */
  24152. /*!******************************************************************************************************************!*\
  24153. !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page ***!
  24154. \******************************************************************************************************************/
  24155. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24156. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24157. "use strict";
  24158. __webpack_require__.r(__webpack_exports__);
  24159. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page */ 36);
  24160. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  24161. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  24162. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  24163. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  24164. /***/ }),
  24165. /* 36 */
  24166. /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24167. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page ***!
  24168. \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24169. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24170. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24171. "use strict";
  24172. __webpack_require__.r(__webpack_exports__);
  24173. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  24174. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  24175. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  24176. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  24177. var components
  24178. try {
  24179. components = {
  24180. uniEasyinput:
  24181. __webpack_require__(/*! @/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue */ 37)
  24182. .default,
  24183. }
  24184. } catch (e) {
  24185. if (
  24186. e.message.indexOf("Cannot find module") !== -1 &&
  24187. e.message.indexOf(".vue") !== -1
  24188. ) {
  24189. console.error(e.message)
  24190. console.error("1. 排查组件名称拼写是否正确")
  24191. console.error(
  24192. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  24193. )
  24194. console.error(
  24195. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  24196. )
  24197. } else {
  24198. throw e
  24199. }
  24200. }
  24201. var render = function () {
  24202. var _vm = this
  24203. var _h = _vm.$createElement
  24204. var _c = _vm._self._c || _h
  24205. return _c(
  24206. "uni-view",
  24207. { staticClass: _vm._$g(0, "sc"), attrs: { _i: 0 } },
  24208. [
  24209. _c("uni-easyinput", {
  24210. attrs: { _i: 1 },
  24211. on: {
  24212. input: function ($event) {
  24213. return _vm.$handleViewEvent($event)
  24214. },
  24215. },
  24216. model: {
  24217. value: _vm._$g(1, "v-model"),
  24218. callback: function () {},
  24219. expression: "nfcWriteData",
  24220. },
  24221. }),
  24222. _c(
  24223. "uni-view",
  24224. { staticClass: _vm._$g(2, "sc"), attrs: { _i: 2 } },
  24225. [
  24226. _c(
  24227. "v-uni-button",
  24228. {
  24229. staticClass: _vm._$g(3, "sc"),
  24230. attrs: { type: "primary", _i: 3 },
  24231. on: {
  24232. click: function ($event) {
  24233. return _vm.$handleViewEvent($event)
  24234. },
  24235. },
  24236. },
  24237. [_vm._v("读取NFC")]
  24238. ),
  24239. _c(
  24240. "v-uni-button",
  24241. {
  24242. staticClass: _vm._$g(4, "sc"),
  24243. attrs: { type: "primary", _i: 4 },
  24244. on: {
  24245. click: function ($event) {
  24246. return _vm.$handleViewEvent($event)
  24247. },
  24248. },
  24249. },
  24250. [_vm._v("写入NFC")]
  24251. ),
  24252. ],
  24253. 1
  24254. ),
  24255. _c(
  24256. "uni-view",
  24257. { staticClass: _vm._$g(5, "sc"), attrs: { _i: 5 } },
  24258. [
  24259. _c(
  24260. "v-uni-button",
  24261. {
  24262. staticClass: _vm._$g(6, "sc"),
  24263. attrs: { type: "primary", _i: 6 },
  24264. on: {
  24265. click: function ($event) {
  24266. return _vm.$handleViewEvent($event)
  24267. },
  24268. },
  24269. },
  24270. [_vm._v("NFC状态")]
  24271. ),
  24272. _c(
  24273. "v-uni-button",
  24274. {
  24275. staticClass: _vm._$g(7, "sc"),
  24276. attrs: { type: "warn", _i: 7 },
  24277. on: {
  24278. click: function ($event) {
  24279. return _vm.$handleViewEvent($event)
  24280. },
  24281. },
  24282. },
  24283. [_vm._v("写入并锁定")]
  24284. ),
  24285. ],
  24286. 1
  24287. ),
  24288. _c(
  24289. "uni-view",
  24290. { staticClass: _vm._$g(8, "sc"), attrs: { _i: 8 } },
  24291. [
  24292. _c(
  24293. "v-uni-button",
  24294. {
  24295. staticClass: _vm._$g(9, "sc"),
  24296. attrs: { type: "warn", _i: 9 },
  24297. on: {
  24298. click: function ($event) {
  24299. return _vm.$handleViewEvent($event)
  24300. },
  24301. },
  24302. },
  24303. [_vm._v("设置密码")]
  24304. ),
  24305. _c(
  24306. "v-uni-button",
  24307. {
  24308. staticClass: _vm._$g(10, "sc"),
  24309. attrs: { type: "warn", _i: 10 },
  24310. on: {
  24311. click: function ($event) {
  24312. return _vm.$handleViewEvent($event)
  24313. },
  24314. },
  24315. },
  24316. [_vm._v("清除密码")]
  24317. ),
  24318. ],
  24319. 1
  24320. ),
  24321. ],
  24322. 1
  24323. )
  24324. }
  24325. var recyclableRender = false
  24326. var staticRenderFns = []
  24327. render._withStripped = true
  24328. /***/ }),
  24329. /* 37 */
  24330. /*!***************************************************************************************************************!*\
  24331. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue ***!
  24332. \***************************************************************************************************************/
  24333. /*! no static exports found */
  24334. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24335. "use strict";
  24336. __webpack_require__.r(__webpack_exports__);
  24337. /* harmony import */ var _uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-easyinput.vue?vue&type=template&id=abe12412&scoped=true& */ 38);
  24338. /* harmony import */ var _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-easyinput.vue?vue&type=script&lang=js& */ 49);
  24339. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24340. /* harmony import */ var _uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-easyinput.vue?vue&type=style&index=0&id=abe12412&lang=scss&scoped=true& */ 51);
  24341. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  24342. var renderjs
  24343. /* normalize component */
  24344. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  24345. _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  24346. _uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
  24347. _uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  24348. false,
  24349. null,
  24350. "abe12412",
  24351. null,
  24352. false,
  24353. _uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"],
  24354. renderjs
  24355. )
  24356. component.options.__file = "uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue"
  24357. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  24358. /***/ }),
  24359. /* 38 */
  24360. /*!**********************************************************************************************************************************************************!*\
  24361. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=template&id=abe12412&scoped=true& ***!
  24362. \**********************************************************************************************************************************************************/
  24363. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24364. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24365. "use strict";
  24366. __webpack_require__.r(__webpack_exports__);
  24367. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-easyinput.vue?vue&type=template&id=abe12412&scoped=true& */ 39);
  24368. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  24369. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  24370. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  24371. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_template_id_abe12412_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  24372. /***/ }),
  24373. /* 39 */
  24374. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24375. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=template&id=abe12412&scoped=true& ***!
  24376. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24377. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24378. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24379. "use strict";
  24380. __webpack_require__.r(__webpack_exports__);
  24381. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  24382. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  24383. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  24384. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  24385. var components
  24386. try {
  24387. components = {
  24388. uniIcons:
  24389. __webpack_require__(/*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 40)
  24390. .default,
  24391. }
  24392. } catch (e) {
  24393. if (
  24394. e.message.indexOf("Cannot find module") !== -1 &&
  24395. e.message.indexOf(".vue") !== -1
  24396. ) {
  24397. console.error(e.message)
  24398. console.error("1. 排查组件名称拼写是否正确")
  24399. console.error(
  24400. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  24401. )
  24402. console.error(
  24403. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  24404. )
  24405. } else {
  24406. throw e
  24407. }
  24408. }
  24409. var render = function () {
  24410. var _vm = this
  24411. var _h = _vm.$createElement
  24412. var _c = _vm._self._c || _h
  24413. return _c(
  24414. "uni-view",
  24415. {
  24416. staticClass: _vm._$g(0, "sc"),
  24417. class: _vm._$g(0, "c"),
  24418. style: _vm._$g(0, "s"),
  24419. attrs: { _i: 0 },
  24420. },
  24421. [
  24422. _c(
  24423. "uni-view",
  24424. {
  24425. staticClass: _vm._$g(1, "sc"),
  24426. class: _vm._$g(1, "c"),
  24427. style: _vm._$g(1, "s"),
  24428. attrs: { _i: 1 },
  24429. },
  24430. [
  24431. _vm._t(
  24432. "prefixIcon",
  24433. [
  24434. _vm._$g(3, "i")
  24435. ? _c("uni-icons", {
  24436. staticClass: _vm._$g(3, "sc"),
  24437. attrs: { _i: 3 },
  24438. on: {
  24439. click: function ($event) {
  24440. return _vm.$handleViewEvent($event)
  24441. },
  24442. },
  24443. })
  24444. : _vm._e(),
  24445. ],
  24446. { _i: 2 }
  24447. ),
  24448. _vm._$g(4, "i")
  24449. ? _c("v-uni-textarea", {
  24450. staticClass: _vm._$g(4, "sc"),
  24451. class: _vm._$g(4, "c"),
  24452. attrs: {
  24453. name: _vm._$g(4, "a-name"),
  24454. value: _vm._$g(4, "a-value"),
  24455. placeholder: _vm._$g(4, "a-placeholder"),
  24456. placeholderStyle: _vm._$g(4, "a-placeholderStyle"),
  24457. disabled: _vm._$g(4, "a-disabled"),
  24458. "placeholder-class": "uni-easyinput__placeholder-class",
  24459. maxlength: _vm._$g(4, "a-maxlength"),
  24460. focus: _vm._$g(4, "a-focus"),
  24461. autoHeight: _vm._$g(4, "a-autoHeight"),
  24462. _i: 4,
  24463. },
  24464. on: {
  24465. input: function ($event) {
  24466. return _vm.$handleViewEvent($event)
  24467. },
  24468. blur: function ($event) {
  24469. return _vm.$handleViewEvent($event)
  24470. },
  24471. focus: function ($event) {
  24472. return _vm.$handleViewEvent($event)
  24473. },
  24474. confirm: function ($event) {
  24475. return _vm.$handleViewEvent($event)
  24476. },
  24477. },
  24478. })
  24479. : _c("v-uni-input", {
  24480. staticClass: _vm._$g(5, "sc"),
  24481. style: _vm._$g(5, "s"),
  24482. attrs: {
  24483. type: _vm._$g(5, "a-type"),
  24484. name: _vm._$g(5, "a-name"),
  24485. value: _vm._$g(5, "a-value"),
  24486. password: _vm._$g(5, "a-password"),
  24487. placeholder: _vm._$g(5, "a-placeholder"),
  24488. placeholderStyle: _vm._$g(5, "a-placeholderStyle"),
  24489. "placeholder-class": "uni-easyinput__placeholder-class",
  24490. disabled: _vm._$g(5, "a-disabled"),
  24491. maxlength: _vm._$g(5, "a-maxlength"),
  24492. focus: _vm._$g(5, "a-focus"),
  24493. confirmType: _vm._$g(5, "a-confirmType"),
  24494. _i: 5,
  24495. },
  24496. on: {
  24497. focus: function ($event) {
  24498. return _vm.$handleViewEvent($event)
  24499. },
  24500. blur: function ($event) {
  24501. return _vm.$handleViewEvent($event)
  24502. },
  24503. input: function ($event) {
  24504. return _vm.$handleViewEvent($event)
  24505. },
  24506. confirm: function ($event) {
  24507. return _vm.$handleViewEvent($event)
  24508. },
  24509. },
  24510. }),
  24511. _vm._$g(6, "i")
  24512. ? [
  24513. _vm._$g(7, "i")
  24514. ? _c("uni-icons", {
  24515. staticClass: _vm._$g(7, "sc"),
  24516. class: _vm._$g(7, "c"),
  24517. attrs: { _i: 7 },
  24518. on: {
  24519. click: function ($event) {
  24520. return _vm.$handleViewEvent($event)
  24521. },
  24522. },
  24523. })
  24524. : _vm._e(),
  24525. ]
  24526. : _vm._$g(8, "e")
  24527. ? [
  24528. _vm._t(
  24529. "suffixIcon",
  24530. [
  24531. _vm._$g(10, "i")
  24532. ? _c("uni-icons", {
  24533. staticClass: _vm._$g(10, "sc"),
  24534. attrs: { _i: 10 },
  24535. on: {
  24536. click: function ($event) {
  24537. return _vm.$handleViewEvent($event)
  24538. },
  24539. },
  24540. })
  24541. : _vm._e(),
  24542. ],
  24543. { _i: 9 }
  24544. ),
  24545. ]
  24546. : [
  24547. _vm._$g(12, "i")
  24548. ? _c("uni-icons", {
  24549. staticClass: _vm._$g(12, "sc"),
  24550. class: _vm._$g(12, "c"),
  24551. attrs: { _i: 12 },
  24552. on: {
  24553. click: function ($event) {
  24554. return _vm.$handleViewEvent($event)
  24555. },
  24556. },
  24557. })
  24558. : _vm._e(),
  24559. ],
  24560. _vm._t("right", null, { _i: 13 }),
  24561. ],
  24562. 2
  24563. ),
  24564. ],
  24565. 1
  24566. )
  24567. }
  24568. var recyclableRender = false
  24569. var staticRenderFns = []
  24570. render._withStripped = true
  24571. /***/ }),
  24572. /* 40 */
  24573. /*!***************************************************************************************************!*\
  24574. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue ***!
  24575. \***************************************************************************************************/
  24576. /*! no static exports found */
  24577. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24578. "use strict";
  24579. __webpack_require__.r(__webpack_exports__);
  24580. /* harmony import */ var _uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=template&id=a2e81f6e&scoped=true& */ 41);
  24581. /* harmony import */ var _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=script&lang=js& */ 43);
  24582. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24583. /* harmony import */ var _uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=style&index=0&id=a2e81f6e&lang=scss&scoped=true& */ 45);
  24584. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  24585. var renderjs
  24586. /* normalize component */
  24587. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  24588. _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  24589. _uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
  24590. _uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  24591. false,
  24592. null,
  24593. "a2e81f6e",
  24594. null,
  24595. false,
  24596. _uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"],
  24597. renderjs
  24598. )
  24599. component.options.__file = "uni_modules/uni-icons/components/uni-icons/uni-icons.vue"
  24600. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  24601. /***/ }),
  24602. /* 41 */
  24603. /*!**********************************************************************************************************************************************!*\
  24604. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=template&id=a2e81f6e&scoped=true& ***!
  24605. \**********************************************************************************************************************************************/
  24606. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24607. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24608. "use strict";
  24609. __webpack_require__.r(__webpack_exports__);
  24610. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-icons.vue?vue&type=template&id=a2e81f6e&scoped=true& */ 42);
  24611. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  24612. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  24613. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  24614. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  24615. /***/ }),
  24616. /* 42 */
  24617. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24618. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=template&id=a2e81f6e&scoped=true& ***!
  24619. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24620. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24621. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24622. "use strict";
  24623. __webpack_require__.r(__webpack_exports__);
  24624. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  24625. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  24626. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  24627. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  24628. var components
  24629. var render = function () {
  24630. var _vm = this
  24631. var _h = _vm.$createElement
  24632. var _c = _vm._self._c || _h
  24633. return _c("v-uni-text", {
  24634. staticClass: _vm._$g(0, "sc"),
  24635. class: _vm._$g(0, "c"),
  24636. style: _vm._$g(0, "s"),
  24637. attrs: { _i: 0 },
  24638. on: {
  24639. click: function ($event) {
  24640. return _vm.$handleViewEvent($event)
  24641. },
  24642. },
  24643. })
  24644. }
  24645. var recyclableRender = false
  24646. var staticRenderFns = []
  24647. render._withStripped = true
  24648. /***/ }),
  24649. /* 43 */
  24650. /*!****************************************************************************************************************************!*\
  24651. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=script&lang=js& ***!
  24652. \****************************************************************************************************************************/
  24653. /*! no static exports found */
  24654. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24655. "use strict";
  24656. __webpack_require__.r(__webpack_exports__);
  24657. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-icons.vue?vue&type=script&lang=js& */ 44);
  24658. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  24659. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24660. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  24661. /***/ }),
  24662. /* 44 */
  24663. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24664. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=script&lang=js& ***!
  24665. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24666. /*! no static exports found */
  24667. /***/ (function(module, exports, __webpack_require__) {
  24668. "use strict";
  24669. Object.defineProperty(exports, "__esModule", {
  24670. value: true
  24671. });
  24672. exports.default = void 0;
  24673. var _default = {
  24674. name: "UniIcons",
  24675. props: ["type", "color", "size", "customPrefix"],
  24676. data: function data() {
  24677. return {
  24678. wxsProps: {}
  24679. };
  24680. },
  24681. components: {}
  24682. };
  24683. exports.default = _default;
  24684. /***/ }),
  24685. /* 45 */
  24686. /*!*************************************************************************************************************************************************************!*\
  24687. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=style&index=0&id=a2e81f6e&lang=scss&scoped=true& ***!
  24688. \*************************************************************************************************************************************************************/
  24689. /*! no static exports found */
  24690. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24691. "use strict";
  24692. __webpack_require__.r(__webpack_exports__);
  24693. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-icons.vue?vue&type=style&index=0&id=a2e81f6e&lang=scss&scoped=true& */ 46);
  24694. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  24695. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24696. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_icons_vue_vue_type_style_index_0_id_a2e81f6e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  24697. /***/ }),
  24698. /* 46 */
  24699. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24700. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=style&index=0&id=a2e81f6e&lang=scss&scoped=true& ***!
  24701. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24702. /*! no static exports found */
  24703. /***/ (function(module, exports, __webpack_require__) {
  24704. // style-loader: Adds some css to the DOM by adding a <style> tag
  24705. // load the styles
  24706. var content = __webpack_require__(/*! !../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-icons.vue?vue&type=style&index=0&id=a2e81f6e&lang=scss&scoped=true& */ 47);
  24707. if(content.__esModule) content = content.default;
  24708. if(typeof content === 'string') content = [[module.i, content, '']];
  24709. if(content.locals) module.exports = content.locals;
  24710. // add the styles to the DOM
  24711. var add = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  24712. var update = add("0212e13f", content, false, {"sourceMap":false,"shadowMode":false});
  24713. // Hot Module Replacement
  24714. if(false) {}
  24715. /***/ }),
  24716. /* 47 */
  24717. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24718. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=style&index=0&id=a2e81f6e&lang=scss&scoped=true& ***!
  24719. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24720. /*! no static exports found */
  24721. /***/ (function(module, exports, __webpack_require__) {
  24722. // Imports
  24723. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  24724. var ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/lib/app-plus/getUrl.js */ 16);
  24725. var ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! ./uniicons.ttf */ 48);
  24726. exports = ___CSS_LOADER_API_IMPORT___(false);
  24727. var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
  24728. // Module
  24729. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n.uniui-color[data-v-a2e81f6e]:before {\n content: \"\\e6cf\";\n}\n.uniui-wallet[data-v-a2e81f6e]:before {\n content: \"\\e6b1\";\n}\n.uniui-settings-filled[data-v-a2e81f6e]:before {\n content: \"\\e6ce\";\n}\n.uniui-auth-filled[data-v-a2e81f6e]:before {\n content: \"\\e6cc\";\n}\n.uniui-shop-filled[data-v-a2e81f6e]:before {\n content: \"\\e6cd\";\n}\n.uniui-staff-filled[data-v-a2e81f6e]:before {\n content: \"\\e6cb\";\n}\n.uniui-vip-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c6\";\n}\n.uniui-plus-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c7\";\n}\n.uniui-folder-add-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c8\";\n}\n.uniui-color-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c9\";\n}\n.uniui-tune-filled[data-v-a2e81f6e]:before {\n content: \"\\e6ca\";\n}\n.uniui-calendar-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c0\";\n}\n.uniui-notification-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c1\";\n}\n.uniui-wallet-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c2\";\n}\n.uniui-medal-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c3\";\n}\n.uniui-gift-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c4\";\n}\n.uniui-fire-filled[data-v-a2e81f6e]:before {\n content: \"\\e6c5\";\n}\n.uniui-refreshempty[data-v-a2e81f6e]:before {\n content: \"\\e6bf\";\n}\n.uniui-location-filled[data-v-a2e81f6e]:before {\n content: \"\\e6af\";\n}\n.uniui-person-filled[data-v-a2e81f6e]:before {\n content: \"\\e69d\";\n}\n.uniui-personadd-filled[data-v-a2e81f6e]:before {\n content: \"\\e698\";\n}\n.uniui-back[data-v-a2e81f6e]:before {\n content: \"\\e6b9\";\n}\n.uniui-forward[data-v-a2e81f6e]:before {\n content: \"\\e6ba\";\n}\n.uniui-arrow-right[data-v-a2e81f6e]:before {\n content: \"\\e6bb\";\n}\n.uniui-arrowthinright[data-v-a2e81f6e]:before {\n content: \"\\e6bb\";\n}\n.uniui-arrow-left[data-v-a2e81f6e]:before {\n content: \"\\e6bc\";\n}\n.uniui-arrowthinleft[data-v-a2e81f6e]:before {\n content: \"\\e6bc\";\n}\n.uniui-arrow-up[data-v-a2e81f6e]:before {\n content: \"\\e6bd\";\n}\n.uniui-arrowthinup[data-v-a2e81f6e]:before {\n content: \"\\e6bd\";\n}\n.uniui-arrow-down[data-v-a2e81f6e]:before {\n content: \"\\e6be\";\n}\n.uniui-arrowthindown[data-v-a2e81f6e]:before {\n content: \"\\e6be\";\n}\n.uniui-bottom[data-v-a2e81f6e]:before {\n content: \"\\e6b8\";\n}\n.uniui-arrowdown[data-v-a2e81f6e]:before {\n content: \"\\e6b8\";\n}\n.uniui-right[data-v-a2e81f6e]:before {\n content: \"\\e6b5\";\n}\n.uniui-arrowright[data-v-a2e81f6e]:before {\n content: \"\\e6b5\";\n}\n.uniui-top[data-v-a2e81f6e]:before {\n content: \"\\e6b6\";\n}\n.uniui-arrowup[data-v-a2e81f6e]:before {\n content: \"\\e6b6\";\n}\n.uniui-left[data-v-a2e81f6e]:before {\n content: \"\\e6b7\";\n}\n.uniui-arrowleft[data-v-a2e81f6e]:before {\n content: \"\\e6b7\";\n}\n.uniui-eye[data-v-a2e81f6e]:before {\n content: \"\\e651\";\n}\n.uniui-eye-filled[data-v-a2e81f6e]:before {\n content: \"\\e66a\";\n}\n.uniui-eye-slash[data-v-a2e81f6e]:before {\n content: \"\\e6b3\";\n}\n.uniui-eye-slash-filled[data-v-a2e81f6e]:before {\n content: \"\\e6b4\";\n}\n.uniui-info-filled[data-v-a2e81f6e]:before {\n content: \"\\e649\";\n}\n.uniui-reload[data-v-a2e81f6e]:before {\n content: \"\\e6b2\";\n}\n.uniui-micoff-filled[data-v-a2e81f6e]:before {\n content: \"\\e6b0\";\n}\n.uniui-map-pin-ellipse[data-v-a2e81f6e]:before {\n content: \"\\e6ac\";\n}\n.uniui-map-pin[data-v-a2e81f6e]:before {\n content: \"\\e6ad\";\n}\n.uniui-location[data-v-a2e81f6e]:before {\n content: \"\\e6ae\";\n}\n.uniui-starhalf[data-v-a2e81f6e]:before {\n content: \"\\e683\";\n}\n.uniui-star[data-v-a2e81f6e]:before {\n content: \"\\e688\";\n}\n.uniui-star-filled[data-v-a2e81f6e]:before {\n content: \"\\e68f\";\n}\n.uniui-calendar[data-v-a2e81f6e]:before {\n content: \"\\e6a0\";\n}\n.uniui-fire[data-v-a2e81f6e]:before {\n content: \"\\e6a1\";\n}\n.uniui-medal[data-v-a2e81f6e]:before {\n content: \"\\e6a2\";\n}\n.uniui-font[data-v-a2e81f6e]:before {\n content: \"\\e6a3\";\n}\n.uniui-gift[data-v-a2e81f6e]:before {\n content: \"\\e6a4\";\n}\n.uniui-link[data-v-a2e81f6e]:before {\n content: \"\\e6a5\";\n}\n.uniui-notification[data-v-a2e81f6e]:before {\n content: \"\\e6a6\";\n}\n.uniui-staff[data-v-a2e81f6e]:before {\n content: \"\\e6a7\";\n}\n.uniui-vip[data-v-a2e81f6e]:before {\n content: \"\\e6a8\";\n}\n.uniui-folder-add[data-v-a2e81f6e]:before {\n content: \"\\e6a9\";\n}\n.uniui-tune[data-v-a2e81f6e]:before {\n content: \"\\e6aa\";\n}\n.uniui-auth[data-v-a2e81f6e]:before {\n content: \"\\e6ab\";\n}\n.uniui-person[data-v-a2e81f6e]:before {\n content: \"\\e699\";\n}\n.uniui-email-filled[data-v-a2e81f6e]:before {\n content: \"\\e69a\";\n}\n.uniui-phone-filled[data-v-a2e81f6e]:before {\n content: \"\\e69b\";\n}\n.uniui-phone[data-v-a2e81f6e]:before {\n content: \"\\e69c\";\n}\n.uniui-email[data-v-a2e81f6e]:before {\n content: \"\\e69e\";\n}\n.uniui-personadd[data-v-a2e81f6e]:before {\n content: \"\\e69f\";\n}\n.uniui-chatboxes-filled[data-v-a2e81f6e]:before {\n content: \"\\e692\";\n}\n.uniui-contact[data-v-a2e81f6e]:before {\n content: \"\\e693\";\n}\n.uniui-chatbubble-filled[data-v-a2e81f6e]:before {\n content: \"\\e694\";\n}\n.uniui-contact-filled[data-v-a2e81f6e]:before {\n content: \"\\e695\";\n}\n.uniui-chatboxes[data-v-a2e81f6e]:before {\n content: \"\\e696\";\n}\n.uniui-chatbubble[data-v-a2e81f6e]:before {\n content: \"\\e697\";\n}\n.uniui-upload-filled[data-v-a2e81f6e]:before {\n content: \"\\e68e\";\n}\n.uniui-upload[data-v-a2e81f6e]:before {\n content: \"\\e690\";\n}\n.uniui-weixin[data-v-a2e81f6e]:before {\n content: \"\\e691\";\n}\n.uniui-compose[data-v-a2e81f6e]:before {\n content: \"\\e67f\";\n}\n.uniui-qq[data-v-a2e81f6e]:before {\n content: \"\\e680\";\n}\n.uniui-download-filled[data-v-a2e81f6e]:before {\n content: \"\\e681\";\n}\n.uniui-pyq[data-v-a2e81f6e]:before {\n content: \"\\e682\";\n}\n.uniui-sound[data-v-a2e81f6e]:before {\n content: \"\\e684\";\n}\n.uniui-trash-filled[data-v-a2e81f6e]:before {\n content: \"\\e685\";\n}\n.uniui-sound-filled[data-v-a2e81f6e]:before {\n content: \"\\e686\";\n}\n.uniui-trash[data-v-a2e81f6e]:before {\n content: \"\\e687\";\n}\n.uniui-videocam-filled[data-v-a2e81f6e]:before {\n content: \"\\e689\";\n}\n.uniui-spinner-cycle[data-v-a2e81f6e]:before {\n content: \"\\e68a\";\n}\n.uniui-weibo[data-v-a2e81f6e]:before {\n content: \"\\e68b\";\n}\n.uniui-videocam[data-v-a2e81f6e]:before {\n content: \"\\e68c\";\n}\n.uniui-download[data-v-a2e81f6e]:before {\n content: \"\\e68d\";\n}\n.uniui-help[data-v-a2e81f6e]:before {\n content: \"\\e679\";\n}\n.uniui-navigate-filled[data-v-a2e81f6e]:before {\n content: \"\\e67a\";\n}\n.uniui-plusempty[data-v-a2e81f6e]:before {\n content: \"\\e67b\";\n}\n.uniui-smallcircle[data-v-a2e81f6e]:before {\n content: \"\\e67c\";\n}\n.uniui-minus-filled[data-v-a2e81f6e]:before {\n content: \"\\e67d\";\n}\n.uniui-micoff[data-v-a2e81f6e]:before {\n content: \"\\e67e\";\n}\n.uniui-closeempty[data-v-a2e81f6e]:before {\n content: \"\\e66c\";\n}\n.uniui-clear[data-v-a2e81f6e]:before {\n content: \"\\e66d\";\n}\n.uniui-navigate[data-v-a2e81f6e]:before {\n content: \"\\e66e\";\n}\n.uniui-minus[data-v-a2e81f6e]:before {\n content: \"\\e66f\";\n}\n.uniui-image[data-v-a2e81f6e]:before {\n content: \"\\e670\";\n}\n.uniui-mic[data-v-a2e81f6e]:before {\n content: \"\\e671\";\n}\n.uniui-paperplane[data-v-a2e81f6e]:before {\n content: \"\\e672\";\n}\n.uniui-close[data-v-a2e81f6e]:before {\n content: \"\\e673\";\n}\n.uniui-help-filled[data-v-a2e81f6e]:before {\n content: \"\\e674\";\n}\n.uniui-paperplane-filled[data-v-a2e81f6e]:before {\n content: \"\\e675\";\n}\n.uniui-plus[data-v-a2e81f6e]:before {\n content: \"\\e676\";\n}\n.uniui-mic-filled[data-v-a2e81f6e]:before {\n content: \"\\e677\";\n}\n.uniui-image-filled[data-v-a2e81f6e]:before {\n content: \"\\e678\";\n}\n.uniui-locked-filled[data-v-a2e81f6e]:before {\n content: \"\\e668\";\n}\n.uniui-info[data-v-a2e81f6e]:before {\n content: \"\\e669\";\n}\n.uniui-locked[data-v-a2e81f6e]:before {\n content: \"\\e66b\";\n}\n.uniui-camera-filled[data-v-a2e81f6e]:before {\n content: \"\\e658\";\n}\n.uniui-chat-filled[data-v-a2e81f6e]:before {\n content: \"\\e659\";\n}\n.uniui-camera[data-v-a2e81f6e]:before {\n content: \"\\e65a\";\n}\n.uniui-circle[data-v-a2e81f6e]:before {\n content: \"\\e65b\";\n}\n.uniui-checkmarkempty[data-v-a2e81f6e]:before {\n content: \"\\e65c\";\n}\n.uniui-chat[data-v-a2e81f6e]:before {\n content: \"\\e65d\";\n}\n.uniui-circle-filled[data-v-a2e81f6e]:before {\n content: \"\\e65e\";\n}\n.uniui-flag[data-v-a2e81f6e]:before {\n content: \"\\e65f\";\n}\n.uniui-flag-filled[data-v-a2e81f6e]:before {\n content: \"\\e660\";\n}\n.uniui-gear-filled[data-v-a2e81f6e]:before {\n content: \"\\e661\";\n}\n.uniui-home[data-v-a2e81f6e]:before {\n content: \"\\e662\";\n}\n.uniui-home-filled[data-v-a2e81f6e]:before {\n content: \"\\e663\";\n}\n.uniui-gear[data-v-a2e81f6e]:before {\n content: \"\\e664\";\n}\n.uniui-smallcircle-filled[data-v-a2e81f6e]:before {\n content: \"\\e665\";\n}\n.uniui-map-filled[data-v-a2e81f6e]:before {\n content: \"\\e666\";\n}\n.uniui-map[data-v-a2e81f6e]:before {\n content: \"\\e667\";\n}\n.uniui-refresh-filled[data-v-a2e81f6e]:before {\n content: \"\\e656\";\n}\n.uniui-refresh[data-v-a2e81f6e]:before {\n content: \"\\e657\";\n}\n.uniui-cloud-upload[data-v-a2e81f6e]:before {\n content: \"\\e645\";\n}\n.uniui-cloud-download-filled[data-v-a2e81f6e]:before {\n content: \"\\e646\";\n}\n.uniui-cloud-download[data-v-a2e81f6e]:before {\n content: \"\\e647\";\n}\n.uniui-cloud-upload-filled[data-v-a2e81f6e]:before {\n content: \"\\e648\";\n}\n.uniui-redo[data-v-a2e81f6e]:before {\n content: \"\\e64a\";\n}\n.uniui-images-filled[data-v-a2e81f6e]:before {\n content: \"\\e64b\";\n}\n.uniui-undo-filled[data-v-a2e81f6e]:before {\n content: \"\\e64c\";\n}\n.uniui-more[data-v-a2e81f6e]:before {\n content: \"\\e64d\";\n}\n.uniui-more-filled[data-v-a2e81f6e]:before {\n content: \"\\e64e\";\n}\n.uniui-undo[data-v-a2e81f6e]:before {\n content: \"\\e64f\";\n}\n.uniui-images[data-v-a2e81f6e]:before {\n content: \"\\e650\";\n}\n.uniui-paperclip[data-v-a2e81f6e]:before {\n content: \"\\e652\";\n}\n.uniui-settings[data-v-a2e81f6e]:before {\n content: \"\\e653\";\n}\n.uniui-search[data-v-a2e81f6e]:before {\n content: \"\\e654\";\n}\n.uniui-redo-filled[data-v-a2e81f6e]:before {\n content: \"\\e655\";\n}\n.uniui-list[data-v-a2e81f6e]:before {\n content: \"\\e644\";\n}\n.uniui-mail-open-filled[data-v-a2e81f6e]:before {\n content: \"\\e63a\";\n}\n.uniui-hand-down-filled[data-v-a2e81f6e]:before {\n content: \"\\e63c\";\n}\n.uniui-hand-down[data-v-a2e81f6e]:before {\n content: \"\\e63d\";\n}\n.uniui-hand-up-filled[data-v-a2e81f6e]:before {\n content: \"\\e63e\";\n}\n.uniui-hand-up[data-v-a2e81f6e]:before {\n content: \"\\e63f\";\n}\n.uniui-heart-filled[data-v-a2e81f6e]:before {\n content: \"\\e641\";\n}\n.uniui-mail-open[data-v-a2e81f6e]:before {\n content: \"\\e643\";\n}\n.uniui-heart[data-v-a2e81f6e]:before {\n content: \"\\e639\";\n}\n.uniui-loop[data-v-a2e81f6e]:before {\n content: \"\\e633\";\n}\n.uniui-pulldown[data-v-a2e81f6e]:before {\n content: \"\\e632\";\n}\n.uniui-scan[data-v-a2e81f6e]:before {\n content: \"\\e62a\";\n}\n.uniui-bars[data-v-a2e81f6e]:before {\n content: \"\\e627\";\n}\n.uniui-cart-filled[data-v-a2e81f6e]:before {\n content: \"\\e629\";\n}\n.uniui-checkbox[data-v-a2e81f6e]:before {\n content: \"\\e62b\";\n}\n.uniui-checkbox-filled[data-v-a2e81f6e]:before {\n content: \"\\e62c\";\n}\n.uniui-shop[data-v-a2e81f6e]:before {\n content: \"\\e62f\";\n}\n.uniui-headphones[data-v-a2e81f6e]:before {\n content: \"\\e630\";\n}\n.uniui-cart[data-v-a2e81f6e]:before {\n content: \"\\e631\";\n}\n@font-face {\n font-family: uniicons;\n src: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") format(\"truetype\");\n}\n.uni-icons[data-v-a2e81f6e] {\n font-family: uniicons;\n text-decoration: none;\n text-align: center;\n}\n", ""]);
  24730. // Exports
  24731. module.exports = exports;
  24732. /***/ }),
  24733. /* 48 */
  24734. /*!**************************************************************************************************!*\
  24735. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uniicons.ttf ***!
  24736. \**************************************************************************************************/
  24737. /*! no static exports found */
  24738. /***/ (function(module, exports) {
  24739. module.exports = "/uni_modules/uni-icons/components/uni-icons/uniicons.ttf";
  24740. /***/ }),
  24741. /* 49 */
  24742. /*!****************************************************************************************************************************************!*\
  24743. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=script&lang=js& ***!
  24744. \****************************************************************************************************************************************/
  24745. /*! no static exports found */
  24746. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24747. "use strict";
  24748. __webpack_require__.r(__webpack_exports__);
  24749. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-easyinput.vue?vue&type=script&lang=js& */ 50);
  24750. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  24751. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24752. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  24753. /***/ }),
  24754. /* 50 */
  24755. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24756. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=script&lang=js& ***!
  24757. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24758. /*! no static exports found */
  24759. /***/ (function(module, exports, __webpack_require__) {
  24760. "use strict";
  24761. Object.defineProperty(exports, "__esModule", {
  24762. value: true
  24763. });
  24764. exports.default = void 0;
  24765. var _default = {
  24766. name: "uni-easyinput",
  24767. props: ["name", "value", "modelValue", "type", "clearable", "autoHeight", "placeholder", "placeholderStyle", "focus", "disabled", "maxlength", "confirmType", "clearSize", "inputBorder", "prefixIcon", "suffixIcon", "trim", "passwordIcon", "primaryColor", "styles", "errorMessage"],
  24768. data: function data() {
  24769. return {
  24770. wxsProps: {}
  24771. };
  24772. },
  24773. components: {}
  24774. };
  24775. exports.default = _default;
  24776. /***/ }),
  24777. /* 51 */
  24778. /*!*************************************************************************************************************************************************************************!*\
  24779. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=style&index=0&id=abe12412&lang=scss&scoped=true& ***!
  24780. \*************************************************************************************************************************************************************************/
  24781. /*! no static exports found */
  24782. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24783. "use strict";
  24784. __webpack_require__.r(__webpack_exports__);
  24785. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-easyinput.vue?vue&type=style&index=0&id=abe12412&lang=scss&scoped=true& */ 52);
  24786. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  24787. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24788. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_easyinput_vue_vue_type_style_index_0_id_abe12412_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  24789. /***/ }),
  24790. /* 52 */
  24791. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24792. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=style&index=0&id=abe12412&lang=scss&scoped=true& ***!
  24793. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24794. /*! no static exports found */
  24795. /***/ (function(module, exports, __webpack_require__) {
  24796. // style-loader: Adds some css to the DOM by adding a <style> tag
  24797. // load the styles
  24798. var content = __webpack_require__(/*! !../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-easyinput.vue?vue&type=style&index=0&id=abe12412&lang=scss&scoped=true& */ 53);
  24799. if(content.__esModule) content = content.default;
  24800. if(typeof content === 'string') content = [[module.i, content, '']];
  24801. if(content.locals) module.exports = content.locals;
  24802. // add the styles to the DOM
  24803. var add = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  24804. var update = add("0a6b455a", content, false, {"sourceMap":false,"shadowMode":false});
  24805. // Hot Module Replacement
  24806. if(false) {}
  24807. /***/ }),
  24808. /* 53 */
  24809. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24810. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=style&index=0&id=abe12412&lang=scss&scoped=true& ***!
  24811. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24812. /*! no static exports found */
  24813. /***/ (function(module, exports, __webpack_require__) {
  24814. // Imports
  24815. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  24816. exports = ___CSS_LOADER_API_IMPORT___(false);
  24817. // Module
  24818. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n.uni-easyinput[data-v-abe12412] {\n width: 100%;\n flex: 1;\n position: relative;\n text-align: left;\n color: #333;\n font-size: 14px;\n}\n.uni-easyinput__content[data-v-abe12412] {\n flex: 1;\n width: 100%;\n display: flex;\n box-sizing: border-box;\n flex-direction: row;\n align-items: center;\n border-color: #fff;\n transition-property: border-color;\n transition-duration: 0.3s;\n}\n.uni-easyinput__content-input[data-v-abe12412] {\n width: auto;\n position: relative;\n overflow: hidden;\n flex: 1;\n line-height: 1;\n font-size: 14px;\n height: 35px;\n}\n.uni-easyinput__placeholder-class[data-v-abe12412] {\n color: #999;\n font-size: 12px;\n}\n.is-textarea[data-v-abe12412] {\n align-items: flex-start;\n}\n.is-textarea-icon[data-v-abe12412] {\n margin-top: 5px;\n}\n.uni-easyinput__content-textarea[data-v-abe12412] {\n position: relative;\n overflow: hidden;\n flex: 1;\n line-height: 1.5;\n font-size: 14px;\n margin: 6px;\n margin-left: 0;\n height: 80px;\n min-height: 80px;\n min-height: 80px;\n width: auto;\n}\n.input-padding[data-v-abe12412] {\n padding-left: 10px;\n}\n.content-clear-icon[data-v-abe12412] {\n padding: 0 5px;\n}\n.label-icon[data-v-abe12412] {\n margin-right: 5px;\n margin-top: -1px;\n}\n.is-input-border[data-v-abe12412] {\n display: flex;\n box-sizing: border-box;\n flex-direction: row;\n align-items: center;\n border: 1px solid #F0F0F0;\n border-radius: 4px;\n}\n.uni-error-message[data-v-abe12412] {\n position: absolute;\n bottom: -17px;\n left: 0;\n line-height: 12px;\n color: #e43d33;\n font-size: 12px;\n text-align: left;\n}\n.uni-error-msg--boeder[data-v-abe12412] {\n position: relative;\n bottom: 0;\n line-height: 22px;\n}\n.is-input-error-border[data-v-abe12412] {\n border-color: #e43d33;\n}\n.is-input-error-border .uni-easyinput__placeholder-class[data-v-abe12412] {\n color: #f29e99;\n}\n.uni-easyinput--border[data-v-abe12412] {\n margin-bottom: 0;\n padding: 10px 15px;\n border-top: 1px #eee solid;\n}\n.uni-easyinput-error[data-v-abe12412] {\n padding-bottom: 0;\n}\n.is-first-border[data-v-abe12412] {\n border: none;\n}\n.is-disabled[data-v-abe12412] {\n background-color: #f7f6f6;\n color: #d5d5d5;\n}\n.is-disabled .uni-easyinput__placeholder-class[data-v-abe12412] {\n color: #d5d5d5;\n font-size: 12px;\n}\n", ""]);
  24819. // Exports
  24820. module.exports = exports;
  24821. /***/ }),
  24822. /* 54 */
  24823. /*!************************************************************************************************!*\
  24824. !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=script&lang=js&mpType=page ***!
  24825. \************************************************************************************************/
  24826. /*! no static exports found */
  24827. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24828. "use strict";
  24829. __webpack_require__.r(__webpack_exports__);
  24830. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./nfc.vue?vue&type=script&lang=js&mpType=page */ 55);
  24831. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
  24832. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24833. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
  24834. /***/ }),
  24835. /* 55 */
  24836. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24837. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=script&lang=js&mpType=page ***!
  24838. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24839. /*! no static exports found */
  24840. /***/ (function(module, exports, __webpack_require__) {
  24841. "use strict";
  24842. Object.defineProperty(exports, "__esModule", {
  24843. value: true
  24844. });
  24845. exports.default = void 0;
  24846. var _default = {
  24847. data: function data() {
  24848. return {
  24849. wxsProps: {}
  24850. };
  24851. },
  24852. components: {}
  24853. };
  24854. exports.default = _default;
  24855. /***/ }),
  24856. /* 56 */
  24857. /*!*********************************************************************************************************************************!*\
  24858. !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=style&index=0&id=6158afae&scoped=true&lang=scss&mpType=page ***!
  24859. \*********************************************************************************************************************************/
  24860. /*! no static exports found */
  24861. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24862. "use strict";
  24863. __webpack_require__.r(__webpack_exports__);
  24864. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./nfc.vue?vue&type=style&index=0&id=6158afae&scoped=true&lang=scss&mpType=page */ 57);
  24865. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
  24866. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24867. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_nfc_vue_vue_type_style_index_0_id_6158afae_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
  24868. /***/ }),
  24869. /* 57 */
  24870. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24871. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=style&index=0&id=6158afae&scoped=true&lang=scss&mpType=page ***!
  24872. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24873. /*! no static exports found */
  24874. /***/ (function(module, exports, __webpack_require__) {
  24875. // style-loader: Adds some css to the DOM by adding a <style> tag
  24876. // load the styles
  24877. var content = __webpack_require__(/*! !../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./nfc.vue?vue&type=style&index=0&id=6158afae&scoped=true&lang=scss&mpType=page */ 58);
  24878. if(content.__esModule) content = content.default;
  24879. if(typeof content === 'string') content = [[module.i, content, '']];
  24880. if(content.locals) module.exports = content.locals;
  24881. // add the styles to the DOM
  24882. var add = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  24883. var update = add("f36082dc", content, false, {"sourceMap":false,"shadowMode":false});
  24884. // Hot Module Replacement
  24885. if(false) {}
  24886. /***/ }),
  24887. /* 58 */
  24888. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24889. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=style&index=0&id=6158afae&scoped=true&lang=scss&mpType=page ***!
  24890. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24891. /*! no static exports found */
  24892. /***/ (function(module, exports, __webpack_require__) {
  24893. // Imports
  24894. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  24895. exports = ___CSS_LOADER_API_IMPORT___(false);
  24896. // Module
  24897. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n.container[data-v-6158afae] {\n padding: 15px;\n box-sizing: border-box;\n}\n.container .btn-box[data-v-6158afae] {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 20px;\n}\n.container .btn-box .btn[data-v-6158afae] {\n width: 35%;\n}\n", ""]);
  24898. // Exports
  24899. module.exports = exports;
  24900. /***/ }),
  24901. /* 59 */
  24902. /*!******************************************************************************!*\
  24903. !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?mpType=page ***!
  24904. \******************************************************************************/
  24905. /*! no static exports found */
  24906. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24907. "use strict";
  24908. __webpack_require__.r(__webpack_exports__);
  24909. /* harmony import */ var _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page */ 60);
  24910. /* harmony import */ var _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verify.vue?vue&type=script&lang=js&mpType=page */ 62);
  24911. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  24912. /* harmony import */ var _verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./verify.vue?vue&type=style&index=0&id=97e49014&scoped=true&lang=scss&mpType=page */ 64);
  24913. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  24914. var renderjs
  24915. /* normalize component */
  24916. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  24917. _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__["default"],
  24918. _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"],
  24919. _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  24920. false,
  24921. null,
  24922. "97e49014",
  24923. null,
  24924. false,
  24925. _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"],
  24926. renderjs
  24927. )
  24928. component.options.__file = "pages/verify/verify.vue"
  24929. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  24930. /***/ }),
  24931. /* 60 */
  24932. /*!************************************************************************************************************************!*\
  24933. !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page ***!
  24934. \************************************************************************************************************************/
  24935. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24936. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24937. "use strict";
  24938. __webpack_require__.r(__webpack_exports__);
  24939. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page */ 61);
  24940. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  24941. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  24942. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  24943. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  24944. /***/ }),
  24945. /* 61 */
  24946. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  24947. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page ***!
  24948. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  24949. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  24950. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  24951. "use strict";
  24952. __webpack_require__.r(__webpack_exports__);
  24953. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  24954. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  24955. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  24956. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  24957. var components
  24958. var render = function () {
  24959. var _vm = this
  24960. var _h = _vm.$createElement
  24961. var _c = _vm._self._c || _h
  24962. return _c(
  24963. "uni-view",
  24964. { staticClass: _vm._$g(0, "sc"), attrs: { _i: 0 } },
  24965. [
  24966. _c(
  24967. "uni-view",
  24968. { staticClass: _vm._$g(1, "sc"), attrs: { _i: 1 } },
  24969. [
  24970. _vm._$g(2, "i")
  24971. ? _c(
  24972. "v-uni-text",
  24973. { staticClass: _vm._$g(2, "sc"), attrs: { _i: 2 } },
  24974. [_vm._v("待扫码")]
  24975. )
  24976. : _c(
  24977. "v-uni-text",
  24978. { staticClass: _vm._$g(3, "sc"), attrs: { _i: 3 } },
  24979. [_vm._v("扫码结果:" + _vm._$g(3, "t0-0"))]
  24980. ),
  24981. ],
  24982. 1
  24983. ),
  24984. _c(
  24985. "uni-view",
  24986. { staticClass: _vm._$g(4, "sc"), attrs: { _i: 4 } },
  24987. [
  24988. _c(
  24989. "v-uni-button",
  24990. {
  24991. staticClass: _vm._$g(5, "sc"),
  24992. attrs: { type: "primary", _i: 5 },
  24993. on: {
  24994. click: function ($event) {
  24995. return _vm.$handleViewEvent($event)
  24996. },
  24997. },
  24998. },
  24999. [_vm._v("扫一扫")]
  25000. ),
  25001. ],
  25002. 1
  25003. ),
  25004. ],
  25005. 1
  25006. )
  25007. }
  25008. var recyclableRender = false
  25009. var staticRenderFns = []
  25010. render._withStripped = true
  25011. /***/ }),
  25012. /* 62 */
  25013. /*!******************************************************************************************************!*\
  25014. !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=script&lang=js&mpType=page ***!
  25015. \******************************************************************************************************/
  25016. /*! no static exports found */
  25017. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25018. "use strict";
  25019. __webpack_require__.r(__webpack_exports__);
  25020. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./verify.vue?vue&type=script&lang=js&mpType=page */ 63);
  25021. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
  25022. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25023. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
  25024. /***/ }),
  25025. /* 63 */
  25026. /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  25027. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=script&lang=js&mpType=page ***!
  25028. \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  25029. /*! no static exports found */
  25030. /***/ (function(module, exports, __webpack_require__) {
  25031. "use strict";
  25032. Object.defineProperty(exports, "__esModule", {
  25033. value: true
  25034. });
  25035. exports.default = void 0;
  25036. var _default = {
  25037. data: function data() {
  25038. return {
  25039. wxsProps: {}
  25040. };
  25041. },
  25042. components: {}
  25043. };
  25044. exports.default = _default;
  25045. /***/ }),
  25046. /* 64 */
  25047. /*!***************************************************************************************************************************************!*\
  25048. !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=style&index=0&id=97e49014&scoped=true&lang=scss&mpType=page ***!
  25049. \***************************************************************************************************************************************/
  25050. /*! no static exports found */
  25051. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25052. "use strict";
  25053. __webpack_require__.r(__webpack_exports__);
  25054. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./verify.vue?vue&type=style&index=0&id=97e49014&scoped=true&lang=scss&mpType=page */ 65);
  25055. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
  25056. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25057. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_verify_vue_vue_type_style_index_0_id_97e49014_scoped_true_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
  25058. /***/ }),
  25059. /* 65 */
  25060. /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  25061. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=style&index=0&id=97e49014&scoped=true&lang=scss&mpType=page ***!
  25062. \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  25063. /*! no static exports found */
  25064. /***/ (function(module, exports, __webpack_require__) {
  25065. // style-loader: Adds some css to the DOM by adding a <style> tag
  25066. // load the styles
  25067. var content = __webpack_require__(/*! !../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./verify.vue?vue&type=style&index=0&id=97e49014&scoped=true&lang=scss&mpType=page */ 66);
  25068. if(content.__esModule) content = content.default;
  25069. if(typeof content === 'string') content = [[module.i, content, '']];
  25070. if(content.locals) module.exports = content.locals;
  25071. // add the styles to the DOM
  25072. var add = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  25073. var update = add("d2ed8910", content, false, {"sourceMap":false,"shadowMode":false});
  25074. // Hot Module Replacement
  25075. if(false) {}
  25076. /***/ }),
  25077. /* 66 */
  25078. /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  25079. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=style&index=0&id=97e49014&scoped=true&lang=scss&mpType=page ***!
  25080. \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  25081. /*! no static exports found */
  25082. /***/ (function(module, exports, __webpack_require__) {
  25083. // Imports
  25084. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  25085. exports = ___CSS_LOADER_API_IMPORT___(false);
  25086. // Module
  25087. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n.container[data-v-97e49014] {\n padding: 15px;\n box-sizing: border-box;\n}\n.container .text-box[data-v-97e49014] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 200rpx;\n}\n.container .btn-box[data-v-97e49014] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 20px;\n}\n.container .btn-box .btn-scan[data-v-97e49014] {\n width: 90%;\n}\n", ""]);
  25088. // Exports
  25089. module.exports = exports;
  25090. /***/ }),
  25091. /* 67 */
  25092. /*!************************************************************************************!*\
  25093. !*** D:/Work2/Orienteering/TrackOffical/App.vue?vue&type=style&index=0&lang=scss& ***!
  25094. \************************************************************************************/
  25095. /*! no static exports found */
  25096. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25097. "use strict";
  25098. __webpack_require__.r(__webpack_exports__);
  25099. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./App.vue?vue&type=style&index=0&lang=scss& */ 68);
  25100. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
  25101. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25102. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
  25103. /***/ }),
  25104. /* 68 */
  25105. /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  25106. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/App.vue?vue&type=style&index=0&lang=scss& ***!
  25107. \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  25108. /*! no static exports found */
  25109. /***/ (function(module, exports, __webpack_require__) {
  25110. // style-loader: Adds some css to the DOM by adding a <style> tag
  25111. // load the styles
  25112. var content = __webpack_require__(/*! !../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./App.vue?vue&type=style&index=0&lang=scss& */ 69);
  25113. if(content.__esModule) content = content.default;
  25114. if(typeof content === 'string') content = [[module.i, content, '']];
  25115. if(content.locals) module.exports = content.locals;
  25116. // add the styles to the DOM
  25117. var add = __webpack_require__(/*! ../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  25118. var update = add("249050e0", content, false, {"sourceMap":false,"shadowMode":false});
  25119. // Hot Module Replacement
  25120. if(false) {}
  25121. /***/ }),
  25122. /* 69 */
  25123. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  25124. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/App.vue?vue&type=style&index=0&lang=scss& ***!
  25125. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  25126. /*! no static exports found */
  25127. /***/ (function(module, exports, __webpack_require__) {
  25128. // Imports
  25129. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  25130. var ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/lib/app-plus/getUrl.js */ 16);
  25131. var ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! @/static/customicons.ttf */ 70);
  25132. exports = ___CSS_LOADER_API_IMPORT___(false);
  25133. var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
  25134. // Module
  25135. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n/*每个页面公共css */\n/* 水平间距 */\n@font-face {\n font-family: \"customicons\"; /* Project id 2878519 */\n src:url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") format('truetype');\n}\n.customicons {\n font-family: \"customicons\" !important;\n}\n.youxi:before {\n content: \"\\e60e\";\n}\n.wenjian:before {\n content: \"\\e60f\";\n}\n.zhuanfa:before {\n content: \"\\e610\";\n}\n.uni-border {\n border: 1px #F0F0F0 solid;\n}\n.uni-primary {\n color: #2979ff;\n}\n.uni-primary-bg {\n background-color: #2979ff;\n}\n.uni-primary-disable {\n color: #94bcff;\n}\n.uni-primary-disable-bg {\n background-color: #94bcff;\n}\n.uni-primary-light {\n color: #d4e4ff;\n}\n.uni-primary-light-bg {\n background-color: #d4e4ff;\n}\n.uni-success {\n color: #18bc37;\n}\n.uni-success-bg {\n background-color: #18bc37;\n}\n.uni-success-disable {\n color: #8cde9b;\n}\n.uni-success-disable-bg {\n background-color: #8cde9b;\n}\n.uni-success-light {\n color: #d1f2d7;\n}\n.uni-success-light-bg {\n background-color: #d1f2d7;\n}\n.uni-warning {\n color: #f3a73f;\n}\n.uni-warning-bg {\n background-color: #f3a73f;\n}\n.uni-warning-disable {\n color: #f9d39f;\n}\n.uni-warning-disable-bg {\n background-color: #f9d39f;\n}\n.uni-warning-light {\n color: #fdedd9;\n}\n.uni-warning-light-bg {\n background-color: #fdedd9;\n}\n.uni-error {\n color: #e43d33;\n}\n.uni-error-bg {\n background-color: #e43d33;\n}\n.uni-error-disable {\n color: #f29e99;\n}\n.uni-error-disable-bg {\n background-color: #f29e99;\n}\n.uni-error-light {\n color: #fad8d6;\n}\n.uni-error-light-bg {\n background-color: #fad8d6;\n}\n.uni-info {\n color: #8f939c;\n}\n.uni-info-bg {\n background-color: #8f939c;\n}\n.uni-info-disable {\n color: #c7c9ce;\n}\n.uni-info-disable-bg {\n background-color: #c7c9ce;\n}\n.uni-info-light {\n color: #e9e9eb;\n}\n.uni-info-light-bg {\n background-color: #e9e9eb;\n}\n.uni-main-color {\n color: #3a3a3a;\n}\n.uni-main-color-bg {\n background-color: #3a3a3a;\n}\n.uni-base-color {\n color: #6a6a6a;\n}\n.uni-base-color-bg {\n background-color: #6a6a6a;\n}\n.uni-secondary-color {\n color: #909399;\n}\n.uni-secondary-color-bg {\n background-color: #909399;\n}\n.uni-extra-color {\n color: #c7c7c7;\n}\n.uni-extra-color-bg {\n background-color: #c7c7c7;\n}\n.uni-bg-color {\n color: #f7f7f7;\n}\n.uni-bg-color-bg {\n background-color: #f7f7f7;\n}\n.uni-border-1 {\n color: #F0F0F0;\n}\n.uni-border-1-bg {\n background-color: #F0F0F0;\n}\n.uni-border-2 {\n color: #EDEDED;\n}\n.uni-border-2-bg {\n background-color: #EDEDED;\n}\n.uni-border-3 {\n color: #DCDCDC;\n}\n.uni-border-3-bg {\n background-color: #DCDCDC;\n}\n.uni-border-4 {\n color: #B9B9B9;\n}\n.uni-border-4-bg {\n background-color: #B9B9B9;\n}\n.uni-black {\n color: #000000;\n}\n.uni-black-bg {\n background-color: #000000;\n}\n.uni-white {\n color: #ffffff;\n}\n.uni-white-bg {\n background-color: #ffffff;\n}\n.uni-transparent {\n color: rgba(0, 0, 0, 0);\n}\n.uni-transparent-bg {\n background-color: rgba(0, 0, 0, 0);\n}\n.uni-shadow-sm {\n box-shadow: 0 0 5px rgba(216, 216, 216, 0.5);\n}\n.uni-shadow-base {\n box-shadow: 0 1px 8px 1px rgba(165, 165, 165, 0.2);\n}\n.uni-shadow-lg {\n box-shadow: 0px 1px 10px 2px rgba(165, 164, 164, 0.5);\n}\n.uni-mask {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.uni-mt-0 {\n margin-top: 0px;\n}\n.uni-mt-n0 {\n margin-top: 0px;\n}\n.uni-mr-0 {\n margin-right: 0px;\n}\n.uni-mr-n0 {\n margin-right: 0px;\n}\n.uni-mb-0 {\n margin-bottom: 0px;\n}\n.uni-mb-n0 {\n margin-bottom: 0px;\n}\n.uni-ml-0 {\n margin-left: 0px;\n}\n.uni-ml-n0 {\n margin-left: 0px;\n}\n.uni-mx-0 {\n margin-left: 0px;\n margin-right: 0px;\n}\n.uni-mx-n0 {\n margin-left: 0px;\n margin-right: 0px;\n}\n.uni-my-0 {\n margin-top: 0px;\n margin-bottom: 0px;\n}\n.uni-my-n0 {\n margin-top: 0px;\n margin-bottom: 0px;\n}\n.uni-ma-0 {\n margin: 0px;\n}\n.uni-ma-n0 {\n margin: 0px;\n}\n.uni-mt-1 {\n margin-top: 2px;\n}\n.uni-mt-n1 {\n margin-top: -2px;\n}\n.uni-mr-1 {\n margin-right: 2px;\n}\n.uni-mr-n1 {\n margin-right: -2px;\n}\n.uni-mb-1 {\n margin-bottom: 2px;\n}\n.uni-mb-n1 {\n margin-bottom: -2px;\n}\n.uni-ml-1 {\n margin-left: 2px;\n}\n.uni-ml-n1 {\n margin-left: -2px;\n}\n.uni-mx-1 {\n margin-left: 2px;\n margin-right: 2px;\n}\n.uni-mx-n1 {\n margin-left: -2px;\n margin-right: -2px;\n}\n.uni-my-1 {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.uni-my-n1 {\n margin-top: -2px;\n margin-bottom: -2px;\n}\n.uni-ma-1 {\n margin: 2px;\n}\n.uni-ma-n1 {\n margin: -2px;\n}\n.uni-mt-2 {\n margin-top: 4px;\n}\n.uni-mt-n2 {\n margin-top: -4px;\n}\n.uni-mr-2 {\n margin-right: 4px;\n}\n.uni-mr-n2 {\n margin-right: -4px;\n}\n.uni-mb-2 {\n margin-bottom: 4px;\n}\n.uni-mb-n2 {\n margin-bottom: -4px;\n}\n.uni-ml-2 {\n margin-left: 4px;\n}\n.uni-ml-n2 {\n margin-left: -4px;\n}\n.uni-mx-2 {\n margin-left: 4px;\n margin-right: 4px;\n}\n.uni-mx-n2 {\n margin-left: -4px;\n margin-right: -4px;\n}\n.uni-my-2 {\n margin-top: 4px;\n margin-bottom: 4px;\n}\n.uni-my-n2 {\n margin-top: -4px;\n margin-bottom: -4px;\n}\n.uni-ma-2 {\n margin: 4px;\n}\n.uni-ma-n2 {\n margin: -4px;\n}\n.uni-mt-3 {\n margin-top: 6px;\n}\n.uni-mt-n3 {\n margin-top: -6px;\n}\n.uni-mr-3 {\n margin-right: 6px;\n}\n.uni-mr-n3 {\n margin-right: -6px;\n}\n.uni-mb-3 {\n margin-bottom: 6px;\n}\n.uni-mb-n3 {\n margin-bottom: -6px;\n}\n.uni-ml-3 {\n margin-left: 6px;\n}\n.uni-ml-n3 {\n margin-left: -6px;\n}\n.uni-mx-3 {\n margin-left: 6px;\n margin-right: 6px;\n}\n.uni-mx-n3 {\n margin-left: -6px;\n margin-right: -6px;\n}\n.uni-my-3 {\n margin-top: 6px;\n margin-bottom: 6px;\n}\n.uni-my-n3 {\n margin-top: -6px;\n margin-bottom: -6px;\n}\n.uni-ma-3 {\n margin: 6px;\n}\n.uni-ma-n3 {\n margin: -6px;\n}\n.uni-mt-4 {\n margin-top: 8px;\n}\n.uni-mt-n4 {\n margin-top: -8px;\n}\n.uni-mr-4 {\n margin-right: 8px;\n}\n.uni-mr-n4 {\n margin-right: -8px;\n}\n.uni-mb-4 {\n margin-bottom: 8px;\n}\n.uni-mb-n4 {\n margin-bottom: -8px;\n}\n.uni-ml-4 {\n margin-left: 8px;\n}\n.uni-ml-n4 {\n margin-left: -8px;\n}\n.uni-mx-4 {\n margin-left: 8px;\n margin-right: 8px;\n}\n.uni-mx-n4 {\n margin-left: -8px;\n margin-right: -8px;\n}\n.uni-my-4 {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.uni-my-n4 {\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.uni-ma-4 {\n margin: 8px;\n}\n.uni-ma-n4 {\n margin: -8px;\n}\n.uni-mt-5 {\n margin-top: 10px;\n}\n.uni-mt-n5 {\n margin-top: -10px;\n}\n.uni-mr-5 {\n margin-right: 10px;\n}\n.uni-mr-n5 {\n margin-right: -10px;\n}\n.uni-mb-5 {\n margin-bottom: 10px;\n}\n.uni-mb-n5 {\n margin-bottom: -10px;\n}\n.uni-ml-5 {\n margin-left: 10px;\n}\n.uni-ml-n5 {\n margin-left: -10px;\n}\n.uni-mx-5 {\n margin-left: 10px;\n margin-right: 10px;\n}\n.uni-mx-n5 {\n margin-left: -10px;\n margin-right: -10px;\n}\n.uni-my-5 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.uni-my-n5 {\n margin-top: -10px;\n margin-bottom: -10px;\n}\n.uni-ma-5 {\n margin: 10px;\n}\n.uni-ma-n5 {\n margin: -10px;\n}\n.uni-mt-6 {\n margin-top: 12px;\n}\n.uni-mt-n6 {\n margin-top: -12px;\n}\n.uni-mr-6 {\n margin-right: 12px;\n}\n.uni-mr-n6 {\n margin-right: -12px;\n}\n.uni-mb-6 {\n margin-bottom: 12px;\n}\n.uni-mb-n6 {\n margin-bottom: -12px;\n}\n.uni-ml-6 {\n margin-left: 12px;\n}\n.uni-ml-n6 {\n margin-left: -12px;\n}\n.uni-mx-6 {\n margin-left: 12px;\n margin-right: 12px;\n}\n.uni-mx-n6 {\n margin-left: -12px;\n margin-right: -12px;\n}\n.uni-my-6 {\n margin-top: 12px;\n margin-bottom: 12px;\n}\n.uni-my-n6 {\n margin-top: -12px;\n margin-bottom: -12px;\n}\n.uni-ma-6 {\n margin: 12px;\n}\n.uni-ma-n6 {\n margin: -12px;\n}\n.uni-mt-7 {\n margin-top: 14px;\n}\n.uni-mt-n7 {\n margin-top: -14px;\n}\n.uni-mr-7 {\n margin-right: 14px;\n}\n.uni-mr-n7 {\n margin-right: -14px;\n}\n.uni-mb-7 {\n margin-bottom: 14px;\n}\n.uni-mb-n7 {\n margin-bottom: -14px;\n}\n.uni-ml-7 {\n margin-left: 14px;\n}\n.uni-ml-n7 {\n margin-left: -14px;\n}\n.uni-mx-7 {\n margin-left: 14px;\n margin-right: 14px;\n}\n.uni-mx-n7 {\n margin-left: -14px;\n margin-right: -14px;\n}\n.uni-my-7 {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.uni-my-n7 {\n margin-top: -14px;\n margin-bottom: -14px;\n}\n.uni-ma-7 {\n margin: 14px;\n}\n.uni-ma-n7 {\n margin: -14px;\n}\n.uni-mt-8 {\n margin-top: 16px;\n}\n.uni-mt-n8 {\n margin-top: -16px;\n}\n.uni-mr-8 {\n margin-right: 16px;\n}\n.uni-mr-n8 {\n margin-right: -16px;\n}\n.uni-mb-8 {\n margin-bottom: 16px;\n}\n.uni-mb-n8 {\n margin-bottom: -16px;\n}\n.uni-ml-8 {\n margin-left: 16px;\n}\n.uni-ml-n8 {\n margin-left: -16px;\n}\n.uni-mx-8 {\n margin-left: 16px;\n margin-right: 16px;\n}\n.uni-mx-n8 {\n margin-left: -16px;\n margin-right: -16px;\n}\n.uni-my-8 {\n margin-top: 16px;\n margin-bottom: 16px;\n}\n.uni-my-n8 {\n margin-top: -16px;\n margin-bottom: -16px;\n}\n.uni-ma-8 {\n margin: 16px;\n}\n.uni-ma-n8 {\n margin: -16px;\n}\n.uni-mt-9 {\n margin-top: 18px;\n}\n.uni-mt-n9 {\n margin-top: -18px;\n}\n.uni-mr-9 {\n margin-right: 18px;\n}\n.uni-mr-n9 {\n margin-right: -18px;\n}\n.uni-mb-9 {\n margin-bottom: 18px;\n}\n.uni-mb-n9 {\n margin-bottom: -18px;\n}\n.uni-ml-9 {\n margin-left: 18px;\n}\n.uni-ml-n9 {\n margin-left: -18px;\n}\n.uni-mx-9 {\n margin-left: 18px;\n margin-right: 18px;\n}\n.uni-mx-n9 {\n margin-left: -18px;\n margin-right: -18px;\n}\n.uni-my-9 {\n margin-top: 18px;\n margin-bottom: 18px;\n}\n.uni-my-n9 {\n margin-top: -18px;\n margin-bottom: -18px;\n}\n.uni-ma-9 {\n margin: 18px;\n}\n.uni-ma-n9 {\n margin: -18px;\n}\n.uni-mt-10 {\n margin-top: 20px;\n}\n.uni-mt-n10 {\n margin-top: -20px;\n}\n.uni-mr-10 {\n margin-right: 20px;\n}\n.uni-mr-n10 {\n margin-right: -20px;\n}\n.uni-mb-10 {\n margin-bottom: 20px;\n}\n.uni-mb-n10 {\n margin-bottom: -20px;\n}\n.uni-ml-10 {\n margin-left: 20px;\n}\n.uni-ml-n10 {\n margin-left: -20px;\n}\n.uni-mx-10 {\n margin-left: 20px;\n margin-right: 20px;\n}\n.uni-mx-n10 {\n margin-left: -20px;\n margin-right: -20px;\n}\n.uni-my-10 {\n margin-top: 20px;\n margin-bottom: 20px;\n}\n.uni-my-n10 {\n margin-top: -20px;\n margin-bottom: -20px;\n}\n.uni-ma-10 {\n margin: 20px;\n}\n.uni-ma-n10 {\n margin: -20px;\n}\n.uni-mt-11 {\n margin-top: 22px;\n}\n.uni-mt-n11 {\n margin-top: -22px;\n}\n.uni-mr-11 {\n margin-right: 22px;\n}\n.uni-mr-n11 {\n margin-right: -22px;\n}\n.uni-mb-11 {\n margin-bottom: 22px;\n}\n.uni-mb-n11 {\n margin-bottom: -22px;\n}\n.uni-ml-11 {\n margin-left: 22px;\n}\n.uni-ml-n11 {\n margin-left: -22px;\n}\n.uni-mx-11 {\n margin-left: 22px;\n margin-right: 22px;\n}\n.uni-mx-n11 {\n margin-left: -22px;\n margin-right: -22px;\n}\n.uni-my-11 {\n margin-top: 22px;\n margin-bottom: 22px;\n}\n.uni-my-n11 {\n margin-top: -22px;\n margin-bottom: -22px;\n}\n.uni-ma-11 {\n margin: 22px;\n}\n.uni-ma-n11 {\n margin: -22px;\n}\n.uni-mt-12 {\n margin-top: 24px;\n}\n.uni-mt-n12 {\n margin-top: -24px;\n}\n.uni-mr-12 {\n margin-right: 24px;\n}\n.uni-mr-n12 {\n margin-right: -24px;\n}\n.uni-mb-12 {\n margin-bottom: 24px;\n}\n.uni-mb-n12 {\n margin-bottom: -24px;\n}\n.uni-ml-12 {\n margin-left: 24px;\n}\n.uni-ml-n12 {\n margin-left: -24px;\n}\n.uni-mx-12 {\n margin-left: 24px;\n margin-right: 24px;\n}\n.uni-mx-n12 {\n margin-left: -24px;\n margin-right: -24px;\n}\n.uni-my-12 {\n margin-top: 24px;\n margin-bottom: 24px;\n}\n.uni-my-n12 {\n margin-top: -24px;\n margin-bottom: -24px;\n}\n.uni-ma-12 {\n margin: 24px;\n}\n.uni-ma-n12 {\n margin: -24px;\n}\n.uni-mt-13 {\n margin-top: 26px;\n}\n.uni-mt-n13 {\n margin-top: -26px;\n}\n.uni-mr-13 {\n margin-right: 26px;\n}\n.uni-mr-n13 {\n margin-right: -26px;\n}\n.uni-mb-13 {\n margin-bottom: 26px;\n}\n.uni-mb-n13 {\n margin-bottom: -26px;\n}\n.uni-ml-13 {\n margin-left: 26px;\n}\n.uni-ml-n13 {\n margin-left: -26px;\n}\n.uni-mx-13 {\n margin-left: 26px;\n margin-right: 26px;\n}\n.uni-mx-n13 {\n margin-left: -26px;\n margin-right: -26px;\n}\n.uni-my-13 {\n margin-top: 26px;\n margin-bottom: 26px;\n}\n.uni-my-n13 {\n margin-top: -26px;\n margin-bottom: -26px;\n}\n.uni-ma-13 {\n margin: 26px;\n}\n.uni-ma-n13 {\n margin: -26px;\n}\n.uni-mt-14 {\n margin-top: 28px;\n}\n.uni-mt-n14 {\n margin-top: -28px;\n}\n.uni-mr-14 {\n margin-right: 28px;\n}\n.uni-mr-n14 {\n margin-right: -28px;\n}\n.uni-mb-14 {\n margin-bottom: 28px;\n}\n.uni-mb-n14 {\n margin-bottom: -28px;\n}\n.uni-ml-14 {\n margin-left: 28px;\n}\n.uni-ml-n14 {\n margin-left: -28px;\n}\n.uni-mx-14 {\n margin-left: 28px;\n margin-right: 28px;\n}\n.uni-mx-n14 {\n margin-left: -28px;\n margin-right: -28px;\n}\n.uni-my-14 {\n margin-top: 28px;\n margin-bottom: 28px;\n}\n.uni-my-n14 {\n margin-top: -28px;\n margin-bottom: -28px;\n}\n.uni-ma-14 {\n margin: 28px;\n}\n.uni-ma-n14 {\n margin: -28px;\n}\n.uni-mt-15 {\n margin-top: 30px;\n}\n.uni-mt-n15 {\n margin-top: -30px;\n}\n.uni-mr-15 {\n margin-right: 30px;\n}\n.uni-mr-n15 {\n margin-right: -30px;\n}\n.uni-mb-15 {\n margin-bottom: 30px;\n}\n.uni-mb-n15 {\n margin-bottom: -30px;\n}\n.uni-ml-15 {\n margin-left: 30px;\n}\n.uni-ml-n15 {\n margin-left: -30px;\n}\n.uni-mx-15 {\n margin-left: 30px;\n margin-right: 30px;\n}\n.uni-mx-n15 {\n margin-left: -30px;\n margin-right: -30px;\n}\n.uni-my-15 {\n margin-top: 30px;\n margin-bottom: 30px;\n}\n.uni-my-n15 {\n margin-top: -30px;\n margin-bottom: -30px;\n}\n.uni-ma-15 {\n margin: 30px;\n}\n.uni-ma-n15 {\n margin: -30px;\n}\n.uni-mt-16 {\n margin-top: 32px;\n}\n.uni-mt-n16 {\n margin-top: -32px;\n}\n.uni-mr-16 {\n margin-right: 32px;\n}\n.uni-mr-n16 {\n margin-right: -32px;\n}\n.uni-mb-16 {\n margin-bottom: 32px;\n}\n.uni-mb-n16 {\n margin-bottom: -32px;\n}\n.uni-ml-16 {\n margin-left: 32px;\n}\n.uni-ml-n16 {\n margin-left: -32px;\n}\n.uni-mx-16 {\n margin-left: 32px;\n margin-right: 32px;\n}\n.uni-mx-n16 {\n margin-left: -32px;\n margin-right: -32px;\n}\n.uni-my-16 {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n.uni-my-n16 {\n margin-top: -32px;\n margin-bottom: -32px;\n}\n.uni-ma-16 {\n margin: 32px;\n}\n.uni-ma-n16 {\n margin: -32px;\n}\n.uni-pt-0 {\n padding-top: 0px;\n}\n.uni-pt-n0 {\n padding-top: 0px;\n}\n.uni-pr-0 {\n padding-right: 0px;\n}\n.uni-pr-n0 {\n padding-right: 0px;\n}\n.uni-pb-0 {\n padding-bottom: 0px;\n}\n.uni-pb-n0 {\n padding-bottom: 0px;\n}\n.uni-pl-0 {\n padding-left: 0px;\n}\n.uni-pl-n0 {\n padding-left: 0px;\n}\n.uni-px-0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n.uni-px-n0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n.uni-py-0 {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.uni-py-n0 {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.uni-pa-0 {\n padding: 0px;\n}\n.uni-pa-n0 {\n padding: 0px;\n}\n.uni-pt-1 {\n padding-top: 2px;\n}\n.uni-pt-n1 {\n padding-top: -2px;\n}\n.uni-pr-1 {\n padding-right: 2px;\n}\n.uni-pr-n1 {\n padding-right: -2px;\n}\n.uni-pb-1 {\n padding-bottom: 2px;\n}\n.uni-pb-n1 {\n padding-bottom: -2px;\n}\n.uni-pl-1 {\n padding-left: 2px;\n}\n.uni-pl-n1 {\n padding-left: -2px;\n}\n.uni-px-1 {\n padding-left: 2px;\n padding-right: 2px;\n}\n.uni-px-n1 {\n padding-left: -2px;\n padding-right: -2px;\n}\n.uni-py-1 {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.uni-py-n1 {\n padding-top: -2px;\n padding-bottom: -2px;\n}\n.uni-pa-1 {\n padding: 2px;\n}\n.uni-pa-n1 {\n padding: -2px;\n}\n.uni-pt-2 {\n padding-top: 4px;\n}\n.uni-pt-n2 {\n padding-top: -4px;\n}\n.uni-pr-2 {\n padding-right: 4px;\n}\n.uni-pr-n2 {\n padding-right: -4px;\n}\n.uni-pb-2 {\n padding-bottom: 4px;\n}\n.uni-pb-n2 {\n padding-bottom: -4px;\n}\n.uni-pl-2 {\n padding-left: 4px;\n}\n.uni-pl-n2 {\n padding-left: -4px;\n}\n.uni-px-2 {\n padding-left: 4px;\n padding-right: 4px;\n}\n.uni-px-n2 {\n padding-left: -4px;\n padding-right: -4px;\n}\n.uni-py-2 {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.uni-py-n2 {\n padding-top: -4px;\n padding-bottom: -4px;\n}\n.uni-pa-2 {\n padding: 4px;\n}\n.uni-pa-n2 {\n padding: -4px;\n}\n.uni-pt-3 {\n padding-top: 6px;\n}\n.uni-pt-n3 {\n padding-top: -6px;\n}\n.uni-pr-3 {\n padding-right: 6px;\n}\n.uni-pr-n3 {\n padding-right: -6px;\n}\n.uni-pb-3 {\n padding-bottom: 6px;\n}\n.uni-pb-n3 {\n padding-bottom: -6px;\n}\n.uni-pl-3 {\n padding-left: 6px;\n}\n.uni-pl-n3 {\n padding-left: -6px;\n}\n.uni-px-3 {\n padding-left: 6px;\n padding-right: 6px;\n}\n.uni-px-n3 {\n padding-left: -6px;\n padding-right: -6px;\n}\n.uni-py-3 {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n.uni-py-n3 {\n padding-top: -6px;\n padding-bottom: -6px;\n}\n.uni-pa-3 {\n padding: 6px;\n}\n.uni-pa-n3 {\n padding: -6px;\n}\n.uni-pt-4 {\n padding-top: 8px;\n}\n.uni-pt-n4 {\n padding-top: -8px;\n}\n.uni-pr-4 {\n padding-right: 8px;\n}\n.uni-pr-n4 {\n padding-right: -8px;\n}\n.uni-pb-4 {\n padding-bottom: 8px;\n}\n.uni-pb-n4 {\n padding-bottom: -8px;\n}\n.uni-pl-4 {\n padding-left: 8px;\n}\n.uni-pl-n4 {\n padding-left: -8px;\n}\n.uni-px-4 {\n padding-left: 8px;\n padding-right: 8px;\n}\n.uni-px-n4 {\n padding-left: -8px;\n padding-right: -8px;\n}\n.uni-py-4 {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.uni-py-n4 {\n padding-top: -8px;\n padding-bottom: -8px;\n}\n.uni-pa-4 {\n padding: 8px;\n}\n.uni-pa-n4 {\n padding: -8px;\n}\n.uni-pt-5 {\n padding-top: 10px;\n}\n.uni-pt-n5 {\n padding-top: -10px;\n}\n.uni-pr-5 {\n padding-right: 10px;\n}\n.uni-pr-n5 {\n padding-right: -10px;\n}\n.uni-pb-5 {\n padding-bottom: 10px;\n}\n.uni-pb-n5 {\n padding-bottom: -10px;\n}\n.uni-pl-5 {\n padding-left: 10px;\n}\n.uni-pl-n5 {\n padding-left: -10px;\n}\n.uni-px-5 {\n padding-left: 10px;\n padding-right: 10px;\n}\n.uni-px-n5 {\n padding-left: -10px;\n padding-right: -10px;\n}\n.uni-py-5 {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.uni-py-n5 {\n padding-top: -10px;\n padding-bottom: -10px;\n}\n.uni-pa-5 {\n padding: 10px;\n}\n.uni-pa-n5 {\n padding: -10px;\n}\n.uni-pt-6 {\n padding-top: 12px;\n}\n.uni-pt-n6 {\n padding-top: -12px;\n}\n.uni-pr-6 {\n padding-right: 12px;\n}\n.uni-pr-n6 {\n padding-right: -12px;\n}\n.uni-pb-6 {\n padding-bottom: 12px;\n}\n.uni-pb-n6 {\n padding-bottom: -12px;\n}\n.uni-pl-6 {\n padding-left: 12px;\n}\n.uni-pl-n6 {\n padding-left: -12px;\n}\n.uni-px-6 {\n padding-left: 12px;\n padding-right: 12px;\n}\n.uni-px-n6 {\n padding-left: -12px;\n padding-right: -12px;\n}\n.uni-py-6 {\n padding-top: 12px;\n padding-bottom: 12px;\n}\n.uni-py-n6 {\n padding-top: -12px;\n padding-bottom: -12px;\n}\n.uni-pa-6 {\n padding: 12px;\n}\n.uni-pa-n6 {\n padding: -12px;\n}\n.uni-pt-7 {\n padding-top: 14px;\n}\n.uni-pt-n7 {\n padding-top: -14px;\n}\n.uni-pr-7 {\n padding-right: 14px;\n}\n.uni-pr-n7 {\n padding-right: -14px;\n}\n.uni-pb-7 {\n padding-bottom: 14px;\n}\n.uni-pb-n7 {\n padding-bottom: -14px;\n}\n.uni-pl-7 {\n padding-left: 14px;\n}\n.uni-pl-n7 {\n padding-left: -14px;\n}\n.uni-px-7 {\n padding-left: 14px;\n padding-right: 14px;\n}\n.uni-px-n7 {\n padding-left: -14px;\n padding-right: -14px;\n}\n.uni-py-7 {\n padding-top: 14px;\n padding-bottom: 14px;\n}\n.uni-py-n7 {\n padding-top: -14px;\n padding-bottom: -14px;\n}\n.uni-pa-7 {\n padding: 14px;\n}\n.uni-pa-n7 {\n padding: -14px;\n}\n.uni-pt-8 {\n padding-top: 16px;\n}\n.uni-pt-n8 {\n padding-top: -16px;\n}\n.uni-pr-8 {\n padding-right: 16px;\n}\n.uni-pr-n8 {\n padding-right: -16px;\n}\n.uni-pb-8 {\n padding-bottom: 16px;\n}\n.uni-pb-n8 {\n padding-bottom: -16px;\n}\n.uni-pl-8 {\n padding-left: 16px;\n}\n.uni-pl-n8 {\n padding-left: -16px;\n}\n.uni-px-8 {\n padding-left: 16px;\n padding-right: 16px;\n}\n.uni-px-n8 {\n padding-left: -16px;\n padding-right: -16px;\n}\n.uni-py-8 {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.uni-py-n8 {\n padding-top: -16px;\n padding-bottom: -16px;\n}\n.uni-pa-8 {\n padding: 16px;\n}\n.uni-pa-n8 {\n padding: -16px;\n}\n.uni-pt-9 {\n padding-top: 18px;\n}\n.uni-pt-n9 {\n padding-top: -18px;\n}\n.uni-pr-9 {\n padding-right: 18px;\n}\n.uni-pr-n9 {\n padding-right: -18px;\n}\n.uni-pb-9 {\n padding-bottom: 18px;\n}\n.uni-pb-n9 {\n padding-bottom: -18px;\n}\n.uni-pl-9 {\n padding-left: 18px;\n}\n.uni-pl-n9 {\n padding-left: -18px;\n}\n.uni-px-9 {\n padding-left: 18px;\n padding-right: 18px;\n}\n.uni-px-n9 {\n padding-left: -18px;\n padding-right: -18px;\n}\n.uni-py-9 {\n padding-top: 18px;\n padding-bottom: 18px;\n}\n.uni-py-n9 {\n padding-top: -18px;\n padding-bottom: -18px;\n}\n.uni-pa-9 {\n padding: 18px;\n}\n.uni-pa-n9 {\n padding: -18px;\n}\n.uni-pt-10 {\n padding-top: 20px;\n}\n.uni-pt-n10 {\n padding-top: -20px;\n}\n.uni-pr-10 {\n padding-right: 20px;\n}\n.uni-pr-n10 {\n padding-right: -20px;\n}\n.uni-pb-10 {\n padding-bottom: 20px;\n}\n.uni-pb-n10 {\n padding-bottom: -20px;\n}\n.uni-pl-10 {\n padding-left: 20px;\n}\n.uni-pl-n10 {\n padding-left: -20px;\n}\n.uni-px-10 {\n padding-left: 20px;\n padding-right: 20px;\n}\n.uni-px-n10 {\n padding-left: -20px;\n padding-right: -20px;\n}\n.uni-py-10 {\n padding-top: 20px;\n padding-bottom: 20px;\n}\n.uni-py-n10 {\n padding-top: -20px;\n padding-bottom: -20px;\n}\n.uni-pa-10 {\n padding: 20px;\n}\n.uni-pa-n10 {\n padding: -20px;\n}\n.uni-pt-11 {\n padding-top: 22px;\n}\n.uni-pt-n11 {\n padding-top: -22px;\n}\n.uni-pr-11 {\n padding-right: 22px;\n}\n.uni-pr-n11 {\n padding-right: -22px;\n}\n.uni-pb-11 {\n padding-bottom: 22px;\n}\n.uni-pb-n11 {\n padding-bottom: -22px;\n}\n.uni-pl-11 {\n padding-left: 22px;\n}\n.uni-pl-n11 {\n padding-left: -22px;\n}\n.uni-px-11 {\n padding-left: 22px;\n padding-right: 22px;\n}\n.uni-px-n11 {\n padding-left: -22px;\n padding-right: -22px;\n}\n.uni-py-11 {\n padding-top: 22px;\n padding-bottom: 22px;\n}\n.uni-py-n11 {\n padding-top: -22px;\n padding-bottom: -22px;\n}\n.uni-pa-11 {\n padding: 22px;\n}\n.uni-pa-n11 {\n padding: -22px;\n}\n.uni-pt-12 {\n padding-top: 24px;\n}\n.uni-pt-n12 {\n padding-top: -24px;\n}\n.uni-pr-12 {\n padding-right: 24px;\n}\n.uni-pr-n12 {\n padding-right: -24px;\n}\n.uni-pb-12 {\n padding-bottom: 24px;\n}\n.uni-pb-n12 {\n padding-bottom: -24px;\n}\n.uni-pl-12 {\n padding-left: 24px;\n}\n.uni-pl-n12 {\n padding-left: -24px;\n}\n.uni-px-12 {\n padding-left: 24px;\n padding-right: 24px;\n}\n.uni-px-n12 {\n padding-left: -24px;\n padding-right: -24px;\n}\n.uni-py-12 {\n padding-top: 24px;\n padding-bottom: 24px;\n}\n.uni-py-n12 {\n padding-top: -24px;\n padding-bottom: -24px;\n}\n.uni-pa-12 {\n padding: 24px;\n}\n.uni-pa-n12 {\n padding: -24px;\n}\n.uni-pt-13 {\n padding-top: 26px;\n}\n.uni-pt-n13 {\n padding-top: -26px;\n}\n.uni-pr-13 {\n padding-right: 26px;\n}\n.uni-pr-n13 {\n padding-right: -26px;\n}\n.uni-pb-13 {\n padding-bottom: 26px;\n}\n.uni-pb-n13 {\n padding-bottom: -26px;\n}\n.uni-pl-13 {\n padding-left: 26px;\n}\n.uni-pl-n13 {\n padding-left: -26px;\n}\n.uni-px-13 {\n padding-left: 26px;\n padding-right: 26px;\n}\n.uni-px-n13 {\n padding-left: -26px;\n padding-right: -26px;\n}\n.uni-py-13 {\n padding-top: 26px;\n padding-bottom: 26px;\n}\n.uni-py-n13 {\n padding-top: -26px;\n padding-bottom: -26px;\n}\n.uni-pa-13 {\n padding: 26px;\n}\n.uni-pa-n13 {\n padding: -26px;\n}\n.uni-pt-14 {\n padding-top: 28px;\n}\n.uni-pt-n14 {\n padding-top: -28px;\n}\n.uni-pr-14 {\n padding-right: 28px;\n}\n.uni-pr-n14 {\n padding-right: -28px;\n}\n.uni-pb-14 {\n padding-bottom: 28px;\n}\n.uni-pb-n14 {\n padding-bottom: -28px;\n}\n.uni-pl-14 {\n padding-left: 28px;\n}\n.uni-pl-n14 {\n padding-left: -28px;\n}\n.uni-px-14 {\n padding-left: 28px;\n padding-right: 28px;\n}\n.uni-px-n14 {\n padding-left: -28px;\n padding-right: -28px;\n}\n.uni-py-14 {\n padding-top: 28px;\n padding-bottom: 28px;\n}\n.uni-py-n14 {\n padding-top: -28px;\n padding-bottom: -28px;\n}\n.uni-pa-14 {\n padding: 28px;\n}\n.uni-pa-n14 {\n padding: -28px;\n}\n.uni-pt-15 {\n padding-top: 30px;\n}\n.uni-pt-n15 {\n padding-top: -30px;\n}\n.uni-pr-15 {\n padding-right: 30px;\n}\n.uni-pr-n15 {\n padding-right: -30px;\n}\n.uni-pb-15 {\n padding-bottom: 30px;\n}\n.uni-pb-n15 {\n padding-bottom: -30px;\n}\n.uni-pl-15 {\n padding-left: 30px;\n}\n.uni-pl-n15 {\n padding-left: -30px;\n}\n.uni-px-15 {\n padding-left: 30px;\n padding-right: 30px;\n}\n.uni-px-n15 {\n padding-left: -30px;\n padding-right: -30px;\n}\n.uni-py-15 {\n padding-top: 30px;\n padding-bottom: 30px;\n}\n.uni-py-n15 {\n padding-top: -30px;\n padding-bottom: -30px;\n}\n.uni-pa-15 {\n padding: 30px;\n}\n.uni-pa-n15 {\n padding: -30px;\n}\n.uni-pt-16 {\n padding-top: 32px;\n}\n.uni-pt-n16 {\n padding-top: -32px;\n}\n.uni-pr-16 {\n padding-right: 32px;\n}\n.uni-pr-n16 {\n padding-right: -32px;\n}\n.uni-pb-16 {\n padding-bottom: 32px;\n}\n.uni-pb-n16 {\n padding-bottom: -32px;\n}\n.uni-pl-16 {\n padding-left: 32px;\n}\n.uni-pl-n16 {\n padding-left: -32px;\n}\n.uni-px-16 {\n padding-left: 32px;\n padding-right: 32px;\n}\n.uni-px-n16 {\n padding-left: -32px;\n padding-right: -32px;\n}\n.uni-py-16 {\n padding-top: 32px;\n padding-bottom: 32px;\n}\n.uni-py-n16 {\n padding-top: -32px;\n padding-bottom: -32px;\n}\n.uni-pa-16 {\n padding: 32px;\n}\n.uni-pa-n16 {\n padding: -32px;\n}\n.uni-radius-0 {\n border-radius: 0;\n}\n.uni-radius {\n border-radius: 5px;\n}\n.uni-radius-lg {\n border-radius: 10px;\n}\n.uni-radius-xl {\n border-radius: 30px;\n}\n.uni-radius-pill {\n border-radius: 9999px;\n}\n.uni-radius-circle {\n border-radius: 50%;\n}\n.uni-radius-t-0 {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.uni-radius-t {\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n.uni-radius-t-lg {\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n}\n.uni-radius-t-xl {\n border-top-left-radius: 30px;\n border-top-right-radius: 30px;\n}\n.uni-radius-t-pill {\n border-top-left-radius: 9999px;\n border-top-right-radius: 9999px;\n}\n.uni-radius-t-circle {\n border-top-left-radius: 50%;\n border-top-right-radius: 50%;\n}\n.uni-radius-r-0 {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.uni-radius-r {\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n}\n.uni-radius-r-lg {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n}\n.uni-radius-r-xl {\n border-top-right-radius: 30px;\n border-bottom-right-radius: 30px;\n}\n.uni-radius-r-pill {\n border-top-right-radius: 9999px;\n border-bottom-right-radius: 9999px;\n}\n.uni-radius-r-circle {\n border-top-right-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n.uni-radius-b-0 {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.uni-radius-b {\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n}\n.uni-radius-b-lg {\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n}\n.uni-radius-b-xl {\n border-bottom-left-radius: 30px;\n border-bottom-right-radius: 30px;\n}\n.uni-radius-b-pill {\n border-bottom-left-radius: 9999px;\n border-bottom-right-radius: 9999px;\n}\n.uni-radius-b-circle {\n border-bottom-left-radius: 50%;\n border-bottom-right-radius: 50%;\n}\n.uni-radius-l-0 {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.uni-radius-l {\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n}\n.uni-radius-l-lg {\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n}\n.uni-radius-l-xl {\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n}\n.uni-radius-l-pill {\n border-top-left-radius: 9999px;\n border-bottom-left-radius: 9999px;\n}\n.uni-radius-l-circle {\n border-top-left-radius: 50%;\n border-bottom-left-radius: 50%;\n}\n.uni-radius-tl-0 {\n border-top-left-radius: 0;\n}\n.uni-radius-tl {\n border-top-left-radius: 5px;\n}\n.uni-radius-tl-lg {\n border-top-left-radius: 10px;\n}\n.uni-radius-tl-xl {\n border-top-left-radius: 30px;\n}\n.uni-radius-tl-pill {\n border-top-left-radius: 9999px;\n}\n.uni-radius-tl-circle {\n border-top-left-radius: 50%;\n}\n.uni-radius-tr-0 {\n border-top-right-radius: 0;\n}\n.uni-radius-tr {\n border-top-right-radius: 5px;\n}\n.uni-radius-tr-lg {\n border-top-right-radius: 10px;\n}\n.uni-radius-tr-xl {\n border-top-right-radius: 30px;\n}\n.uni-radius-tr-pill {\n border-top-right-radius: 9999px;\n}\n.uni-radius-tr-circle {\n border-top-right-radius: 50%;\n}\n.uni-radius-br-0 {\n border-bottom-right-radius: 0;\n}\n.uni-radius-br {\n border-bottom-right-radius: 5px;\n}\n.uni-radius-br-lg {\n border-bottom-right-radius: 10px;\n}\n.uni-radius-br-xl {\n border-bottom-right-radius: 30px;\n}\n.uni-radius-br-pill {\n border-bottom-right-radius: 9999px;\n}\n.uni-radius-br-circle {\n border-bottom-right-radius: 50%;\n}\n.uni-radius-bl-0 {\n border-bottom-left-radius: 0;\n}\n.uni-radius-bl {\n border-bottom-left-radius: 5px;\n}\n.uni-radius-bl-lg {\n border-bottom-left-radius: 10px;\n}\n.uni-radius-bl-xl {\n border-bottom-left-radius: 30px;\n}\n.uni-radius-bl-pill {\n border-bottom-left-radius: 9999px;\n}\n.uni-radius-bl-circle {\n border-bottom-left-radius: 50%;\n}\n.uni-h1 {\n font-size: 32px;\n font-weight: 300;\n line-height: 50px;\n}\n.uni-h2 {\n font-size: 28px;\n font-weight: 300;\n line-height: 40px;\n}\n.uni-h3 {\n font-size: 24px;\n font-weight: 400;\n line-height: 32px;\n}\n.uni-h4 {\n font-size: 20px;\n font-weight: 400;\n line-height: 30px;\n}\n.uni-h5 {\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n}\n.uni-h6 {\n font-size: 14px;\n font-weight: 500;\n line-height: 18px;\n}\n.uni-subtitle {\n font-size: 12px;\n font-weight: 400;\n line-height: 20px;\n}\n.uni-body {\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n}\n.uni-caption {\n font-size: 12px;\n font-weight: 400;\n line-height: 20px;\n}\n.uni-btn {\n margin: 5px;\n color: #393939;\n border: 1px solid #ccc;\n font-size: 16px;\n font-weight: 200;\n background-color: #F9F9F9;\n overflow: visible;\n}\n.uni-btn::after {\n border: none;\n}\n.uni-btn:not([type]), .uni-btn[type=default] {\n color: #999;\n}\n.uni-btn:not([type])[loading], .uni-btn[type=default][loading] {\n background: none;\n}\n.uni-btn:not([type])[loading]::before, .uni-btn[type=default][loading]::before {\n margin-right: 5px;\n}\n.uni-btn:not([type])[disabled], .uni-btn[type=default][disabled] {\n color: #d6d6d6;\n}\n.uni-btn:not([type])[disabled], .uni-btn:not([type])[disabled][loading], .uni-btn:not([type])[disabled]:active, .uni-btn[type=default][disabled], .uni-btn[type=default][disabled][loading], .uni-btn[type=default][disabled]:active {\n color: #d6d6d6;\n background-color: #fafafa;\n border-color: #f0f0f0;\n}\n.uni-btn:not([type])[plain], .uni-btn[type=default][plain] {\n color: #999;\n background: none;\n border-color: #F0F0F0;\n}\n.uni-btn:not([type])[plain]:not([hover-class]):active, .uni-btn[type=default][plain]:not([hover-class]):active {\n background: none;\n color: #cccccc;\n border-color: #e6e6e6;\n outline: none;\n}\n.uni-btn:not([type])[plain][disabled], .uni-btn:not([type])[plain][disabled][loading], .uni-btn:not([type])[plain][disabled]:active, .uni-btn[type=default][plain][disabled], .uni-btn[type=default][plain][disabled][loading], .uni-btn[type=default][plain][disabled]:active {\n background: none;\n color: #d6d6d6;\n border-color: #f0f0f0;\n}\n.uni-btn:not([hover-class]):active {\n color: gray;\n}\n.uni-btn[size=mini] {\n font-size: 16px;\n font-weight: 200;\n border-radius: 8px;\n}\n.uni-btn.uni-btn-small {\n font-size: 14px;\n}\n.uni-btn.uni-btn-mini {\n font-size: 12px;\n}\n.uni-btn.uni-btn-radius {\n border-radius: 999px;\n}\n.uni-btn[type=primary] {\n color: #fff;\n background-color: #2979ff;\n border-color: #266feb;\n}\n.uni-btn[type=primary]:not([hover-class]):active {\n background: #256de6;\n border-color: #2161cc;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=primary][loading] {\n color: #fff;\n background-color: #2979ff;\n border-color: #266feb;\n}\n.uni-btn[type=primary][loading]:not([hover-class]):active {\n background: #256de6;\n border-color: #2161cc;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=primary][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=primary][disabled], .uni-btn[type=primary][disabled][loading], .uni-btn[type=primary][disabled]:not([hover-class]):active {\n color: #fff;\n border-color: #80adfa;\n background-color: #94bcff;\n}\n.uni-btn[type=primary][plain] {\n color: #2979ff;\n background-color: #eaf2ff;\n border-color: #bfd7ff;\n}\n.uni-btn[type=primary][plain]:not([hover-class]):active {\n background: #d4e4ff;\n color: #2979ff;\n outline: none;\n border-color: #94bcff;\n}\n.uni-btn[type=primary][plain][loading] {\n color: #2979ff;\n background-color: #eaf2ff;\n border-color: #bfd7ff;\n}\n.uni-btn[type=primary][plain][loading]:not([hover-class]):active {\n background: #d4e4ff;\n color: #2979ff;\n outline: none;\n border-color: #94bcff;\n}\n.uni-btn[type=primary][plain][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=primary][plain][disabled], .uni-btn[type=primary][plain][disabled]:active {\n color: #7fafff;\n background-color: #eaf2ff;\n border-color: #d4e4ff;\n}\n.uni-btn[type=success] {\n color: #fff;\n background-color: #18bc37;\n border-color: #16ad33;\n}\n.uni-btn[type=success]:not([hover-class]):active {\n background: #16a932;\n border-color: #13962c;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=success][loading] {\n color: #fff;\n background-color: #18bc37;\n border-color: #16ad33;\n}\n.uni-btn[type=success][loading]:not([hover-class]):active {\n background: #16a932;\n border-color: #13962c;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=success][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=success][disabled], .uni-btn[type=success][disabled][loading], .uni-btn[type=success][disabled]:not([hover-class]):active {\n color: #fff;\n border-color: #89c794;\n background-color: #8cde9b;\n}\n.uni-btn[type=success][plain] {\n color: #18bc37;\n background-color: #e8f8eb;\n border-color: #baebc3;\n}\n.uni-btn[type=success][plain]:not([hover-class]):active {\n background: #d1f2d7;\n color: #18bc37;\n outline: none;\n border-color: #8cde9b;\n}\n.uni-btn[type=success][plain][loading] {\n color: #18bc37;\n background-color: #e8f8eb;\n border-color: #baebc3;\n}\n.uni-btn[type=success][plain][loading]:not([hover-class]):active {\n background: #d1f2d7;\n color: #18bc37;\n outline: none;\n border-color: #8cde9b;\n}\n.uni-btn[type=success][plain][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=success][plain][disabled], .uni-btn[type=success][plain][disabled]:active {\n color: #74d787;\n background-color: #e8f8eb;\n border-color: #d1f2d7;\n}\n.uni-btn[type=error] {\n color: #fff;\n background-color: #e43d33;\n border-color: #d2382f;\n}\n.uni-btn[type=error]:not([hover-class]):active {\n background: #cd372e;\n border-color: #b63129;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=error][loading] {\n color: #fff;\n background-color: #e43d33;\n border-color: #d2382f;\n}\n.uni-btn[type=error][loading]:not([hover-class]):active {\n background: #cd372e;\n border-color: #b63129;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=error][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=error][disabled], .uni-btn[type=error][disabled][loading], .uni-btn[type=error][disabled]:not([hover-class]):active {\n color: #fff;\n border-color: #e4928d;\n background-color: #f29e99;\n}\n.uni-btn[type=error][plain] {\n color: #e43d33;\n background-color: #fceceb;\n border-color: #f7c5c2;\n}\n.uni-btn[type=error][plain]:not([hover-class]):active {\n background: #fad8d6;\n color: #e43d33;\n outline: none;\n border-color: #f29e99;\n}\n.uni-btn[type=error][plain][loading] {\n color: #e43d33;\n background-color: #fceceb;\n border-color: #f7c5c2;\n}\n.uni-btn[type=error][plain][loading]:not([hover-class]):active {\n background: #fad8d6;\n color: #e43d33;\n outline: none;\n border-color: #f29e99;\n}\n.uni-btn[type=error][plain][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=error][plain][disabled], .uni-btn[type=error][plain][disabled]:active {\n color: #ef8b85;\n background-color: #fceceb;\n border-color: #fad8d6;\n}\n.uni-btn[type=warning] {\n color: #fff;\n background-color: #f3a73f;\n border-color: #e09a3a;\n}\n.uni-btn[type=warning]:not([hover-class]):active {\n background: #db9639;\n border-color: #c28632;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=warning][loading] {\n color: #fff;\n background-color: #f3a73f;\n border-color: #e09a3a;\n}\n.uni-btn[type=warning][loading]:not([hover-class]):active {\n background: #db9639;\n border-color: #c28632;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=warning][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=warning][disabled], .uni-btn[type=warning][disabled][loading], .uni-btn[type=warning][disabled]:not([hover-class]):active {\n color: #fff;\n border-color: #f8c887;\n background-color: #f9d39f;\n}\n.uni-btn[type=warning][plain] {\n color: #f3a73f;\n background-color: #fef6ec;\n border-color: #fbe5c5;\n}\n.uni-btn[type=warning][plain]:not([hover-class]):active {\n background: #fdedd9;\n color: #f3a73f;\n outline: none;\n border-color: #f9d39f;\n}\n.uni-btn[type=warning][plain][loading] {\n color: #f3a73f;\n background-color: #fef6ec;\n border-color: #fbe5c5;\n}\n.uni-btn[type=warning][plain][loading]:not([hover-class]):active {\n background: #fdedd9;\n color: #f3a73f;\n outline: none;\n border-color: #f9d39f;\n}\n.uni-btn[type=warning][plain][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=warning][plain][disabled], .uni-btn[type=warning][plain][disabled]:active {\n color: #f8ca8c;\n background-color: #fef6ec;\n border-color: #fdedd9;\n}\n.uni-btn[type=info] {\n color: #fff;\n background-color: #8f939c;\n border-color: #848790;\n}\n.uni-btn[type=info]:not([hover-class]):active {\n background: #81848c;\n border-color: #72767d;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=info][loading] {\n color: #fff;\n background-color: #8f939c;\n border-color: #848790;\n}\n.uni-btn[type=info][loading]:not([hover-class]):active {\n background: #81848c;\n border-color: #72767d;\n color: #fff;\n outline: none;\n}\n.uni-btn[type=info][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=info][disabled], .uni-btn[type=info][disabled][loading], .uni-btn[type=info][disabled]:not([hover-class]):active {\n color: #fff;\n border-color: #babcc1;\n background-color: #c7c9ce;\n}\n.uni-btn[type=info][plain] {\n color: #8f939c;\n background-color: #f4f4f5;\n border-color: #dddfe1;\n}\n.uni-btn[type=info][plain]:not([hover-class]):active {\n background: #e9e9eb;\n color: #8f939c;\n outline: none;\n border-color: #c7c9ce;\n}\n.uni-btn[type=info][plain][loading] {\n color: #8f939c;\n background-color: #f4f4f5;\n border-color: #dddfe1;\n}\n.uni-btn[type=info][plain][loading]:not([hover-class]):active {\n background: #e9e9eb;\n color: #8f939c;\n outline: none;\n border-color: #c7c9ce;\n}\n.uni-btn[type=info][plain][loading]::before {\n margin-right: 5px;\n}\n.uni-btn[type=info][plain][disabled], .uni-btn[type=info][plain][disabled]:active {\n color: #bcbec4;\n background-color: #f4f4f5;\n border-color: #e9e9eb;\n}\nbody {\n background-color: #fff;\n}\n", ""]);
  25136. // Exports
  25137. module.exports = exports;
  25138. /***/ }),
  25139. /* 70 */
  25140. /*!*****************************************************************!*\
  25141. !*** D:/Work2/Orienteering/TrackOffical/static/customicons.ttf ***!
  25142. \*****************************************************************/
  25143. /*! no static exports found */
  25144. /***/ (function(module, exports) {
  25145. module.exports = "/static/customicons.ttf";
  25146. /***/ }),
  25147. /* 71 */
  25148. /*!******************************************************************!*\
  25149. !*** D:/Work2/Orienteering/TrackOffical/utils/map/sub/config.js ***!
  25150. \******************************************************************/
  25151. /*! no static exports found */
  25152. /***/ (function(module, exports, __webpack_require__) {
  25153. "use strict";
  25154. Object.defineProperty(exports, "__esModule", {
  25155. value: true
  25156. });
  25157. exports.default = void 0;
  25158. var _default = {
  25159. // 全局样式
  25160. gStyle: {
  25161. // 玩家定位标记点
  25162. marker: {
  25163. default: {
  25164. radius: 8,
  25165. // 圆的半径 px
  25166. stroke: true,
  25167. // 是否描边
  25168. color: 'blue',
  25169. // 描边颜色
  25170. weight: 3,
  25171. // 描边宽度 px
  25172. opacity: 1.0,
  25173. // 描边不透明度
  25174. fill: true,
  25175. // 是否填充
  25176. fillColor: 'blue',
  25177. // 填充颜色
  25178. fillOpacity: 1.0 // 填充不透明度
  25179. },
  25180. focus: {
  25181. radius: 8,
  25182. stroke: true,
  25183. // 是否描边
  25184. color: 'red',
  25185. // 描边颜色
  25186. weight: 3,
  25187. // 描边宽度 px
  25188. opacity: 1.0,
  25189. // 描边不透明度
  25190. fill: true,
  25191. // 是否填充
  25192. fillColor: 'red',
  25193. // 填充颜色
  25194. fillOpacity: 1.0 // 填充不透明度
  25195. },
  25196. tooltip: {
  25197. permanent: true,
  25198. offset: [0, -10],
  25199. direction: 'top',
  25200. interactive: true
  25201. }
  25202. },
  25203. // 玩家运动轨迹
  25204. trail: {
  25205. default: {
  25206. smoothFactor: 0.5,
  25207. // 值越大线条越平滑,值越小线条越精确
  25208. stroke: true,
  25209. // 是否描边
  25210. color: 'blue',
  25211. // 描边颜色
  25212. weight: 3,
  25213. // 描边宽度 px
  25214. opacity: 1.0,
  25215. // 描边不透明度
  25216. fill: false,
  25217. // 是否填充
  25218. fillColor: 'blue',
  25219. // 填充颜色
  25220. fillOpacity: 1.0 // 填充不透明度
  25221. },
  25222. focus: {
  25223. smoothFactor: 0.5,
  25224. // 值越大线条越平滑,值越小线条越精确
  25225. stroke: true,
  25226. // 是否描边
  25227. color: 'red',
  25228. // 描边颜色
  25229. weight: 3,
  25230. // 描边宽度 px
  25231. opacity: 1.0,
  25232. // 描边不透明度
  25233. fill: false,
  25234. // 是否填充
  25235. fillColor: 'red',
  25236. // 填充颜色
  25237. fillOpacity: 1.0 // 填充不透明度
  25238. }
  25239. },
  25240. // 检查点
  25241. checkPoint: {
  25242. default: {
  25243. radius: 15,
  25244. color: '#ff00ff',
  25245. weight: 2,
  25246. fill: false,
  25247. interactive: true
  25248. },
  25249. focus: {
  25250. radius: 15,
  25251. color: '#ff00ff',
  25252. weight: 2,
  25253. fill: false,
  25254. interactive: true
  25255. },
  25256. tooltip: {
  25257. permanent: true,
  25258. offset: [0, -15],
  25259. direction: 'top',
  25260. interactive: true
  25261. }
  25262. },
  25263. // 检查点组成的路径
  25264. checkPointPath: {
  25265. default: {
  25266. dashArray: '8 12',
  25267. // dashOffset: '1',
  25268. stroke: true,
  25269. // 是否描边
  25270. color: '#ff00ff',
  25271. // 描边颜色
  25272. weight: 3,
  25273. // 描边宽度 px
  25274. opacity: 0.6,
  25275. // 描边不透明度
  25276. fill: false,
  25277. // 是否填充
  25278. interactive: true
  25279. },
  25280. focus: {
  25281. stroke: true,
  25282. // 是否描边
  25283. color: '#ff00ff',
  25284. // 描边颜色
  25285. weight: 3,
  25286. // 描边宽度 px
  25287. opacity: 1.0,
  25288. // 描边不透明度
  25289. fill: false,
  25290. // 是否填充
  25291. interactive: true
  25292. }
  25293. }
  25294. }
  25295. };
  25296. exports.default = _default;
  25297. /***/ }),
  25298. /* 72 */
  25299. /*!*****************************************************************!*\
  25300. !*** D:/Work2/Orienteering/TrackOffical/utils/map/sub/patch.js ***!
  25301. \*****************************************************************/
  25302. /*! no static exports found */
  25303. /***/ (function(module, exports, __webpack_require__) {
  25304. "use strict";
  25305. Object.defineProperty(exports, "__esModule", {
  25306. value: true
  25307. });
  25308. exports.default = void 0;
  25309. // leaflet 补丁
  25310. // author: wzx
  25311. // version: 1.0
  25312. var _default = {
  25313. run: function run() {
  25314. this.patchIconPath();
  25315. this.patchTileWhiteLine();
  25316. },
  25317. // 解决leaflet默认图标的路径错误问题
  25318. patchIconPath: function patchIconPath() {
  25319. delete L.Icon.Default.prototype._getIconUrl;
  25320. L.Icon.Default.mergeOptions({
  25321. iconRetinaUrl: __webpack_require__(/*! leaflet/dist/images/marker-icon-2x.png */ 28),
  25322. iconUrl: __webpack_require__(/*! leaflet/dist/images/marker-icon.png */ 19),
  25323. shadowUrl: __webpack_require__(/*! leaflet/dist/images/marker-shadow.png */ 29)
  25324. });
  25325. },
  25326. // 解决leaflet瓦片显示有白线问题
  25327. patchTileWhiteLine: function patchTileWhiteLine() {
  25328. (function () {
  25329. var originalInitTile = L.GridLayer.prototype._initTile;
  25330. L.GridLayer.include({
  25331. _initTile: function _initTile(tile) {
  25332. originalInitTile.call(this, tile);
  25333. var tileSize = this.getTileSize();
  25334. tile.style.width = tileSize.x + 1 + 'px';
  25335. tile.style.height = tileSize.y + 1 + 'px';
  25336. }
  25337. });
  25338. })();
  25339. }
  25340. };
  25341. exports.default = _default;
  25342. /***/ }),
  25343. /* 73 */
  25344. /*!******************************************************************!*\
  25345. !*** D:/Work2/Orienteering/TrackOffical/utils/map/sub/player.js ***!
  25346. \******************************************************************/
  25347. /*! no static exports found */
  25348. /***/ (function(module, exports, __webpack_require__) {
  25349. "use strict";
  25350. /* WEBPACK VAR INJECTION */(function(__f__) {
  25351. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 8);
  25352. Object.defineProperty(exports, "__esModule", {
  25353. value: true
  25354. });
  25355. exports.default = void 0;
  25356. var _config = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/config */ 71));
  25357. var _global = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/global */ 74));
  25358. // import L from 'leaflet'
  25359. var interval_creatCircleMarker = null;
  25360. var interval_showTrail = null;
  25361. var _default = {
  25362. init: function init() {},
  25363. // 即将开始地图缩放时触发本方法
  25364. onZoomStart: function onZoomStart(e) {},
  25365. // 地图发生缩放时触发本方法
  25366. onZoom: function onZoom(e) {},
  25367. // 地图缩放结束时触发本方法
  25368. onZoomEnd: function onZoomEnd(e) {},
  25369. drawAllPlayers: function drawAllPlayers() {
  25370. for (var i = 0; i < _global.default.players.length; i++) {
  25371. this.drawOnePlayer(_global.default.players[i].id);
  25372. // this.drawOnePlayer2(global.players[i].id)
  25373. }
  25374. },
  25375. drawOnePlayer2: function drawOnePlayer2(playerId) {
  25376. var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  25377. var that = this;
  25378. var player = _global.default.getPlayerById(playerId);
  25379. var player_position = _global.default.getPlayerPositionById(playerId);
  25380. // console.log(player, player_position)
  25381. if (player == null || player_position == null) {
  25382. __f__("warn", '[drawOnePlayer2] 关键数据为空', player, player_position, " at utils/map/sub/player.js:32");
  25383. return;
  25384. }
  25385. // 在地图上创建 marker 并存储用户信息
  25386. var playerIcon = L.icon({
  25387. iconUrl: 'static/image/marker-icon.png',
  25388. iconSize: [20, 32.8],
  25389. iconAnchor: [10, 30]
  25390. });
  25391. var marker = L.marker([player_position.lat, player_position.lng], {
  25392. icon: playerIcon
  25393. }).addTo(_global.default.map)
  25394. // .bindPopup("Hello, I'm a Marker!<br><img src='my-image.png' width='100'>").openPopup();
  25395. .bindTooltip("".concat(player.nickName, " ").concat(player.phone), {
  25396. permanent: true,
  25397. offset: [0, -30],
  25398. direction: 'top',
  25399. interactive: true
  25400. });
  25401. marker.type = 'marker';
  25402. marker.playerId = player.id; // 存储用户信息
  25403. marker.animate = animate;
  25404. marker.on('click', function (e) {
  25405. var playerId = e.target.playerId; // 获取点击的 marker 的用户信息
  25406. __f__("log", "Selected player ID: " + playerId, " at utils/map/sub/player.js:58");
  25407. that.handleFocusPlayer(playerId);
  25408. });
  25409. var tooltip = marker.getTooltip();
  25410. tooltip.playerId = player.id; // 存储用户信息
  25411. tooltip.animate = animate;
  25412. tooltip.on('click', function (e) {
  25413. // console.log("[Marker.Tooltip]", e)
  25414. var playerId = e.target.playerId; // 获取点击的 marker 的用户信息
  25415. __f__("log", "[Marker.Tooltip] Selected player ID: " + playerId, " at utils/map/sub/player.js:68");
  25416. that.handleFocusPlayer(playerId);
  25417. });
  25418. player.marker = marker;
  25419. },
  25420. // 创建动画效果函数,用于实现circleMarker的大小和透明度随时间变化
  25421. animateCircle: function animateCircle(circle, minRadius, maxRadius) {
  25422. var step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
  25423. var radius = circle.getRadius();
  25424. var opacity = circle.options.fillOpacity;
  25425. var zoomType = 'zoomIn'; // zoomIn: 放大 zoomOut: 缩小
  25426. interval_creatCircleMarker = setInterval(function () {
  25427. if (!circle.animate) {
  25428. clearInterval(interval_creatCircleMarker);
  25429. return;
  25430. }
  25431. // 改变圆形半径和透明度
  25432. if (zoomType == 'zoomIn') {
  25433. radius = radius + step;
  25434. // opacity = opacity - 0.1
  25435. } else if (zoomType == 'zoomOut') {
  25436. radius = radius - step;
  25437. // opacity = opacity - 0.1
  25438. }
  25439. circle.setRadius(radius);
  25440. circle.setStyle({
  25441. fillOpacity: opacity
  25442. });
  25443. if (radius >= maxRadius) {
  25444. zoomType = 'zoomOut';
  25445. } else if (radius <= minRadius) {
  25446. zoomType = 'zoomIn';
  25447. }
  25448. }, 50);
  25449. },
  25450. drawOnePlayer: function drawOnePlayer(playerId) {
  25451. var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  25452. var that = this;
  25453. var player = _global.default.getPlayerById(playerId);
  25454. var player_position = _global.default.getPlayerPositionById(playerId);
  25455. // console.log(player, player_position)
  25456. if (player == null || player_position == null) {
  25457. __f__("warn", '[drawOnePlayer] 关键数据为空', player, player_position, " at utils/map/sub/player.js:114");
  25458. return;
  25459. }
  25460. var marker = L.circleMarker([player_position.lat, player_position.lng], _config.default.gStyle.marker.default).addTo(_global.default.map)
  25461. // .bindPopup("Hello, I'm a Marker!<br><img src='my-image.png' width='100'>").openPopup()
  25462. .bindTooltip("".concat(player.nickName, " ").concat(player.phone), _config.default.gStyle.marker.tooltip);
  25463. marker.type = 'circleMarker';
  25464. marker.playerId = player.id; // 存储用户信息
  25465. marker.animate = animate;
  25466. marker.on('click', function (e) {
  25467. // console.log("[Marker]", e)
  25468. var playerId = e.target.playerId; // 获取点击的 marker 的用户信息
  25469. __f__("log", "[Marker] Selected player ID: " + playerId, " at utils/map/sub/player.js:129");
  25470. that.handleFocusPlayer(playerId);
  25471. });
  25472. var tooltip = marker.getTooltip();
  25473. tooltip.playerId = player.id; // 存储用户信息
  25474. tooltip.animate = animate;
  25475. tooltip.on('click', function (e) {
  25476. // console.log("[Marker.Tooltip]", e)
  25477. var playerId = e.target.playerId; // 获取点击的 marker 的用户信息
  25478. __f__("log", "[Marker.Tooltip] Selected player ID: " + playerId, " at utils/map/sub/player.js:139");
  25479. that.handleFocusPlayer(playerId);
  25480. });
  25481. if (animate) {
  25482. this.animateCircle(marker, 3, 9, 0.5);
  25483. }
  25484. player.marker = marker;
  25485. },
  25486. handleFocusPlayer: function handleFocusPlayer(playerId) {
  25487. __f__("log", "[handleFocusPlayer] 当前选中玩家ID: " + playerId, " at utils/map/sub/player.js:150");
  25488. if (_global.default.focusPlayerId > 0) {
  25489. // 先把之前选中的目标恢复成默认状态
  25490. var unfocusPlayer = _global.default.getPlayerById(_global.default.focusPlayerId);
  25491. if (unfocusPlayer.marker != null && unfocusPlayer.marker.type == 'circleMarker') {
  25492. unfocusPlayer.marker.setStyle(_config.default.gStyle.marker.default);
  25493. }
  25494. if (unfocusPlayer.trail != null) {
  25495. unfocusPlayer.trail.setStyle(_config.default.gStyle.trail.default);
  25496. }
  25497. }
  25498. _global.default.focusPlayerId = playerId;
  25499. var focusPlayer = _global.default.getPlayerById(_global.default.focusPlayerId);
  25500. if (focusPlayer.marker != null && focusPlayer.marker.type == 'circleMarker') {
  25501. focusPlayer.marker.setStyle(_config.default.gStyle.marker.focus);
  25502. }
  25503. if (focusPlayer.trail != null) {
  25504. focusPlayer.trail.setStyle(_config.default.gStyle.trail.focus);
  25505. }
  25506. },
  25507. drawAllTrails: function drawAllTrails(duration) {
  25508. for (var i = 0; i < _global.default.players.length; i++) {
  25509. this.drawOneTrail(_global.default.players[i].id, duration);
  25510. }
  25511. },
  25512. // 显示运动轨迹 duration:毫秒
  25513. drawOneTrail: function drawOneTrail(playerId, duration) {
  25514. var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  25515. var player = _global.default.getPlayerById(playerId);
  25516. var player_position = _global.default.getPlayerPositionById(playerId);
  25517. var player_trail = _global.default.getPlayerTrailById(playerId);
  25518. // console.log(player, player_position, player_trail)
  25519. if (player == null || player_position == null) {
  25520. __f__("warn", '[drawOneTrail] 关键数据为空', player, player_position, " at utils/map/sub/player.js:185");
  25521. return;
  25522. }
  25523. if (player_trail == null) {
  25524. // console.warn('[drawOneTrail] 轨迹数据为空', player_trail)
  25525. // return
  25526. player_trail = {
  25527. id: playerId,
  25528. points: [[player_position.lat, player_position.lng, new Date()]],
  25529. pointsT: 0
  25530. };
  25531. _global.default.players_trail.push(player_trail);
  25532. }
  25533. if (player.marker != null) {
  25534. player.marker.animate = animate;
  25535. }
  25536. var trail = L.polyline(player_trail.points, _config.default.gStyle.trail.default).addTo(_global.default.map);
  25537. var lastpos = [player_position.lat, player_position.lng, new Date()];
  25538. var point = null;
  25539. var that = this;
  25540. interval_showTrail = setInterval(function () {
  25541. trail.setLatLngs(player_trail.points);
  25542. point = that.getCurPos(lastpos, duration, player_trail);
  25543. lastpos = point;
  25544. trail.addLatLng(point.slice(0, 2));
  25545. if (player.marker != null) {
  25546. player.marker.setLatLng(point.slice(0, 2)); // 更新玩家的标记位置
  25547. }
  25548. // global.map.setView(point.slice(0, 2), 18); //地图中心跟踪最新位置
  25549. }, 100);
  25550. player.trail = trail;
  25551. },
  25552. // duration: 轨迹保存时间 为0表示保存全部轨迹
  25553. getCurPos: function getCurPos(lastpos, duration, player_trail) {
  25554. // console.log(lastpos, pointsT)
  25555. var now = +new Date();
  25556. if (duration > 0) {
  25557. player_trail.points = player_trail.points.filter(function (point) {
  25558. return now - point[2] < duration;
  25559. });
  25560. }
  25561. var step = 0.00001;
  25562. var t = 10;
  25563. var point = null;
  25564. if (player_trail.pointsT < 20 * t) point = [lastpos[0] + Math.random() * step, lastpos[1] + Math.random() * step, now];else if (player_trail.pointsT >= 20 * t && player_trail.pointsT < 40 * t) point = [lastpos[0] - Math.random() * step, lastpos[1] + Math.random() * step, now];else if (player_trail.pointsT >= 40 * t && player_trail.pointsT < 60 * t) point = [lastpos[0] - Math.random() * step, lastpos[1] - Math.random() * step, now];else if (player_trail.pointsT >= 60 * t && player_trail.pointsT < 80 * t) point = [lastpos[0] + Math.random() * step, lastpos[1] - Math.random() * step, now];
  25565. // point = [point[0] - Math.random() * 0.00001, point[1] - Math.random() * 0.00001, now];
  25566. player_trail.pointsT++;
  25567. if (player_trail.pointsT >= 80 * t) player_trail.pointsT = 0;
  25568. player_trail.points.push(point);
  25569. return point;
  25570. },
  25571. free: function free() {
  25572. clearInterval(interval_creatCircleMarker);
  25573. clearInterval(interval_showTrail);
  25574. }
  25575. };
  25576. exports.default = _default;
  25577. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 7)["default"]))
  25578. /***/ }),
  25579. /* 74 */
  25580. /*!******************************************************************!*\
  25581. !*** D:/Work2/Orienteering/TrackOffical/utils/map/sub/global.js ***!
  25582. \******************************************************************/
  25583. /*! no static exports found */
  25584. /***/ (function(module, exports, __webpack_require__) {
  25585. "use strict";
  25586. Object.defineProperty(exports, "__esModule", {
  25587. value: true
  25588. });
  25589. exports.default = void 0;
  25590. var _default = {
  25591. map: null,
  25592. map_layer: null,
  25593. players: [],
  25594. // 玩家信息
  25595. players_position: [],
  25596. // 玩家当前位置信息
  25597. players_trail: [],
  25598. // 玩家轨迹信息
  25599. focusPlayerId: 0,
  25600. // 当前选中的玩家ID
  25601. checkPoints: [],
  25602. // 检查点列表
  25603. setPlayers: function setPlayers(data) {
  25604. this.players = data; // 指针复制,是同一个对象
  25605. },
  25606. setPlayersPosition: function setPlayersPosition(data) {
  25607. this.players_position = data; // 指针复制,是同一个对象
  25608. },
  25609. setPlayersTrail: function setPlayersTrail(data) {
  25610. this.players_trail = data; // 指针复制,是同一个对象
  25611. },
  25612. setCheckPoints: function setCheckPoints(data) {
  25613. this.checkPoints = data; // 指针复制,是同一个对象
  25614. },
  25615. getPlayerById: function getPlayerById(playerId) {
  25616. if (!(playerId > 0)) return;
  25617. var player = null;
  25618. if (this.players != null && this.players.length > 0) {
  25619. player = this.players.find(function (o) {
  25620. return o.id === playerId;
  25621. });
  25622. }
  25623. // console.log("[getPlayerById]", playerId, player)
  25624. return player;
  25625. },
  25626. getPlayerPositionById: function getPlayerPositionById(playerId) {
  25627. if (!(playerId > 0)) return;
  25628. var player_position = null;
  25629. if (this.players_position != null && this.players_position.length > 0) {
  25630. player_position = this.players_position.find(function (o) {
  25631. return o.id === playerId;
  25632. });
  25633. }
  25634. // console.log("[getPlayerPositionById]", playerId, player_position)
  25635. return player_position;
  25636. },
  25637. getPlayerTrailById: function getPlayerTrailById(playerId) {
  25638. if (!(playerId > 0)) return;
  25639. var player_trail = null;
  25640. if (this.players_trail != null && this.players_trail.length > 0) {
  25641. player_trail = this.players_trail.find(function (o) {
  25642. return o.id === playerId;
  25643. });
  25644. }
  25645. // console.log("[getPlayerTrailById]", playerId, player_trail)
  25646. return player_trail;
  25647. },
  25648. getCheckPointById: function getCheckPointById(cpId) {
  25649. if (!(cpId > 0)) return;
  25650. var checkPoint = null;
  25651. if (this.checkPoints != null && this.checkPoints.length > 0) {
  25652. checkPoint = this.checkPoints.find(function (o) {
  25653. return o.cp_id === cpId;
  25654. });
  25655. }
  25656. // console.log("[getCheckPointById]", cpId, checkPoint)
  25657. return checkPoint;
  25658. }
  25659. };
  25660. exports.default = _default;
  25661. /***/ }),
  25662. /* 75 */
  25663. /*!**********************************************************************!*\
  25664. !*** D:/Work2/Orienteering/TrackOffical/utils/map/sub/checkPoint.js ***!
  25665. \**********************************************************************/
  25666. /*! no static exports found */
  25667. /***/ (function(module, exports, __webpack_require__) {
  25668. "use strict";
  25669. /* WEBPACK VAR INJECTION */(function(__f__) {
  25670. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 8);
  25671. Object.defineProperty(exports, "__esModule", {
  25672. value: true
  25673. });
  25674. exports.default = void 0;
  25675. var _config = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/config */ 71));
  25676. var _global = _interopRequireDefault(__webpack_require__(/*! @/utils/map/sub/global */ 74));
  25677. // import L from 'leaflet'
  25678. // import 'leaflet-clipper/dist/L.Clipper'
  25679. // import * as turf from '@turf/turf'
  25680. var _default = {
  25681. cpMarkLayerGroup: null,
  25682. // 检查点标记图层组
  25683. cpMemoLayerGroup: null,
  25684. // 检查点备注图层组
  25685. cpPathLayerGroup: null,
  25686. // 检查点路线图层组
  25687. init: function init() {
  25688. this.cpMarkLayerGroup = new L.layerGroup();
  25689. this.cpMemoLayerGroup = new L.layerGroup();
  25690. this.cpPathLayerGroup = new L.layerGroup();
  25691. },
  25692. // 即将开始地图缩放时触发本方法
  25693. onZoomStart: function onZoomStart(e) {
  25694. // this.cpMarkLayerGroup.remove()
  25695. this.cpMemoLayerGroup.remove();
  25696. this.cpPathLayerGroup.remove();
  25697. },
  25698. // 地图发生缩放时触发本方法
  25699. onZoom: function onZoom(e) {},
  25700. // 地图缩放结束时触发本方法
  25701. onZoomEnd: function onZoomEnd(e) {
  25702. this.drawPath();
  25703. // this.cpMarkLayerGroup.addTo(global.map)
  25704. this.cpMemoLayerGroup.addTo(_global.default.map);
  25705. this.cpPathLayerGroup.addTo(_global.default.map);
  25706. },
  25707. drawAllCheckPoints: function drawAllCheckPoints() {
  25708. if (this.cpMarkLayerGroup != null) this.cpMarkLayerGroup.clearLayers();
  25709. if (this.cpMemoLayerGroup != null) this.cpMemoLayerGroup.clearLayers();
  25710. for (var i = 0; i < _global.default.checkPoints.length; i++) {
  25711. this.drawOneCheckPoint(_global.default.checkPoints[i].cp_id);
  25712. }
  25713. },
  25714. drawOneCheckPoint: function drawOneCheckPoint(cpId) {
  25715. // var that = this
  25716. var checkPoint = _global.default.getCheckPointById(cpId);
  25717. if (checkPoint == null) {
  25718. __f__("warn", '[drawOneCheckPoint] 关键数据为空', checkPoint, " at utils/map/sub/checkPoint.js:48");
  25719. return;
  25720. }
  25721. // var marker = L.circle([checkPoint.latitude, checkPoint.longitude], config.gStyle.checkPoint.default)
  25722. var marker = L.circleMarker([checkPoint.latitude, checkPoint.longitude], _config.default.gStyle.checkPoint.default).addTo(this.cpMarkLayerGroup);
  25723. // .addTo(global.map)
  25724. // .bindPopup("Hello, I'm a Marker!<br><img src='my-image.png' width='100'>").openPopup();
  25725. // .bindTooltip(`检查点:${checkPoint.serial_num}`, config.gStyle.checkPoint.tooltip)
  25726. var myIcon = L.divIcon({
  25727. html: '<p style="text-align: center; font-size: 16px; font-weight: bold; color: #ff00ff;">CP:' + checkPoint.serial_num + '</p>',
  25728. className: '',
  25729. iconSize: [60, 20],
  25730. //宽高
  25731. iconAnchor: [30, -15] //文字标注相对位置
  25732. });
  25733. var markerMemo = L.marker([checkPoint.latitude, checkPoint.longitude], {
  25734. icon: myIcon
  25735. }).addTo(this.cpMemoLayerGroup);
  25736. this.cpMarkLayerGroup.addTo(_global.default.map);
  25737. this.cpMemoLayerGroup.addTo(_global.default.map);
  25738. checkPoint.marker = marker;
  25739. checkPoint.markerMemo = markerMemo;
  25740. },
  25741. drawPath: function drawPath() {
  25742. if (this.cpPathLayerGroup != null) {
  25743. this.cpPathLayerGroup.clearLayers();
  25744. }
  25745. var latlngs = [];
  25746. for (var i = 0; i < _global.default.checkPoints.length; i++) {
  25747. var cp = _global.default.checkPoints[i];
  25748. latlngs.push([cp.latitude, cp.longitude]);
  25749. }
  25750. var radius = _config.default.gStyle.checkPoint.default.radius;
  25751. var Lines = this.getIntersection(latlngs, radius); // 获取(圆与路线的)交叉点坐标
  25752. // var polyline = L.polyline(latlngs, config.gStyle.checkPointPath.default)
  25753. var polyline = L.polyline(Lines, _config.default.gStyle.checkPointPath.default).addTo(this.cpPathLayerGroup);
  25754. this.cpPathLayerGroup.addTo(_global.default.map);
  25755. },
  25756. // 获取(圆与路线的)交叉点坐标
  25757. getIntersection: function getIntersection(LatLngArry, radius) {
  25758. // var LatLngArry = [
  25759. // [36.672562, 117.127572],
  25760. // [36.67165, 117.129262],
  25761. // [36.671409, 117.126752]
  25762. // ]
  25763. var PointArry = [];
  25764. // var Circles = []
  25765. var radius = 20; // 圆的半径 px
  25766. var DistanceArry = [];
  25767. var Lines = [];
  25768. for (var i = 0; i < LatLngArry.length; i++) {
  25769. // 给定地理坐标,返回相应的像素坐标 (相对于原点像素)
  25770. var point = _global.default.map.latLngToLayerPoint(LatLngArry[i]);
  25771. PointArry.push(point);
  25772. // let circle = L.circle(LatLngArry[i], {
  25773. // radius: radius
  25774. // }).addTo(global.map);
  25775. // Circles.push(circle)
  25776. if (i > 0) {
  25777. // 计算相邻两个点之间的距离
  25778. var distance = L.point(PointArry[i]).distanceTo(L.point(PointArry[i - 1]));
  25779. DistanceArry.push(distance);
  25780. // 计算圆半径占比
  25781. var per = parseFloat(radius.toFixed(16) / distance.toFixed(16)).toFixed(16);
  25782. // console.log('per:', per, i)
  25783. // console.log('PointArry:', PointArry[i])
  25784. var offsetX = parseFloat((PointArry[i].x.toFixed(16) - PointArry[i - 1].x.toFixed(16)) * per).toFixed(16);
  25785. var offsetY = parseFloat((PointArry[i].y.toFixed(16) - PointArry[i - 1].y.toFixed(16)) * per).toFixed(16);
  25786. // console.log('offset:', offsetX, offsetY)
  25787. // 给定相对于原点像素的像素坐标, 返回相应的地理坐标(对于当前缩放级别)
  25788. var line = [_global.default.map.layerPointToLatLng([parseFloat(PointArry[i - 1].x) + parseFloat(offsetX), parseFloat(PointArry[i - 1].y) + parseFloat(offsetY)]), _global.default.map.layerPointToLatLng([parseFloat(PointArry[i].x) - parseFloat(offsetX), parseFloat(PointArry[i].y) - parseFloat(offsetY)])];
  25789. Lines.push(line);
  25790. }
  25791. }
  25792. // console.log('DistanceArry', DistanceArry)
  25793. // console.log('Lines', Lines)
  25794. // var polyline = L.polyline(Lines, config.gStyle.checkPointPath.default).addTo(global.map)
  25795. return Lines;
  25796. },
  25797. test: function test() {},
  25798. free: function free() {}
  25799. };
  25800. exports.default = _default;
  25801. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 7)["default"]))
  25802. /***/ }),
  25803. /* 76 */
  25804. /*!***************************************************************************************************!*\
  25805. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue ***!
  25806. \***************************************************************************************************/
  25807. /*! no static exports found */
  25808. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25809. "use strict";
  25810. __webpack_require__.r(__webpack_exports__);
  25811. /* harmony import */ var _uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=template&id=7c43d41b&scoped=true& */ 77);
  25812. /* harmony import */ var _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=script&lang=js& */ 84);
  25813. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25814. /* harmony import */ var _uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=style&index=0&id=7c43d41b&lang=scss&scoped=true& */ 86);
  25815. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  25816. var renderjs
  25817. /* normalize component */
  25818. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  25819. _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  25820. _uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
  25821. _uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  25822. false,
  25823. null,
  25824. "7c43d41b",
  25825. null,
  25826. false,
  25827. _uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"],
  25828. renderjs
  25829. )
  25830. component.options.__file = "uni_modules/uni-popup/components/uni-popup/uni-popup.vue"
  25831. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  25832. /***/ }),
  25833. /* 77 */
  25834. /*!**********************************************************************************************************************************************!*\
  25835. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=template&id=7c43d41b&scoped=true& ***!
  25836. \**********************************************************************************************************************************************/
  25837. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  25838. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25839. "use strict";
  25840. __webpack_require__.r(__webpack_exports__);
  25841. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-popup.vue?vue&type=template&id=7c43d41b&scoped=true& */ 78);
  25842. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  25843. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  25844. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  25845. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_template_id_7c43d41b_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  25846. /***/ }),
  25847. /* 78 */
  25848. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  25849. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=template&id=7c43d41b&scoped=true& ***!
  25850. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  25851. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  25852. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25853. "use strict";
  25854. __webpack_require__.r(__webpack_exports__);
  25855. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  25856. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  25857. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  25858. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  25859. var components
  25860. try {
  25861. components = {
  25862. uniTransition:
  25863. __webpack_require__(/*! @/uni_modules/uni-transition/components/uni-transition/uni-transition.vue */ 79)
  25864. .default,
  25865. }
  25866. } catch (e) {
  25867. if (
  25868. e.message.indexOf("Cannot find module") !== -1 &&
  25869. e.message.indexOf(".vue") !== -1
  25870. ) {
  25871. console.error(e.message)
  25872. console.error("1. 排查组件名称拼写是否正确")
  25873. console.error(
  25874. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  25875. )
  25876. console.error(
  25877. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  25878. )
  25879. } else {
  25880. throw e
  25881. }
  25882. }
  25883. var render = function () {
  25884. var _vm = this
  25885. var _h = _vm.$createElement
  25886. var _c = _vm._self._c || _h
  25887. return _vm._$g(0, "i")
  25888. ? _c(
  25889. "uni-view",
  25890. {
  25891. directives: [
  25892. {
  25893. name: "show",
  25894. rawName: "v-show",
  25895. value: _vm._$g(0, "v-show"),
  25896. expression: "_$g(0,'v-show')",
  25897. },
  25898. ],
  25899. staticClass: _vm._$g(0, "sc"),
  25900. class: _vm._$g(0, "c"),
  25901. attrs: { _i: 0 },
  25902. },
  25903. [
  25904. _c(
  25905. "uni-view",
  25906. {
  25907. attrs: { _i: 1 },
  25908. on: {
  25909. touchstart: function ($event) {
  25910. return _vm.$handleViewEvent($event)
  25911. },
  25912. },
  25913. },
  25914. [
  25915. _vm._$g(2, "i")
  25916. ? _c("uni-transition", {
  25917. key: "1",
  25918. attrs: { _i: 2 },
  25919. on: {
  25920. click: function ($event) {
  25921. return _vm.$handleViewEvent($event)
  25922. },
  25923. },
  25924. })
  25925. : _vm._e(),
  25926. _c(
  25927. "uni-transition",
  25928. {
  25929. key: "2",
  25930. attrs: { _i: 3 },
  25931. on: {
  25932. click: function ($event) {
  25933. return _vm.$handleViewEvent($event)
  25934. },
  25935. },
  25936. },
  25937. [
  25938. _c(
  25939. "uni-view",
  25940. {
  25941. staticClass: _vm._$g(4, "sc"),
  25942. class: _vm._$g(4, "c"),
  25943. style: _vm._$g(4, "s"),
  25944. attrs: { _i: 4 },
  25945. on: {
  25946. click: function ($event) {
  25947. return _vm.$handleViewEvent($event)
  25948. },
  25949. },
  25950. },
  25951. [_vm._t("default", null, { _i: 5 })],
  25952. 2
  25953. ),
  25954. ],
  25955. 1
  25956. ),
  25957. ],
  25958. 1
  25959. ),
  25960. ],
  25961. 1
  25962. )
  25963. : _vm._e()
  25964. }
  25965. var recyclableRender = false
  25966. var staticRenderFns = []
  25967. render._withStripped = true
  25968. /***/ }),
  25969. /* 79 */
  25970. /*!******************************************************************************************************************!*\
  25971. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-transition/components/uni-transition/uni-transition.vue ***!
  25972. \******************************************************************************************************************/
  25973. /*! no static exports found */
  25974. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  25975. "use strict";
  25976. __webpack_require__.r(__webpack_exports__);
  25977. /* harmony import */ var _uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-transition.vue?vue&type=template&id=6369f8c4&scoped=true& */ 80);
  25978. /* harmony import */ var _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-transition.vue?vue&type=script&lang=js& */ 82);
  25979. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  25980. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 33);
  25981. var renderjs
  25982. /* normalize component */
  25983. var component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
  25984. _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  25985. _uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
  25986. _uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  25987. false,
  25988. null,
  25989. "6369f8c4",
  25990. null,
  25991. false,
  25992. _uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"],
  25993. renderjs
  25994. )
  25995. component.options.__file = "uni_modules/uni-transition/components/uni-transition/uni-transition.vue"
  25996. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  25997. /***/ }),
  25998. /* 80 */
  25999. /*!*************************************************************************************************************************************************************!*\
  26000. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=template&id=6369f8c4&scoped=true& ***!
  26001. \*************************************************************************************************************************************************************/
  26002. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  26003. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  26004. "use strict";
  26005. __webpack_require__.r(__webpack_exports__);
  26006. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-transition.vue?vue&type=template&id=6369f8c4&scoped=true& */ 81);
  26007. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  26008. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  26009. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  26010. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_template_id_6369f8c4_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  26011. /***/ }),
  26012. /* 81 */
  26013. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  26014. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=template&id=6369f8c4&scoped=true& ***!
  26015. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  26016. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  26017. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  26018. "use strict";
  26019. __webpack_require__.r(__webpack_exports__);
  26020. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  26021. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  26022. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  26023. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  26024. var components
  26025. var render = function () {
  26026. var _vm = this
  26027. var _h = _vm.$createElement
  26028. var _c = _vm._self._c || _h
  26029. return _vm._$g(0, "i")
  26030. ? _c(
  26031. "uni-view",
  26032. {
  26033. directives: [
  26034. {
  26035. name: "show",
  26036. rawName: "v-show",
  26037. value: _vm._$g(0, "v-show"),
  26038. expression: "_$g(0,'v-show')",
  26039. },
  26040. ],
  26041. ref: "ani",
  26042. class: _vm._$g(0, "c"),
  26043. style: _vm._$g(0, "s"),
  26044. attrs: { animation: _vm._$g(0, "a-animation"), _i: 0 },
  26045. on: {
  26046. click: function ($event) {
  26047. return _vm.$handleViewEvent($event)
  26048. },
  26049. },
  26050. },
  26051. [_vm._t("default", null, { _i: 1 })],
  26052. 2
  26053. )
  26054. : _vm._e()
  26055. }
  26056. var recyclableRender = false
  26057. var staticRenderFns = []
  26058. render._withStripped = true
  26059. /***/ }),
  26060. /* 82 */
  26061. /*!*******************************************************************************************************************************************!*\
  26062. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=script&lang=js& ***!
  26063. \*******************************************************************************************************************************************/
  26064. /*! no static exports found */
  26065. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  26066. "use strict";
  26067. __webpack_require__.r(__webpack_exports__);
  26068. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-transition.vue?vue&type=script&lang=js& */ 83);
  26069. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  26070. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  26071. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  26072. /***/ }),
  26073. /* 83 */
  26074. /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  26075. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=script&lang=js& ***!
  26076. \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  26077. /*! no static exports found */
  26078. /***/ (function(module, exports, __webpack_require__) {
  26079. "use strict";
  26080. Object.defineProperty(exports, "__esModule", {
  26081. value: true
  26082. });
  26083. exports.default = void 0;
  26084. var _default = {
  26085. name: "uniTransition",
  26086. props: ["show", "modeClass", "duration", "styles", "customClass", "onceRender"],
  26087. data: function data() {
  26088. return {
  26089. wxsProps: {}
  26090. };
  26091. },
  26092. components: {}
  26093. };
  26094. exports.default = _default;
  26095. /***/ }),
  26096. /* 84 */
  26097. /*!****************************************************************************************************************************!*\
  26098. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=script&lang=js& ***!
  26099. \****************************************************************************************************************************/
  26100. /*! no static exports found */
  26101. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  26102. "use strict";
  26103. __webpack_require__.r(__webpack_exports__);
  26104. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-popup.vue?vue&type=script&lang=js& */ 85);
  26105. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
  26106. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  26107. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_script_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
  26108. /***/ }),
  26109. /* 85 */
  26110. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  26111. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=script&lang=js& ***!
  26112. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  26113. /*! no static exports found */
  26114. /***/ (function(module, exports, __webpack_require__) {
  26115. "use strict";
  26116. Object.defineProperty(exports, "__esModule", {
  26117. value: true
  26118. });
  26119. exports.default = void 0;
  26120. var _default = {
  26121. name: "uniPopup",
  26122. props: ["animation", "type", "isMaskClick", "maskClick", "backgroundColor", "safeArea", "maskBackgroundColor", "onceRender"],
  26123. data: function data() {
  26124. return {
  26125. wxsProps: {}
  26126. };
  26127. },
  26128. components: {}
  26129. };
  26130. exports.default = _default;
  26131. /***/ }),
  26132. /* 86 */
  26133. /*!*************************************************************************************************************************************************************!*\
  26134. !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=style&index=0&id=7c43d41b&lang=scss&scoped=true& ***!
  26135. \*************************************************************************************************************************************************************/
  26136. /*! no static exports found */
  26137. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  26138. "use strict";
  26139. __webpack_require__.r(__webpack_exports__);
  26140. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-popup.vue?vue&type=style&index=0&id=7c43d41b&lang=scss&scoped=true& */ 87);
  26141. /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  26142. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  26143. /* harmony default export */ __webpack_exports__["default"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_app_vue_style_loader_index_js_ref_8_oneOf_1_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_view_style_js_uni_popup_vue_vue_type_style_index_0_id_7c43d41b_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
  26144. /***/ }),
  26145. /* 87 */
  26146. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  26147. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=style&index=0&id=7c43d41b&lang=scss&scoped=true& ***!
  26148. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  26149. /*! no static exports found */
  26150. /***/ (function(module, exports, __webpack_require__) {
  26151. // style-loader: Adds some css to the DOM by adding a <style> tag
  26152. // load the styles
  26153. var content = __webpack_require__(/*! !../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./uni-popup.vue?vue&type=style&index=0&id=7c43d41b&lang=scss&scoped=true& */ 88);
  26154. if(content.__esModule) content = content.default;
  26155. if(typeof content === 'string') content = [[module.i, content, '']];
  26156. if(content.locals) module.exports = content.locals;
  26157. // add the styles to the DOM
  26158. var add = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js */ 20).default
  26159. var update = add("45b443c2", content, false, {"sourceMap":false,"shadowMode":false});
  26160. // Hot Module Replacement
  26161. if(false) {}
  26162. /***/ }),
  26163. /* 88 */
  26164. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  26165. !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=style&index=0&id=7c43d41b&lang=scss&scoped=true& ***!
  26166. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  26167. /*! no static exports found */
  26168. /***/ (function(module, exports, __webpack_require__) {
  26169. // Imports
  26170. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 15);
  26171. exports = ___CSS_LOADER_API_IMPORT___(false);
  26172. // Module
  26173. exports.push([module.i, "@charset \"UTF-8\";\n/* 水平间距 */\n/* 水平间距 */\n.uni-popup[data-v-7c43d41b] {\n position: fixed;\n z-index: 99;\n}\n.uni-popup.top[data-v-7c43d41b], .uni-popup.left[data-v-7c43d41b], .uni-popup.right[data-v-7c43d41b] {\n top: 0;\n}\n.uni-popup .uni-popup__wrapper[data-v-7c43d41b] {\n display: block;\n position: relative;\n /* iphonex 等安全区设置,底部安全区适配 */\n}\n.uni-popup .uni-popup__wrapper.left[data-v-7c43d41b], .uni-popup .uni-popup__wrapper.right[data-v-7c43d41b] {\n padding-top: 0;\n flex: 1;\n}\n.fixforpc-z-index[data-v-7c43d41b] {\n z-index: 999;\n}\n.fixforpc-top[data-v-7c43d41b] {\n top: 0;\n}\n", ""]);
  26174. // Exports
  26175. module.exports = exports;
  26176. /***/ })
  26177. /******/ ]);