{"version":3,"file":"polyfills.fa6a5aa37c77d43b.js","mappings":"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rf,EAAKqf,GAA8Brf,EAAKsf,IACpCtlB,EAAOqlB,IAEfnQ,EAAIlF,oBAAsBA,GAC1BkF,EAAIxF,iBAAmBA,GACvBwF,EAAIjF,WAAaA,GACjBiF,EAAI/E,qBAAuBA,EAC3B+E,EAAI9E,+BAAiCA,EACrC8E,EAAI7E,aAAeA,EACnB6E,EAAI5E,WAAaA,EACjB4E,EAAI3E,WAAaA,GACjB2E,EAAI1E,oBAAsBA,EAC1B0E,EAAIzE,iBAAmBA,GACvByE,EAAIxE,sBAAwBA,GAC5BwE,EAAIvE,kBAAoBjP,OAAOuC,eAC/BiR,EAAItE,eAAiBA,GACrBsE,EAAIhF,iBAAmB,WAAc,MAAQ,CACzCiM,cAAeA,GACfD,qBAAsBA,GACtBmI,WAAYA,EACZlS,UAAWA,GACXE,MAAOA,GACPH,OAAQA,EACRb,SAAUA,EACVC,UAAWA,EACXC,mBAAoBA,EACpBN,uBAAwBA,EACxBC,0BAA2BA,EAC1B,CACR,GAwZD,IA8PWU,EACHhM,EAtDJye,GAAatf,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAzM7F,CAChC,QACA,kBACA,eACA,qBACA,WACA,cACA,OACA,SACA,UACA,iBACA,SACA,mBACA,oBACA,iBACA,YACA,QACA,QACA,cACA,aACA,WACA,OACA,UACA,YACA,WACA,YACA,WACA,OACA,iBACA,UACA,QACA,QACA,QACA,UACA,WACA,oBACA,QACA,UACA,UACA,WACA,QACA,OACA,YACA,aACA,iBACA,qBACA,YACA,aACA,aACA,YACA,WACA,YACA,UACA,aACA,oBACA,QACA,OACA,UACA,gBACA,cACA,eACA,eACA,oBACA,uBACA,4BACA,mBACA,sBACA,yBACA,cACA,WACA,cACA,YACA,WACA,aACA,QACA,SACA,SACA,SACA,UACA,SACA,kBACA,cACA,OACA,OACA,UACA,SACA,UACA,aACA,eACA,cACA,YACA,aACA,WACA,mBACA,gBACA,UACA,UAyGgK,GAH9I,CAAC,uBAAwB,mBAAoB,8BAGyH,GAFvK,CAAC,eAAgB,sBAE6K,GAD5L,CAAC,WACoN,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MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,0BCjBAA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,MACRA,wBCZAA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OAERA,0BCnBAA,EAAQ,OACRA,0BCDAA,EAAQ,OACRA,0BCDAA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,OACRA,0BCdAA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,0BCPAA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,0BCJAA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,EAAQ,OACRA,0BC1BAA,EAAQ,OACRA,EAAQ,OACRA,0BCFAA,EAAQ,OACRA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CA,sBACA,GACA,sBAGA5F,iBACA,kCAA+E0F,EAAOA,MACtFA,OACAA,+BACAhlB,OAEAklB,iBACAA,MACA,EAGAC,mBACA,gBACAH,SACA,MACA,UACAvgB,cACAygB,UACAF,OACAvgB,aACAC,YACAwgB,kBACAA,mBACAA,MACA,CAAU,SACV,EAGA5M,oBACAuM,UAGA,QADAG,EADA5B,gDAEA4B,iBAGA,IAFA5B,gBAEA4B,aAEA,EAGAI,gBACA,sBACA,IAEAT,yBACA1pB,eACA,mBACA,IAEAmW,CACA,EACAiU,oBACA,IACA5gB,IADAugB,SAGA,SACAA,OAGAE,QACAh0B,YACAo0B,IACA5X,IACA6X,SACAC,SACAC,MAEAP,eACAzgB,WACAygB,OAEA,sBACMA,CACN,EACAH,WACAW,0BAGAlB,oBACAh2B,eACAA,UACAA,cACA,EAAK,WAKL,QAJA02B,OACAS,OACAX,OAEAA,cAEA,oCAMAP,kBACA,gBACA,YANAS,YACAT,KAMA,EAAKmB,4BAGLlB,IACA,EACA,+BC9IA,MAAkBzC,EAAQ,MAC1B4D,EAAc5D,iBACd6D,EAAe7D,EAAQ,OACvB0B,EAAe1B,EAAQ,OACvBqC,EAAiBrC,EAAQ,OACzBsC,EAAYtC,EAAQ,OACpB8D,EAAwB9D,EAAQ,OAChC+D,EAAW/D,EAAQ,OACnB4C,EAAe5C,EAAQ,OACvBgE,OACAC,OACA9G,IAGA+G,cACA,yBACA,EACAC,aACA53B,SACA,EACA63B,gBACA,yBACA,eACA,EACA,EACAD,aACAnrB,gBACA,gBACA,gBACA,EACAmqB,gBACA,iBACA,EACAtc,kBACA,gBACAkc,SACAx2B,kBACA,EACA22B,mBACA,2BACA,eACA,GACA,gCACAzzB,CACA,GAGAwwB,WACA+C,iCACA,sBACAX,cACAY,OACAA,SACAA,YACA,sBACA,GACA,sBAGAC,mBACA,kBACA,WACA,oCACAnlB,kCACA,EAGAolB,gBACA,kBACA,WACA,iCACAplB,eACA,IAEAoR,CACA,EACAiU,oBACA,iBACA,2BACArlB,UACAklB,CACA,EACAoB,UACA,+BCnFA,MAAarE,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Cf,iDAEA,QADA0d,KAAa1f,KAAc0f,MAI3B,QACA,CCPe,aACf,OACA8f,SADA9Y,yBACAA,mBAEA,gBACA,MAAiB+Y,EAAa1lC,KAC9B,KACA,4CAEA,aACAmI,mCAGAA,QACA,EAGAs9B,uBACA,gCCnBe,cACf,wEACA,4CACA,GACA9C,EACA,gFCJe,gBACf,kCACA,0EAGAgD,0CACA/4B,aACA3b,QACAgW,YACA1N,mBAGA3C,qCACAqQ,cAEA2+B,MAAkBC,KAAcF,IAChC,gCCjBe,aAEf,UADAhZ,iCACAA,gCACA,qCAEA,IACA,mFACA,CAGA,CAFA,MACA,QACA,CACA,+CCXe,cACf,0FACA,+CCFe,aACf,gKACA,gFCAA,gBACA,qBAEA,iCACA,sCACAmZ,2BACA,sDACA,IAAKjwB,iBACL,CAEA,QACA,CAEe,cACf,YAAkBvmB,mBAAsBA,KACxC,yCACAA,yCACM,OAAc0Q,SACpB,GAAKpJ,iIACLA,+DACA,EACA,CAEA,QACA,0ECxBe,gBACf,OAAsB,YAAtBe,EAAeouC,KAAOpuC,0BACtB,SACI,cACJ,gFAGA,SAASquC,KAAqB5wC,EAC9B,gECTe,aAIf6wC,aACA,QACA,EAEA,SACAC,mBACAC,mBACA5L,sCACA6L,2BACAC,qCACAC,iCAEA,oBACA,mCACAr1C,SACAqI,cACAC,gBACA0N,cACKgB,KACL,CAEA,IACAzN,KAAa,GAKb,CAJA,MACAA,qBACA,gBACA,CACA,CAEA,uBACA,IAGA+rC,SACA7oC,GAHA8oC,kBADAC,iCACA1sC,WACApM,kBACA,sBAwCK44C,GAxCLnxC,GAwCKA,GAxCLzH,GAwCKA,GAvCL+P,oBACA,gBACA,oEAEA,qBACA,yBACA,MA4KA,CACAzM,aACA04B,QA7KA,CAEA,6BAAyD,CACzD,mBAEA,OACA,gBAEA,OACA,mBACA,SACA,CACA,CAEA,sDAAoF,qBACpF,qDACAh8B,4BACA,KAAY,iDACZ+P,eACA,mBAEA,uBACA,+DACA,OACAzM,aACA04B,aAEA,CAEA,mEACA,CACA,GACK6c,EACL,CAEA,oBACA,IACA,OACA72C,cACAg+B,kBAOA,CALA,MAAM3uB,IACN,OACArP,aACAg+B,OAEA,CACA,CAEA5G,SACA,SAEA,cAEA,cAEA,cAEA,SACAvsB,iBACA,WACA,GACA,4BACAksC,iBACAA,6BACA,+CAEA,eACA,8CACAlsC,oBACA,yBACA,EACA,EACA,CAEA,iBACA,yBACA,uBAEA,sBACA,cACAvJ,YACA,wBAAoC80C,KAAO90C,kEAC3CmM,mBACA,EAAS,aACTA,oBACA,GAASupC,gCACT3tC,kBACA,EAAS,aACT,2BACA,EACA,CAEAoS,UACA,CAEA,OAEAxe,6BACA,cACA,6BACAwQ,eACA,EACA,CAEA,gCACA,CACA,CAEA,iBACA,6BAEA,gBACA,uCACA,4FACAzP,sFACA,CAEA,QACA,CAEA,+BACA,4EACA,cACA,qOACA,CAEA,gBACA,OACAi5C,cAEA,kGACA,CAEA,gBACA,wBACAC,4CACA,CAEA,gBACAj6C,kBACAg6C,gBACKE,kCACL,CAEA,eACA,OACA,YACA,uBACA,wCAEA,sBACA,UACAhkC,iBACA,OAAiBxT,cACjB,sDAGA,oCACA,EAEA,iBACA,CACA,CAEA,OACAwT,QAEA,CAEA,cACA,OACA7R,aACA04B,QAEA,CAEA,2IACA,4CACA,iEACA,EAAG5C,oBACH,sIACA,EAAGA,qBACH,OACAggB,WAEA,EAAGC,0CACH,WACA,GAAGjgB,uDACH,qBACA,+BACA,+DACA,iCACA,EACA,EAAGigB,yCACH,WACA,GAAGxsC,0BACH,0BACA,GAAGusB,oBACH,SAEA,iBACAlR,WAGA,iCACA,KAAaA,UAAY,CACzB,eACA,4CACA,CAEA,oBACA,CACA,EAAGkR,yBACHna,eACAq6B,kBACA,4KACA,4EAEA,EACAC,gBACAt6C,aACA,oCACA,gCACA,gBACA,EACAu6C,8BACA,qBACA,YAEA,mBACA,oFACA,CAEA,oCAA+C73C,QAAQA,IACvD,2BACAu3C,iBACA,uCAEA,yBACA,6BACAO,2BAEA,WACA,mDACA,mDACA,SAAYC,IACZ,uDACY,CACZ,iEACA,mDACA,CACA,CACA,CACA,EACAC,sBACA,oCAA+Ch4C,QAAQA,IACvD,2BAEA,2EACA,UACA,KACA,CACA,CAEAi4C,+EACA,2BACA,8FACA,EACAC,wBACA,gCACA,qLACA,EACAlE,mBACA,oCAA+Ch0C,QAAQA,IACvD,2BACA,6EACA,CACA,EACAmgB,kBACA,oCAA+CngB,QAAQA,IACvD,2BAEA,kBACA,qBAEA,sBACA,cACAm4C,MACA,CAEA,SACA,CACA,CAEA,wCACA,EACAC,gCACA,sBACA/5B,cACAg6B,cACAC,YACO,yCACP,GACG7gB,CACH,gCC/Ve,gBACf,0EACA,qBACA4b,CACA,GACAA,IACA,oGCFe,gBACf,SAASkF,KAAcje,ICLR,gBACf,0EAEA,WACA,KAIAke,IAJAC,KACAC,KACAC,KAIA,IACA,kBAA4BD,uBAC5BD,iBAEAz4C,iBAH2D04C,MAc3D,CATA,MAAIhpC,GACJipC,KACAC,GACA,SACA,KACAF,6BAGA,CAFA,QACA,YACA,CACA,CAEA,SACA,CDvBgCG,CAAoBve,SAAYwe,KAA0Bxe,SAAYye,MACtG,8FEFe,cACf,SAASC,KAAc1e,OAAS2e,KAAe3e,OAAS4e,KAA0B5e,OAAS6e,MAC3F,qFCFe,cACf,OCJe,cACf,6BAAiCC,KAAgB9e,EACjD,CDES+e,CAAiB/e,OAASgf,KAAehf,OAASwe,KAA0Bxe,IELtE,aACf,2JACA,CFG8Fif,EAC9F,gCGNe,cAGf,iFACA,eACA,EAAI,YACJ,mGACA,GAAG5gC,EACH,gFCPe,gBACf,KACA,gCAAoC6gC,KAAgBnG,KACpD,oDAEA,GADA,oDACA,0CACA,gFAAsFmG,KAAgBnG,KACtG,sFCJe,cACf,4CAEA,qBACA,cCRe,cACf,6DACA,CDM2BoG,CAAgBC,YAE3C,wBACA,0EAGA,iBACA,4BAEAC,UACA,CAEA,aACA,SAAa/mB,KAAS8mB,eAAmB/iC,KAAcrZ,kBACvD,CAEA,8CACAggB,aACA3b,QACAqI,cACA2N,YACA1N,oBAEK,EACMuuB,KAAcohB,IACzB,EAEAC,IACA","names":["TypeModifier","None","Const","Type","modifiers","arguments","this","modifier","BuiltinTypeName","Dynamic","Bool","String","Int","Number","Function","Inferred","INFERRED_TYPE","BuiltinType","name","_this6","visitor","context","visitBuiltinType","BinaryOperator","Equals","NotEquals","Identical","NotIdentical","Minus","Plus","Divide","Multiply","Modulo","And","Or","BitwiseAnd","Lower","LowerEquals","Bigger","BiggerEquals","NullishCoalesce","areAllEquivalent","base","other","areAllEquivalentPredicate","equivalentPredicate","len","length","i","baseElement","otherElement","isEquivalent","Expression","type","sourceSpan","ReadPropExpr","index","ReadKeyExpr","params","pure","InvokeFunctionExpr","InstantiateExpr","trueCase","falseCase","ConditionalExpr","rhs","BinaryOperatorExpr","parens","equals","TYPED_NULL_EXPR","ExpressionStatement","ReadVarExpr","_this10","e","visitReadVarExpr","value","WriteVarExpr","_this13","visitWriteVarExpr","DeclareVarStmt","toDeclStmt","StmtModifier","Final","WriteKeyExpr","receiver","_this14","visitWriteKeyExpr","WritePropExpr","_this15","visitWritePropExpr","fn","args","_this16","visitInvokeFunctionExpr","classExpr","_this18","visitInstantiateExpr","LiteralExpr","_this19","visitLiteralExpr","condition","_this22","nullSafeIsEquivalent","visitConditionalExpr","operator","lhs","_this26","visitBinaryOperatorExpr","_this27","visitReadPropExpr","_this28","visitReadKeyExpr","Private","Exported","Static","Statement","leadingComments","leadingComment","push","_this33","stmt","visitDeclareVarStmt","expr","_this35","visitExpressionStmt","variable","EventHandlerVars","event","stripBlock","messagePart","rawMessagePart","charAt","substring","findEndOfBlock","cooked","raw","cookedIndex","rawIndex","Error","globalThis","global","window","self","WorkerGlobalScope","ɵ_global","$localize$1","messageParts","expressions","_key","translate","translation","message","require","process","env","DEBUG","undefined","document","createElement","createElementNS","view","classListProp","protoProp","elemCtrProto","Element","objCtr","Object","strTrim","trim","replace","arrIndexOf","Array","indexOf","item","DOMEx","code","DOMException","checkTokenAndGetIndex","classList","token","test","call","ClassList","elem","trimmedClasses","getAttribute","classes","split","_updateClassName","setAttribute","toString","classListProto","classListGetter","contains","add","tokens","l","updated","remove","splice","toggle","force","result","method","join","defineProperty","classListPropDesc","get","enumerable","configurable","ex","number","__defineGetter__","testElement","createMethod","original","DOMTokenList","prototype","_toggle","__spreadArray","to","from","pack","ar","slice","concat","define","performance","mark","performanceMeasure","label","measure","symbolPrefix","__Zone_symbol_prefix","__symbol__","checkDuplicate","Zone","parent","zoneSpec","_parent","_name","_properties","properties","_zoneDelegate","_ZoneDelegate","assertZonePatched","Promise","patches","ZoneAwarePromise","zone","current","_currentZoneFrame","_currentTask","__load_patch","ignoreDuplicate","hasOwnProperty","perfName","_api","key","getZoneWith","fork","wrap","callback","source","_callback","intercept","runGuarded","run","applyThis","applyArgs","invoke","error","handleError","runTask","task","NO_ZONE","state","notScheduled","eventTask","macroTask","reEntryGuard","running","_transitionTo","scheduled","runCount","previousTask","data","isPeriodic","cancelFn","invokeTask","unknown","_updateTaskCount","scheduleTask","newZone","scheduling","zoneDelegates","_zoneDelegates","_zone","err","scheduleMicroTask","customSchedule","ZoneTask","microTask","scheduleMacroTask","customCancel","scheduleEventTask","cancelTask","canceling","count","nativeMicroTaskQueuePromise","DELEGATE_ZS","onHasTask","delegate","_","target","hasTaskState","hasTask","onScheduleTask","onInvokeTask","onCancelTask","parentDelegate","_taskCounts","_parentDelegate","_forkZS","onFork","_forkDlgt","_forkCurrZone","_interceptZS","onIntercept","_interceptDlgt","_interceptCurrZone","_invokeZS","onInvoke","_invokeDlgt","_invokeCurrZone","_handleErrorZS","onHandleError","_handleErrorDlgt","_handleErrorCurrZone","_scheduleTaskZS","_scheduleTaskDlgt","_scheduleTaskCurrZone","_invokeTaskZS","_invokeTaskDlgt","_invokeTaskCurrZone","_cancelTaskZS","_cancelTaskDlgt","_cancelTaskCurrZone","_hasTaskZS","_hasTaskDlgt","_hasTaskDlgtOwner","_hasTaskCurrZone","zoneSpecHasTask","targetZone","apply","returnTask","scheduleFn","isEmpty","counts","prev","next","change","options","_state","useG","_numberOfNestedTaskFrames","drainMicroTaskQueue","cancelScheduleRequest","toState","fromState1","fromState2","handleId","toJSON","symbolSetTimeout","symbolPromise","symbolThen","_microTaskQueue","_isDrainingMicrotaskQueue","nativeScheduleMicroTask","func","resolve","nativeThen","then","queue","onUnhandledError","microtaskDrainDone","symbol","currentZoneFrame","noop","showUncaughtError","patchEventTarget","patchOnProperties","patchMethod","bindArguments","patchThen","patchMacroTask","patchEventPrototype","isIEOrEdge","getGlobalObjects","ObjectDefineProperty","ObjectGetOwnPropertyDescriptor","ObjectCreate","ArraySlice","patchClass","wrapWithCurrentZone","filterProperties","attachOriginToPatched","_redefineProperty","patchCallbacks","getOwnPropertyDescriptor","ObjectGetPrototypeOf","getPrototypeOf","create","ADD_EVENT_LISTENER_STR","REMOVE_EVENT_LISTENER_STR","ZONE_SYMBOL_ADD_EVENT_LISTENER","ZONE_SYMBOL_REMOVE_EVENT_LISTENER","TRUE_STR","FALSE_STR","ZONE_SYMBOL_PREFIX","scheduleMacroTaskWithCurrentZone","zoneSymbol$1","isWindowExists","internalWindow","_global","isPropertyWritable","propertyDesc","writable","set","isWebWorker","isNode","isBrowser","HTMLElement","isMix","zoneSymbolEventNames$1","wrapFn","eventNameSymbol","listener","filename","lineno","colno","preventDefault","patchProperty","obj","prop","desc","onPropPatchedSymbol","originalDescGet","originalDescSet","eventName","substr","newValue","removeEventListener","addEventListener","REMOVE_ATTRIBUTE","removeAttribute","onProperties","j","originalInstanceKey","className","OriginalClass","a","instance","patchFn","proto","delegateName","patchDelegate_1","funcName","metaCreator","setNative","cbIdx","meta","patched","isDetectedIEOrEdge","ieOrEdge","ua","navigator","userAgent","api","_uncaughtPromiseErrors","isDisableWrappingUncaughtPromiseRejection","rejection","console","stack","_loop_2","uncaughtPromiseError","shift","throwOriginal","handleUnhandledRejection","handler","UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL","isThenable","forwardResolution","forwardRejection","reject","symbolState","symbolValue","symbolFinally","symbolParentPromiseValue","symbolParentPromiseState","UNRESOLVED","REJECTED","makeResolver","promise","v","resolvePromise","CURRENT_TASK_TRACE_SYMBOL","onceWrapper","wasCalled","wrappedFunction","once","TypeError","clearRejectedNoCatch","trace","currentTask","creationTrace","scheduleResolveOrReject","readableObjectToString","constructor","JSON","stringify","REJECTION_HANDLED_HANDLER","chainPromise","onFulfilled","onRejected","promiseState","parentPromiseValue","isFinallyPromise","AggregateError","executor","any","values","Symbol","iterator","promises","_i","values_1","finished","errors","race","res","rej","onResolve","onReject","values_2","all","allWithCallback","allSettled","thenCallback","status","errorCallback","reason","unresolvedCount","valueIndex","resolvedValues","_loop_3","this_1","curValueIndex","thenErr","values_3","toStringTag","species","C","catch","finally","onFinally","NativePromise","symbolThenPatched","Ctor","originalThen","_this","zoneify","resultPromise","ctor","originalFunctionToString","ORIGINAL_DELEGATE_SYMBOL","PROMISE_SYMBOL","ERROR_SYMBOL","newFunctionToString","originalDelegate","nativePromise","nativeError","originalObjectToString","passiveSupported","zoneSymbol","_defineProperty","_getOwnPropertyDescriptor","_create","unconfigurablesKey","OPTIMIZED_ZONE_EVENT_TASK_DATA","zoneSymbolEventNames","globalSources","EVENT_NAME_SYMBOL_REGX","RegExp","IMMEDIATE_PROPAGATION_SYMBOL","prepareEventNames","eventNameToString","falseEventName","trueEventName","symbolCapture","apis","patchOptions","ADD_EVENT_LISTENER","REMOVE_EVENT_LISTENER","rm","LISTENERS_EVENT_LISTENER","listeners","REMOVE_ALL_LISTENERS_EVENT_LISTENER","rmAll","zoneSymbolAddEventListener","ADD_EVENT_LISTENER_SOURCE","PREPEND_EVENT_LISTENER","isRemoved","handleEvent","globalCallback","isCapture","tasks","copyTasks","_loop_4","globalZoneAwareCallback","globalZoneAwareCaptureCallback","patchEventTargetMethods","useGlobalCallback","validateHandler","vh","chkDup","returnTarget","rt","nativePrependEventListener","taskData","nativeAddEventListener","nativeRemoveEventListener","nativeListeners","nativeRemoveAllListeners","buildEventListenerOptions","passive","capture","assign","prepend","isExisting","symbolEventNames","symbolEventName","existingTasks","allRemoved","compare","diff","typeOfDelegate","unpatchedEvents","passiveEvents","makeAddListener","nativeListener","addSource","customScheduleFn","customCancelFn","transferEventName","isHandleEvent","constructorName","targetSource","unshift","existingTask","findEventTasks","captureTasks","removeTasks","keys","match","exec","evtName","results","foundTasks","captureFalseTasks","captureTrueTasks","Event","targetName","callbacks","nativeDelegate","opts","forEach","descriptor","ignoreProperties","tip","filter","ip","targetIgnoreProperties","op","patchFilteredProperties","getOnEventNames","getOwnPropertyNames","startsWith","map","propertyDescriptorPatch","__Zone_ignore_on_properties","patchTargets","internalWindow_1","ignoreErrorProperties","isIE","originalConfigurableFlag","_tryDefineProperty","rewriteDescriptor","isUnconfigurable","isFrozen","swallowError","descJson","log","propertyDescriptorLegacyPatch","_a","canPatchViaPropertyDescriptor","onclick","XMLHttpRequest","ON_READY_STATE_CHANGE","XMLHttpRequestPrototype","xhrDesc","req","onreadystatechange","SYMBOL_FAKE_ONREADYSTATECHANGE_1","detectFunc","supportsWebSocket","WebSocket","patchViaCapturingAllTheEvents","unboundKey","_loop_5","property","eventNames","onproperty","bound","elt","parentElement","WS","EventTarget","x","y","proxySocket","proxySocketProto","socket","onmessageDesc","propName","propertySymbol","globalWebSocket","SYMBOL_BLACK_LISTED_EVENTS","SYMBOL_UNPATCHED_EVENTS","propertyPatch","defineProperties","props","getOwnPropertySymbols","sym","propertiesObject","registerElementPatch","eventTargetLegacyPatch","NO_EVENT_TARGET","EVENT_TARGET","isWtf","wtf","WTF_ISSUE_555_ARRAY","isDisableIECheck","__Zone_disable_IE_check","isEnableCrossContextCheck","__Zone_enable_cross_context_check","FUNCTION_WRAPPER","BROWSER_TOOLS","pointerEventsMap","MSPointerCancel","MSPointerDown","MSPointerEnter","MSPointerHover","MSPointerLeave","MSPointerMove","MSPointerOut","MSPointerOver","MSPointerUp","targets","apiTypes","testString","taskSymbol","patchTimer","setName","cancelName","nameSuffix","clearNative","tasksByHandleId","clearTask","options_1","delay","callback_1","handle","ref","unref","bind","id","legacyPatch","clear","blockingMethods","s","patchEvent","eventTargetPatch","XMLHttpRequestEventTarget","patchCustomElements","customElements","patchXHR","oriAddListener","oriRemoveListener","XMLHttpRequestEventTarget_1","XMLHttpRequestEventTargetPrototype","READY_STATE_CHANGE","SCHEDULED","openNative","XHR_SYNC","XHR_URL","fetchTaskAborting","fetchTaskScheduling","sendNative","url","aborted","placeholderCallback","XHR_ERROR_BEFORE_SCHEDULED","abortNative","findPendingTask","XHR_TASK","XHR_SCHEDULED","XHR_LISTENER","newListener","readyState","DONE","loadTasks","oriInvoke_1","geolocation","patchPrototype","fnNames","_loop_1","name_1","findPromiseRejectionHandler","PromiseRejectionEvent","evt","__webpack_require__","module","ArrayProto","toAbsoluteIndex","toLength","end","inc","O","aLen","endPos","IObject","toObject","asc","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","val","f","TYPE","aFunction","memo","isRight","isArray","SPECIES","isObject","arraySlice","factories","construct","partArgs","TAG","ARG","cof","tryGet","redefineAll","ctx","anInstance","forOf","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","entry","getConstructor","that","delete","has","def","k","p","n","r","setStrong","kind","IS_MAP","getWeak","anObject","createArrayMethod","$has","arrayFind","arrayFindIndex","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","ufstore","$export","redefine","fails","$iterDetect","setToStringTag","inheritIfRequired","ADDER","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","IS_WEAK","version","createDesc","object","getTime","$toISOString","lz","m","toPrimitive","NUMBER","is","gOPS","pIE","getSymbols","symbols","isEnum","core","hide","PROTOTYPE","IS_FORCED","IS_GLOBAL","IS_PROTO","IS_BIND","exports","expProto","out","own","exp","defined","wks","fns","strfn","rxfn","isArrayIter","getIterFn","BREAK","RETURN","iterFn","setPrototypeOf","P","S","ITERATOR","floor","MATCH","IteratorPrototype","Constructor","Iterators","$iterCreate","BUGGY","KEYS","VALUES","returnThis","methods","getMethod","DEF_VALUES","VALUES_BUG","$native","DEFAULT","$default","$entries","$anyNative","LIBRARY","entries","FORCED","SAFE_CLOSING","riter","iter","done","arr","$expm1","pow","EPSILON","EPSILON32","MAX32","MIN32","$abs","$sign","setDesc","isExtensible","FREEZE","setMeta","w","KEY","NEED","onFreeze","it","shared","store","getOrCreateMetadataMap","targetMetadata","$assign","B","K","A","T","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","open","IE8_DOM_DEFINE","dP","getKeys","toIObject","gOPD","gOPN","windowNames","getWindowNames","hiddenKeys","ObjectProto","arrayIndexOf","propertyIsEnumerable","Reflect","$trim","$parseFloat","ws","hex","$parseInt","SRC","TO_STRING","$toString","TPL","isFunction","safe","check","buggy","uid","SHARED","arg","quot","createHTML","p1","spaces","space","ltrim","rtrim","exporter","FORCE","ALIAS","string","max","min","px","wksExt","USE_SYMBOL","copyWithin","$every","every","fill","$filter","$find","forced","findIndex","find","$forEach","STRICT","createProperty","mapfn","mapping","$indexOf","NEGATIVE_ZERO","addToUnscopables","arrayJoin","toInteger","lastIndexOf","$map","of","$reduce","reduceRight","reduce","html","klass","start","upTo","size","cloned","$some","some","$sort","sort","now","toISOString","Date","pv","TO_PRIMITIVE","INVALID_DATE","DateProto","HAS_INSTANCE","FunctionProto","FProto","nameRE","NAME","MAP","strong","log1p","sqrt","$acosh","acosh","Math","$asinh","asinh","$atanh","atanh","sign","cbrt","clz32","cosh","expm1","fround","abs","hypot","sum","larg","div","$imul","imul","xn","yn","xl","yl","log10","log2","sinh","tanh","b","trunc","$Number","Base","BROKEN_COF","TRIM","toNumber","third","first","charCodeAt","maxCode","_isFinite","isFinite","isInteger","isNaN","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseFloat","parseInt","aNumberValue","repeat","$toFixed","ERROR","ZERO","multiply","c2","divide","c","numToString","toFixed","x2","z","$fails","$toPrecision","toPrecision","$getOwnPropertyDescriptor","$getPrototypeOf","$keys","rApply","fApply","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","propertyKey","deleteProperty","Enumerate","enumerate","getProto","$isExtensible","ownKeys","$preventExtensions","preventExtensions","setProto","existingDescriptor","ownDesc","isRegExp","$flags","$RegExp","re1","re2","CORRECT_NEW","piRE","fiU","tiRE","proxy","$match","$replace","$search","_split","$push","$SPLIT","LENGTH","LAST_INDEX","$split","separator2","output","flags","separator","lastLastIndex","splitLimit","separatorCopy","NPCG","lastIndex","lastLength","$at","codePointAt","ENDS_WITH","$endsWith","endsWith","endPosition","search","fromCharCode","$fromCodePoint","fromCodePoint","INCLUDES","includes","point","tpl","STARTS_WITH","$startsWith","META","wksDefine","enumKeys","gOPNExt","$GOPD","$DP","$Symbol","$JSON","_stringify","HIDDEN","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","setSymbolDesc","protoDesc","isSymbol","$defineProperty","D","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyNames","names","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","InternalMap","each","weak","WEAK_MAP","tmp","wrapper","$WeakMap","toMetaKey","ordinaryDefineOwnMetadata","metadata","defineMetadata","deleteMetadata","metadataMap","ordinaryOwnMetadataKeys","ordinaryMetadataKeys","getMetadataKeys","ordinaryHasOwnMetadata","ordinaryGetOwnMetadata","ordinaryGetMetadata","getMetadata","getOwnMetadataKeys","getOwnMetadata","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","$metadata","metadataKey","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","d","_setMember","playbackRate","endDelay","iterationStart","duration","direction","easing","iterations","ease","I","J","H","q","t","g","offset","background","thin","borderBottomWidth","fontWeight","normal","outlineWidth","none","boxShadow","h","isDeprecated","convertEffectInput","applyFrom","backgroundColor","cssText","getPropertyCSSValue","removeProperty","parentRule","_updateIndices","_set","_clear","o","_ensureAlive","_tickCurrentTime","currentTime","startTime","_isFinished","_totalDuration","playState","_rewind","play","pause","finish","cancel","reverse","_fireEvents","setTimeout","_tick","_needsTick","pending","_targetAnimations","_markTarget","_unmarkTarget","_play","inset","N","deg","matrix","left","center","right","top","bottom","opacity","arr2","_construct","_isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_0__","_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_1__","staticProps","_unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_0__","F","normalCompletion","didErr","Super","_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_1__","Derived","_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_2__","_get","_superPropBase","subClass","superClass","_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__","enumerableOnly","_typeof_js__WEBPACK_IMPORTED_MODULE_0__","_assertThisInitialized_js__WEBPACK_IMPORTED_MODULE_1__","_regeneratorRuntime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","generator","outerFn","NativeIteratorPrototype","PromiseImpl","tryLoc","record","tryLocsList","__await","defineIteratorMethods","reset","stop","dispatchException","hasFinally","hasCatch","abrupt","finallyEntry","complete","resetTryEntry","delegateYield","resultName","nextLoc","arrayWithHoles","_s","_arr","_n","_d","_e","_iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_arrayWithHoles_js__WEBPACK_IMPORTED_MODULE_0__","_iterableToArray_js__WEBPACK_IMPORTED_MODULE_1__","_unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__","_nonIterableRest_js__WEBPACK_IMPORTED_MODULE_3__","arrayLikeToArray","_arrayWithoutHoles","iterableToArray","_nonIterableSpread","_arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__","_isNativeFunction","Class","_cache","Wrapper","_wrapNativeSuper"],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/compiler/fesm2020/compiler.mjs","./node_modules/@angular/localize/fesm2020/localize.mjs","./node_modules/@angular/localize/fesm2020/init.mjs","./src/polyfills.ts","./node_modules/classlist.js/classList.js","./node_modules/zone.js/dist/zone.js","./node_modules/core-js/es6/array.js","./node_modules/core-js/es6/date.js","./node_modules/core-js/es6/function.js","./node_modules/core-js/es6/map.js","./node_modules/core-js/es6/math.js","./node_modules/core-js/es6/number.js","./node_modules/core-js/es6/object.js","./node_modules/core-js/es6/parse-float.js","./node_modules/core-js/es6/parse-int.js","./node_modules/core-js/es6/reflect.js","./node_modules/core-js/es6/regexp.js","./node_modules/core-js/es6/set.js","./node_modules/core-js/es6/string.js","./node_modules/core-js/es6/symbol.js","./node_modules/core-js/es6/weak-map.js","./node_modules/core-js/es7/reflect.js","./node_modules/core-js/modules/_a-function.js","./node_modules/core-js/modules/_a-number-value.js","./node_modules/core-js/modules/_add-to-unscopables.js","./node_modules/core-js/modules/_an-instance.js","./node_modules/core-js/modules/_an-object.js","./node_modules/core-js/modules/_array-copy-within.js","./node_modules/core-js/modules/_array-fill.js","./node_modules/core-js/modules/_array-from-iterable.js","./node_modules/core-js/modules/_array-includes.js","./node_modules/core-js/modules/_array-methods.js","./node_modules/core-js/modules/_array-reduce.js","./node_modules/core-js/modules/_array-species-constructor.js","./node_modules/core-js/modules/_array-species-create.js","./node_modules/core-js/modules/_bind.js","./node_modules/core-js/modules/_classof.js","./node_modules/core-js/modules/_cof.js","./node_modules/core-js/modules/_collection-strong.js","./node_modules/core-js/modules/_collection-weak.js","./node_modules/core-js/modules/_collection.js","./node_modules/core-js/modules/_core.js","./node_modules/core-js/modules/_create-property.js","./node_modules/core-js/modules/_ctx.js","./node_modules/core-js/modules/_date-to-iso-string.js","./node_modules/core-js/modules/_date-to-primitive.js","./node_modules/core-js/modules/_defined.js","./node_modules/core-js/modules/_descriptors.js","./node_modules/core-js/modules/_dom-create.js","./node_modules/core-js/modules/_enum-bug-keys.js","./node_modules/core-js/modules/_enum-keys.js","./node_modules/core-js/modules/_export.js","./node_modules/core-js/modules/_fails-is-regexp.js","./node_modules/core-js/modules/_fails.js","./node_modules/core-js/modules/_fix-re-wks.js","./node_modules/core-js/modules/_flags.js","./node_modules/core-js/modules/_for-of.js","./node_modules/core-js/modules/_global.js","./node_modules/core-js/modules/_has.js","./node_modules/core-js/modules/_hide.js","./node_modules/core-js/modules/_html.js","./node_modules/core-js/modules/_ie8-dom-define.js","./node_modules/core-js/modules/_inherit-if-required.js","./node_modules/core-js/modules/_invoke.js","./node_modules/core-js/modules/_iobject.js","./node_modules/core-js/modules/_is-array-iter.js","./node_modules/core-js/modules/_is-array.js","./node_modules/core-js/modules/_is-integer.js","./node_modules/core-js/modules/_is-object.js","./node_modules/core-js/modules/_is-regexp.js","./node_modules/core-js/modules/_iter-call.js","./node_modules/core-js/modules/_iter-create.js","./node_modules/core-js/modules/_iter-define.js","./node_modules/core-js/modules/_iter-detect.js","./node_modules/core-js/modules/_iter-step.js","./node_modules/core-js/modules/_iterators.js","./node_modules/core-js/modules/_library.js","./node_modules/core-js/modules/_math-expm1.js","./node_modules/core-js/modules/_math-fround.js","./node_modules/core-js/modules/_math-log1p.js","./node_modules/core-js/modules/_math-sign.js","./node_modules/core-js/modules/_meta.js","./node_modules/core-js/modules/_metadata.js","./node_modules/core-js/modules/_object-assign.js","./node_modules/core-js/modules/_object-create.js","./node_modules/core-js/modules/_object-dp.js","./node_modules/core-js/modules/_object-dps.js","./node_modules/core-js/modules/_object-gopd.js","./node_modules/core-js/modules/_object-gopn-ext.js","./node_modules/core-js/modules/_object-gopn.js","./node_modules/core-js/modules/_object-gops.js","./node_modules/core-js/modules/_object-gpo.js","./node_modules/core-js/modules/_object-keys-internal.js","./node_modules/core-js/modules/_object-keys.js","./node_modules/core-js/modules/_object-pie.js","./node_modules/core-js/modules/_object-sap.js","./node_modules/core-js/modules/_own-keys.js","./node_modules/core-js/modules/_parse-float.js","./node_modules/core-js/modules/_parse-int.js","./node_modules/core-js/modules/_property-desc.js","./node_modules/core-js/modules/_redefine-all.js","./node_modules/core-js/modules/_redefine.js","./node_modules/core-js/modules/_same-value.js","./node_modules/core-js/modules/_set-proto.js","./node_modules/core-js/modules/_set-species.js","./node_modules/core-js/modules/_set-to-string-tag.js","./node_modules/core-js/modules/_shared-key.js","./node_modules/core-js/modules/_shared.js","./node_modules/core-js/modules/_strict-method.js","./node_modules/core-js/modules/_string-at.js","./node_modules/core-js/modules/_string-context.js","./node_modules/core-js/modules/_string-html.js","./node_modules/core-js/modules/_string-repeat.js","./node_modules/core-js/modules/_string-trim.js","./node_modules/core-js/modules/_string-ws.js","./node_modules/core-js/modules/_to-absolute-index.js","./node_modules/core-js/modules/_to-integer.js","./node_modules/core-js/modules/_to-iobject.js","./node_modules/core-js/modules/_to-length.js","./node_modules/core-js/modules/_to-object.js","./node_modules/core-js/modules/_to-primitive.js","./node_modules/core-js/modules/_uid.js","./node_modules/core-js/modules/_validate-collection.js","./node_modules/core-js/modules/_wks-define.js","./node_modules/core-js/modules/_wks-ext.js","./node_modules/core-js/modules/_wks.js","./node_modules/core-js/modules/core.get-iterator-method.js","./node_modules/core-js/modules/es6.array.copy-within.js","./node_modules/core-js/modules/es6.array.every.js","./node_modules/core-js/modules/es6.array.fill.js","./node_modules/core-js/modules/es6.array.filter.js","./node_modules/core-js/modules/es6.array.find-index.js","./node_modules/core-js/modules/es6.array.find.js","./node_modules/core-js/modules/es6.array.for-each.js","./node_modules/core-js/modules/es6.array.from.js","./node_modules/core-js/modules/es6.array.index-of.js","./node_modules/core-js/modules/es6.array.is-array.js","./node_modules/core-js/modules/es6.array.iterator.js","./node_modules/core-js/modules/es6.array.join.js","./node_modules/core-js/modules/es6.array.last-index-of.js","./node_modules/core-js/modules/es6.array.map.js","./node_modules/core-js/modules/es6.array.of.js","./node_modules/core-js/modules/es6.array.reduce-right.js","./node_modules/core-js/modules/es6.array.reduce.js","./node_modules/core-js/modules/es6.array.slice.js","./node_modules/core-js/modules/es6.array.some.js","./node_modules/core-js/modules/es6.array.sort.js","./node_modules/core-js/modules/es6.array.species.js","./node_modules/core-js/modules/es6.date.now.js","./node_modules/core-js/modules/es6.date.to-iso-string.js","./node_modules/core-js/modules/es6.date.to-json.js","./node_modules/core-js/modules/es6.date.to-primitive.js","./node_modules/core-js/modules/es6.date.to-string.js","./node_modules/core-js/modules/es6.function.bind.js","./node_modules/core-js/modules/es6.function.has-instance.js","./node_modules/core-js/modules/es6.function.name.js","./node_modules/core-js/modules/es6.map.js","./node_modules/core-js/modules/es6.math.acosh.js","./node_modules/core-js/modules/es6.math.asinh.js","./node_modules/core-js/modules/es6.math.atanh.js","./node_modules/core-js/modules/es6.math.cbrt.js","./node_modules/core-js/modules/es6.math.clz32.js","./node_modules/core-js/modules/es6.math.cosh.js","./node_modules/core-js/modules/es6.math.expm1.js","./node_modules/core-js/modules/es6.math.fround.js","./node_modules/core-js/modules/es6.math.hypot.js","./node_modules/core-js/modules/es6.math.imul.js","./node_modules/core-js/modules/es6.math.log10.js","./node_modules/core-js/modules/es6.math.log1p.js","./node_modules/core-js/modules/es6.math.log2.js","./node_modules/core-js/modules/es6.math.sign.js","./node_modules/core-js/modules/es6.math.sinh.js","./node_modules/core-js/modules/es6.math.tanh.js","./node_modules/core-js/modules/es6.math.trunc.js","./node_modules/core-js/modules/es6.number.constructor.js","./node_modules/core-js/modules/es6.number.epsilon.js","./node_modules/core-js/modules/es6.number.is-finite.js","./node_modules/core-js/modules/es6.number.is-integer.js","./node_modules/core-js/modules/es6.number.is-nan.js","./node_modules/core-js/modules/es6.number.is-safe-integer.js","./node_modules/core-js/modules/es6.number.max-safe-integer.js","./node_modules/core-js/modules/es6.number.min-safe-integer.js","./node_modules/core-js/modules/es6.number.parse-float.js","./node_modules/core-js/modules/es6.number.parse-int.js","./node_modules/core-js/modules/es6.number.to-fixed.js","./node_modules/core-js/modules/es6.number.to-precision.js","./node_modules/core-js/modules/es6.object.assign.js","./node_modules/core-js/modules/es6.object.create.js","./node_modules/core-js/modules/es6.object.define-properties.js","./node_modules/core-js/modules/es6.object.define-property.js","./node_modules/core-js/modules/es6.object.freeze.js","./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","./node_modules/core-js/modules/es6.object.get-own-property-names.js","./node_modules/core-js/modules/es6.object.get-prototype-of.js","./node_modules/core-js/modules/es6.object.is-extensible.js","./node_modules/core-js/modules/es6.object.is-frozen.js","./node_modules/core-js/modules/es6.object.is-sealed.js","./node_modules/core-js/modules/es6.object.is.js","./node_modules/core-js/modules/es6.object.keys.js","./node_modules/core-js/modules/es6.object.prevent-extensions.js","./node_modules/core-js/modules/es6.object.seal.js","./node_modules/core-js/modules/es6.object.set-prototype-of.js","./node_modules/core-js/modules/es6.object.to-string.js","./node_modules/core-js/modules/es6.parse-float.js","./node_modules/core-js/modules/es6.parse-int.js","./node_modules/core-js/modules/es6.reflect.apply.js","./node_modules/core-js/modules/es6.reflect.construct.js","./node_modules/core-js/modules/es6.reflect.define-property.js","./node_modules/core-js/modules/es6.reflect.delete-property.js","./node_modules/core-js/modules/es6.reflect.enumerate.js","./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","./node_modules/core-js/modules/es6.reflect.get.js","./node_modules/core-js/modules/es6.reflect.has.js","./node_modules/core-js/modules/es6.reflect.is-extensible.js","./node_modules/core-js/modules/es6.reflect.own-keys.js","./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","./node_modules/core-js/modules/es6.reflect.set.js","./node_modules/core-js/modules/es6.regexp.constructor.js","./node_modules/core-js/modules/es6.regexp.flags.js","./node_modules/core-js/modules/es6.regexp.match.js","./node_modules/core-js/modules/es6.regexp.replace.js","./node_modules/core-js/modules/es6.regexp.search.js","./node_modules/core-js/modules/es6.regexp.split.js","./node_modules/core-js/modules/es6.regexp.to-string.js","./node_modules/core-js/modules/es6.set.js","./node_modules/core-js/modules/es6.string.anchor.js","./node_modules/core-js/modules/es6.string.big.js","./node_modules/core-js/modules/es6.string.blink.js","./node_modules/core-js/modules/es6.string.bold.js","./node_modules/core-js/modules/es6.string.code-point-at.js","./node_modules/core-js/modules/es6.string.ends-with.js","./node_modules/core-js/modules/es6.string.fixed.js","./node_modules/core-js/modules/es6.string.fontcolor.js","./node_modules/core-js/modules/es6.string.fontsize.js","./node_modules/core-js/modules/es6.string.from-code-point.js","./node_modules/core-js/modules/es6.string.includes.js","./node_modules/core-js/modules/es6.string.italics.js","./node_modules/core-js/modules/es6.string.iterator.js","./node_modules/core-js/modules/es6.string.link.js","./node_modules/core-js/modules/es6.string.raw.js","./node_modules/core-js/modules/es6.string.repeat.js","./node_modules/core-js/modules/es6.string.small.js","./node_modules/core-js/modules/es6.string.starts-with.js","./node_modules/core-js/modules/es6.string.strike.js","./node_modules/core-js/modules/es6.string.sub.js","./node_modules/core-js/modules/es6.string.sup.js","./node_modules/core-js/modules/es6.string.trim.js","./node_modules/core-js/modules/es6.symbol.js","./node_modules/core-js/modules/es6.weak-map.js","./node_modules/core-js/modules/es7.reflect.define-metadata.js","./node_modules/core-js/modules/es7.reflect.delete-metadata.js","./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","./node_modules/core-js/modules/es7.reflect.get-metadata.js","./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","./node_modules/core-js/modules/es7.reflect.has-metadata.js","./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","./node_modules/core-js/modules/es7.reflect.metadata.js","./node_modules/core-js/modules/web.dom.iterable.js","./node_modules/web-animations-js/web-animations.min.js","./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./node_modules/@babel/runtime/helpers/esm/construct.js","./node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","./node_modules/@babel/runtime/helpers/esm/createSuper.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/superPropBase.js","./node_modules/@babel/runtime/helpers/esm/get.js","./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","./node_modules/@babel/runtime/helpers/esm/toArray.js","./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js"],"sourcesContent":["/**\n * @license Angular v14.2.12\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TagContentType;\n(function (TagContentType) {\n TagContentType[TagContentType[\"RAW_TEXT\"] = 0] = \"RAW_TEXT\";\n TagContentType[TagContentType[\"ESCAPABLE_RAW_TEXT\"] = 1] = \"ESCAPABLE_RAW_TEXT\";\n TagContentType[TagContentType[\"PARSABLE_DATA\"] = 2] = \"PARSABLE_DATA\";\n})(TagContentType || (TagContentType = {}));\nfunction splitNsName(elementName) {\n if (elementName[0] != ':') {\n return [null, elementName];\n }\n const colonIndex = elementName.indexOf(':', 1);\n if (colonIndex === -1) {\n throw new Error(`Unsupported format \"${elementName}\" expecting \":namespace:name\"`);\n }\n return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)];\n}\n// `` tags work the same regardless the namespace\nfunction isNgContainer(tagName) {\n return splitNsName(tagName)[1] === 'ng-container';\n}\n// `` tags work the same regardless the namespace\nfunction isNgContent(tagName) {\n return splitNsName(tagName)[1] === 'ng-content';\n}\n// `` tags work the same regardless the namespace\nfunction isNgTemplate(tagName) {\n return splitNsName(tagName)[1] === 'ng-template';\n}\nfunction getNsPrefix(fullName) {\n return fullName === null ? null : splitNsName(fullName)[0];\n}\nfunction mergeNsAndName(prefix, localName) {\n return prefix ? `:${prefix}:${localName}` : localName;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass HtmlTagDefinition {\n constructor({ closedByChildren, implicitNamespacePrefix, contentType = TagContentType.PARSABLE_DATA, closedByParent = false, isVoid = false, ignoreFirstLf = false, preventNamespaceInheritance = false } = {}) {\n this.closedByChildren = {};\n this.closedByParent = false;\n this.canSelfClose = false;\n if (closedByChildren && closedByChildren.length > 0) {\n closedByChildren.forEach(tagName => this.closedByChildren[tagName] = true);\n }\n this.isVoid = isVoid;\n this.closedByParent = closedByParent || isVoid;\n this.implicitNamespacePrefix = implicitNamespacePrefix || null;\n this.contentType = contentType;\n this.ignoreFirstLf = ignoreFirstLf;\n this.preventNamespaceInheritance = preventNamespaceInheritance;\n }\n isClosedByChild(name) {\n return this.isVoid || name.toLowerCase() in this.closedByChildren;\n }\n getContentType(prefix) {\n if (typeof this.contentType === 'object') {\n const overrideType = prefix === undefined ? undefined : this.contentType[prefix];\n return overrideType ?? this.contentType.default;\n }\n return this.contentType;\n }\n}\nlet _DEFAULT_TAG_DEFINITION;\n// see https://www.w3.org/TR/html51/syntax.html#optional-tags\n// This implementation does not fully conform to the HTML5 spec.\nlet TAG_DEFINITIONS;\nfunction getHtmlTagDefinition(tagName) {\n if (!TAG_DEFINITIONS) {\n _DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();\n TAG_DEFINITIONS = {\n 'base': new HtmlTagDefinition({ isVoid: true }),\n 'meta': new HtmlTagDefinition({ isVoid: true }),\n 'area': new HtmlTagDefinition({ isVoid: true }),\n 'embed': new HtmlTagDefinition({ isVoid: true }),\n 'link': new HtmlTagDefinition({ isVoid: true }),\n 'img': new HtmlTagDefinition({ isVoid: true }),\n 'input': new HtmlTagDefinition({ isVoid: true }),\n 'param': new HtmlTagDefinition({ isVoid: true }),\n 'hr': new HtmlTagDefinition({ isVoid: true }),\n 'br': new HtmlTagDefinition({ isVoid: true }),\n 'source': new HtmlTagDefinition({ isVoid: true }),\n 'track': new HtmlTagDefinition({ isVoid: true }),\n 'wbr': new HtmlTagDefinition({ isVoid: true }),\n 'p': new HtmlTagDefinition({\n closedByChildren: [\n 'address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset',\n 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5',\n 'h6', 'header', 'hgroup', 'hr', 'main', 'nav', 'ol',\n 'p', 'pre', 'section', 'table', 'ul'\n ],\n closedByParent: true\n }),\n 'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),\n 'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),\n 'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),\n 'tr': new HtmlTagDefinition({ closedByChildren: ['tr'], closedByParent: true }),\n 'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n 'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n 'col': new HtmlTagDefinition({ isVoid: true }),\n 'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),\n 'foreignObject': new HtmlTagDefinition({\n // Usually the implicit namespace here would be redundant since it will be inherited from\n // the parent `svg`, but we have to do it for `foreignObject`, because the way the parser\n // works is that the parent node of an end tag is its own start tag which means that\n // the `preventNamespaceInheritance` on `foreignObject` would have it default to the\n // implicit namespace which is `html`, unless specified otherwise.\n implicitNamespacePrefix: 'svg',\n // We want to prevent children of foreignObject from inheriting its namespace, because\n // the point of the element is to allow nodes from other namespaces to be inserted.\n preventNamespaceInheritance: true,\n }),\n 'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),\n 'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),\n 'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),\n 'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),\n 'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),\n 'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),\n 'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),\n 'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),\n 'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),\n 'style': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n 'script': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n 'title': new HtmlTagDefinition({\n // The browser supports two separate `title` tags which have to use\n // a different content type: `HTMLTitleElement` and `SVGTitleElement`\n contentType: { default: TagContentType.ESCAPABLE_RAW_TEXT, svg: TagContentType.PARSABLE_DATA }\n }),\n 'textarea': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),\n };\n }\n // We have to make both a case-sensitive and a case-insensitive lookup, because\n // HTML tag names are case insensitive, whereas some SVG tags are case sensitive.\n return TAG_DEFINITIONS[tagName] ?? TAG_DEFINITIONS[tagName.toLowerCase()] ??\n _DEFAULT_TAG_DEFINITION;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _SELECTOR_REGEXP = new RegExp('(\\\\:not\\\\()|' + // 1: \":not(\"\n '(([\\\\.\\\\#]?)[-\\\\w]+)|' + // 2: \"tag\"; 3: \".\"/\"#\";\n // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n // 4: attribute; 5: attribute_string; 6: attribute_value\n '(?:\\\\[([-.\\\\w*\\\\\\\\$]+)(?:=([\\\"\\']?)([^\\\\]\\\"\\']*)\\\\5)?\\\\])|' + // \"[name]\", \"[name=value]\",\n // \"[name=\"value\"]\",\n // \"[name='value']\"\n '(\\\\))|' + // 7: \")\"\n '(\\\\s*,\\\\s*)', // 8: \",\"\n'g');\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nclass CssSelector {\n constructor() {\n this.element = null;\n this.classNames = [];\n /**\n * The selectors are encoded in pairs where:\n * - even locations are attribute names\n * - odd locations are attribute values.\n *\n * Example:\n * Selector: `[key1=value1][key2]` would parse to:\n * ```\n * ['key1', 'value1', 'key2', '']\n * ```\n */\n this.attrs = [];\n this.notSelectors = [];\n }\n static parse(selector) {\n const results = [];\n const _addResult = (res, cssSel) => {\n if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let cssSelector = new CssSelector();\n let match;\n let current = cssSelector;\n let inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while (match = _SELECTOR_REGEXP.exec(selector)) {\n if (match[1 /* SelectorRegexp.NOT */]) {\n if (inNot) {\n throw new Error('Nesting :not in a selector is not allowed');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n const tag = match[2 /* SelectorRegexp.TAG */];\n if (tag) {\n const prefix = match[3 /* SelectorRegexp.PREFIX */];\n if (prefix === '#') {\n // #hash\n current.addAttribute('id', tag.slice(1));\n }\n else if (prefix === '.') {\n // Class\n current.addClassName(tag.slice(1));\n }\n else {\n // Element\n current.setElement(tag);\n }\n }\n const attribute = match[4 /* SelectorRegexp.ATTRIBUTE */];\n if (attribute) {\n current.addAttribute(current.unescapeAttribute(attribute), match[6 /* SelectorRegexp.ATTRIBUTE_VALUE */]);\n }\n if (match[7 /* SelectorRegexp.NOT_END */]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[8 /* SelectorRegexp.SEPARATOR */]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n /**\n * Unescape `\\$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * but we might want to match an attribute that contains `$`.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to unescape.\n * @returns the unescaped string.\n */\n unescapeAttribute(attr) {\n let result = '';\n let escaping = false;\n for (let i = 0; i < attr.length; i++) {\n const char = attr.charAt(i);\n if (char === '\\\\') {\n escaping = true;\n continue;\n }\n if (char === '$' && !escaping) {\n throw new Error(`Error in attribute selector \"${attr}\". ` +\n `Unescaped \"$\" is not supported. Please escape with \"\\\\$\".`);\n }\n escaping = false;\n result += char;\n }\n return result;\n }\n /**\n * Escape `$` sequences from the CSS attribute selector.\n *\n * This is needed because `$` can have a special meaning in CSS selectors,\n * with this method we are escaping `$` with `\\$'.\n * [MDN web link for more\n * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors).\n * @param attr the attribute to escape.\n * @returns the escaped string.\n */\n escapeAttribute(attr) {\n return attr.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n }\n isElementSelector() {\n return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 &&\n this.notSelectors.length === 0;\n }\n hasElementSelector() {\n return !!this.element;\n }\n setElement(element = null) {\n this.element = element;\n }\n /** Gets a template string for an element that matches the selector. */\n getMatchingElementTemplate() {\n const tagName = this.element || 'div';\n const classAttr = this.classNames.length > 0 ? ` class=\"${this.classNames.join(' ')}\"` : '';\n let attrs = '';\n for (let i = 0; i < this.attrs.length; i += 2) {\n const attrName = this.attrs[i];\n const attrValue = this.attrs[i + 1] !== '' ? `=\"${this.attrs[i + 1]}\"` : '';\n attrs += ` ${attrName}${attrValue}`;\n }\n return getHtmlTagDefinition(tagName).isVoid ? `<${tagName}${classAttr}${attrs}/>` :\n `<${tagName}${classAttr}${attrs}>`;\n }\n getAttrs() {\n const result = [];\n if (this.classNames.length > 0) {\n result.push('class', this.classNames.join(' '));\n }\n return result.concat(this.attrs);\n }\n addAttribute(name, value = '') {\n this.attrs.push(name, value && value.toLowerCase() || '');\n }\n addClassName(name) {\n this.classNames.push(name.toLowerCase());\n }\n toString() {\n let res = this.element || '';\n if (this.classNames) {\n this.classNames.forEach(klass => res += `.${klass}`);\n }\n if (this.attrs) {\n for (let i = 0; i < this.attrs.length; i += 2) {\n const name = this.escapeAttribute(this.attrs[i]);\n const value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach(notSelector => res += `:not(${notSelector})`);\n return res;\n }\n}\n/**\n * Reads a list of CssSelectors and allows to calculate which ones\n * are contained in a given CssSelector.\n */\nclass SelectorMatcher {\n constructor() {\n this._elementMap = new Map();\n this._elementPartialMap = new Map();\n this._classMap = new Map();\n this._classPartialMap = new Map();\n this._attrValueMap = new Map();\n this._attrValuePartialMap = new Map();\n this._listContexts = [];\n }\n static createNotMatcher(notSelectors) {\n const notMatcher = new SelectorMatcher();\n notMatcher.addSelectables(notSelectors, null);\n return notMatcher;\n }\n addSelectables(cssSelectors, callbackCtxt) {\n let listContext = null;\n if (cssSelectors.length > 1) {\n listContext = new SelectorListContext(cssSelectors);\n this._listContexts.push(listContext);\n }\n for (let i = 0; i < cssSelectors.length; i++) {\n this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\n }\n }\n /**\n * Add an object that can be found later on by calling `match`.\n * @param cssSelector A css selector\n * @param callbackCtxt An opaque object that will be given to the callback of the `match` function\n */\n _addSelectable(cssSelector, callbackCtxt, listContext) {\n let matcher = this;\n const element = cssSelector.element;\n const classNames = cssSelector.classNames;\n const attrs = cssSelector.attrs;\n const selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\n if (element) {\n const isTerminal = attrs.length === 0 && classNames.length === 0;\n if (isTerminal) {\n this._addTerminal(matcher._elementMap, element, selectable);\n }\n else {\n matcher = this._addPartial(matcher._elementPartialMap, element);\n }\n }\n if (classNames) {\n for (let i = 0; i < classNames.length; i++) {\n const isTerminal = attrs.length === 0 && i === classNames.length - 1;\n const className = classNames[i];\n if (isTerminal) {\n this._addTerminal(matcher._classMap, className, selectable);\n }\n else {\n matcher = this._addPartial(matcher._classPartialMap, className);\n }\n }\n }\n if (attrs) {\n for (let i = 0; i < attrs.length; i += 2) {\n const isTerminal = i === attrs.length - 2;\n const name = attrs[i];\n const value = attrs[i + 1];\n if (isTerminal) {\n const terminalMap = matcher._attrValueMap;\n let terminalValuesMap = terminalMap.get(name);\n if (!terminalValuesMap) {\n terminalValuesMap = new Map();\n terminalMap.set(name, terminalValuesMap);\n }\n this._addTerminal(terminalValuesMap, value, selectable);\n }\n else {\n const partialMap = matcher._attrValuePartialMap;\n let partialValuesMap = partialMap.get(name);\n if (!partialValuesMap) {\n partialValuesMap = new Map();\n partialMap.set(name, partialValuesMap);\n }\n matcher = this._addPartial(partialValuesMap, value);\n }\n }\n }\n }\n _addTerminal(map, name, selectable) {\n let terminalList = map.get(name);\n if (!terminalList) {\n terminalList = [];\n map.set(name, terminalList);\n }\n terminalList.push(selectable);\n }\n _addPartial(map, name) {\n let matcher = map.get(name);\n if (!matcher) {\n matcher = new SelectorMatcher();\n map.set(name, matcher);\n }\n return matcher;\n }\n /**\n * Find the objects that have been added via `addSelectable`\n * whose css selector is contained in the given css selector.\n * @param cssSelector A css selector\n * @param matchedCallback This callback will be called with the object handed into `addSelectable`\n * @return boolean true if a match was found\n */\n match(cssSelector, matchedCallback) {\n let result = false;\n const element = cssSelector.element;\n const classNames = cssSelector.classNames;\n const attrs = cssSelector.attrs;\n for (let i = 0; i < this._listContexts.length; i++) {\n this._listContexts[i].alreadyMatched = false;\n }\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\n result;\n if (classNames) {\n for (let i = 0; i < classNames.length; i++) {\n const className = classNames[i];\n result =\n this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\n result =\n this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\n result;\n }\n }\n if (attrs) {\n for (let i = 0; i < attrs.length; i += 2) {\n const name = attrs[i];\n const value = attrs[i + 1];\n const terminalValuesMap = this._attrValueMap.get(name);\n if (value) {\n result =\n this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result;\n const partialValuesMap = this._attrValuePartialMap.get(name);\n if (value) {\n result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result;\n }\n }\n return result;\n }\n /** @internal */\n _matchTerminal(map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n let selectables = map.get(name) || [];\n const starSelectables = map.get('*');\n if (starSelectables) {\n selectables = selectables.concat(starSelectables);\n }\n if (selectables.length === 0) {\n return false;\n }\n let selectable;\n let result = false;\n for (let i = 0; i < selectables.length; i++) {\n selectable = selectables[i];\n result = selectable.finalize(cssSelector, matchedCallback) || result;\n }\n return result;\n }\n /** @internal */\n _matchPartial(map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n const nestedSelector = map.get(name);\n if (!nestedSelector) {\n return false;\n }\n // TODO(perf): get rid of recursion and measure again\n // TODO(perf): don't pass the whole selector into the recursion,\n // but only the not processed parts\n return nestedSelector.match(cssSelector, matchedCallback);\n }\n}\nclass SelectorListContext {\n constructor(selectors) {\n this.selectors = selectors;\n this.alreadyMatched = false;\n }\n}\n// Store context to pass back selector and context when a selector is matched\nclass SelectorContext {\n constructor(selector, cbContext, listContext) {\n this.selector = selector;\n this.cbContext = cbContext;\n this.listContext = listContext;\n this.notSelectors = selector.notSelectors;\n }\n finalize(cssSelector, callback) {\n let result = true;\n if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) {\n const notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\n result = !notMatcher.match(cssSelector, null);\n }\n if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) {\n if (this.listContext) {\n this.listContext.alreadyMatched = true;\n }\n callback(this.selector, this.cbContext);\n }\n return result;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not\n// explicitly set.\nconst emitDistinctChangesOnlyDefaultValue = true;\nvar ViewEncapsulation;\n(function (ViewEncapsulation) {\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation || (ViewEncapsulation = {}));\nvar ChangeDetectionStrategy;\n(function (ChangeDetectionStrategy) {\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 0] = \"OnPush\";\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 1] = \"Default\";\n})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));\nconst CUSTOM_ELEMENTS_SCHEMA = {\n name: 'custom-elements'\n};\nconst NO_ERRORS_SCHEMA = {\n name: 'no-errors-schema'\n};\nconst Type$1 = Function;\nvar SecurityContext;\n(function (SecurityContext) {\n SecurityContext[SecurityContext[\"NONE\"] = 0] = \"NONE\";\n SecurityContext[SecurityContext[\"HTML\"] = 1] = \"HTML\";\n SecurityContext[SecurityContext[\"STYLE\"] = 2] = \"STYLE\";\n SecurityContext[SecurityContext[\"SCRIPT\"] = 3] = \"SCRIPT\";\n SecurityContext[SecurityContext[\"URL\"] = 4] = \"URL\";\n SecurityContext[SecurityContext[\"RESOURCE_URL\"] = 5] = \"RESOURCE_URL\";\n})(SecurityContext || (SecurityContext = {}));\nvar MissingTranslationStrategy;\n(function (MissingTranslationStrategy) {\n MissingTranslationStrategy[MissingTranslationStrategy[\"Error\"] = 0] = \"Error\";\n MissingTranslationStrategy[MissingTranslationStrategy[\"Warning\"] = 1] = \"Warning\";\n MissingTranslationStrategy[MissingTranslationStrategy[\"Ignore\"] = 2] = \"Ignore\";\n})(MissingTranslationStrategy || (MissingTranslationStrategy = {}));\nfunction parserSelectorToSimpleSelector(selector) {\n const classes = selector.classNames && selector.classNames.length ?\n [8 /* SelectorFlags.CLASS */, ...selector.classNames] :\n [];\n const elementName = selector.element && selector.element !== '*' ? selector.element : '';\n return [elementName, ...selector.attrs, ...classes];\n}\nfunction parserSelectorToNegativeSelector(selector) {\n const classes = selector.classNames && selector.classNames.length ?\n [8 /* SelectorFlags.CLASS */, ...selector.classNames] :\n [];\n if (selector.element) {\n return [\n 1 /* SelectorFlags.NOT */ | 4 /* SelectorFlags.ELEMENT */, selector.element, ...selector.attrs, ...classes\n ];\n }\n else if (selector.attrs.length) {\n return [1 /* SelectorFlags.NOT */ | 2 /* SelectorFlags.ATTRIBUTE */, ...selector.attrs, ...classes];\n }\n else {\n return selector.classNames && selector.classNames.length ?\n [1 /* SelectorFlags.NOT */ | 8 /* SelectorFlags.CLASS */, ...selector.classNames] :\n [];\n }\n}\nfunction parserSelectorToR3Selector(selector) {\n const positive = parserSelectorToSimpleSelector(selector);\n const negative = selector.notSelectors && selector.notSelectors.length ?\n selector.notSelectors.map(notSelector => parserSelectorToNegativeSelector(notSelector)) :\n [];\n return positive.concat(...negative);\n}\nfunction parseSelectorToR3Selector(selector) {\n return selector ? CssSelector.parse(selector).map(parserSelectorToR3Selector) : [];\n}\n\nvar core = /*#__PURE__*/Object.freeze({\n __proto__: null,\n emitDistinctChangesOnlyDefaultValue: emitDistinctChangesOnlyDefaultValue,\n get ViewEncapsulation () { return ViewEncapsulation; },\n get ChangeDetectionStrategy () { return ChangeDetectionStrategy; },\n CUSTOM_ELEMENTS_SCHEMA: CUSTOM_ELEMENTS_SCHEMA,\n NO_ERRORS_SCHEMA: NO_ERRORS_SCHEMA,\n Type: Type$1,\n get SecurityContext () { return SecurityContext; },\n get MissingTranslationStrategy () { return MissingTranslationStrategy; },\n parseSelectorToR3Selector: parseSelectorToR3Selector\n});\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction splitAtColon(input, defaultValues) {\n return _splitAt(input, ':', defaultValues);\n}\nfunction splitAtPeriod(input, defaultValues) {\n return _splitAt(input, '.', defaultValues);\n}\nfunction _splitAt(input, character, defaultValues) {\n const characterIndex = input.indexOf(character);\n if (characterIndex == -1)\n return defaultValues;\n return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()];\n}\nfunction noUndefined(val) {\n return val === undefined ? null : val;\n}\nfunction error(msg) {\n throw new Error(`Internal Error: ${msg}`);\n}\n// Escape characters that have a special meaning in Regular Expressions\nfunction escapeRegExp(s) {\n return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction utf8Encode(str) {\n let encoded = [];\n for (let index = 0; index < str.length; index++) {\n let codePoint = str.charCodeAt(index);\n // decode surrogate\n // see https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > (index + 1)) {\n const low = str.charCodeAt(index + 1);\n if (low >= 0xdc00 && low <= 0xdfff) {\n index++;\n codePoint = ((codePoint - 0xd800) << 10) + low - 0xdc00 + 0x10000;\n }\n }\n if (codePoint <= 0x7f) {\n encoded.push(codePoint);\n }\n else if (codePoint <= 0x7ff) {\n encoded.push(((codePoint >> 6) & 0x1F) | 0xc0, (codePoint & 0x3f) | 0x80);\n }\n else if (codePoint <= 0xffff) {\n encoded.push((codePoint >> 12) | 0xe0, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n else if (codePoint <= 0x1fffff) {\n encoded.push(((codePoint >> 18) & 0x07) | 0xf0, ((codePoint >> 12) & 0x3f) | 0x80, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n }\n return encoded;\n}\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (Array.isArray(token)) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n if (token.name) {\n return `${token.name}`;\n }\n if (!token.toString) {\n return 'object';\n }\n // WARNING: do not try to `JSON.stringify(token)` here\n // see https://github.com/angular/angular/issues/23440\n const res = token.toString();\n if (res == null) {\n return '' + res;\n }\n const newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\nclass Version {\n constructor(full) {\n this.full = full;\n const splits = full.split('.');\n this.major = splits[0];\n this.minor = splits[1];\n this.patch = splits.slice(2).join('.');\n }\n}\n// Check `global` first, because in Node tests both `global` and `window` may be defined and our\n// `_global` variable should point to the NodeJS `global` in that case. Note: Typeof/Instanceof\n// checks are considered side-effects in Terser. We explicitly mark this as side-effect free:\n// https://github.com/terser/terser/issues/250.\nconst _global = ( /* @__PURE__ */(() => (typeof global !== 'undefined' && global) || (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self))());\nfunction newArray(size, value) {\n const list = [];\n for (let i = 0; i < size; i++) {\n list.push(value);\n }\n return list;\n}\n/**\n * Partitions a given array into 2 arrays, based on a boolean value returned by the condition\n * function.\n *\n * @param arr Input array that should be partitioned\n * @param conditionFn Condition function that is called for each item in a given array and returns a\n * boolean value.\n */\nfunction partitionArray(arr, conditionFn) {\n const truthy = [];\n const falsy = [];\n for (const item of arr) {\n (conditionFn(item) ? truthy : falsy).push(item);\n }\n return [truthy, falsy];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents a big integer using a buffer of its individual digits, with the least significant\n * digit stored at the beginning of the array (little endian).\n *\n * For performance reasons, each instance is mutable. The addition operation can be done in-place\n * to reduce memory pressure of allocation for the digits array.\n */\nclass BigInteger {\n /**\n * Creates a big integer using its individual digits in little endian storage.\n */\n constructor(digits) {\n this.digits = digits;\n }\n static zero() {\n return new BigInteger([0]);\n }\n static one() {\n return new BigInteger([1]);\n }\n /**\n * Creates a clone of this instance.\n */\n clone() {\n return new BigInteger(this.digits.slice());\n }\n /**\n * Returns a new big integer with the sum of `this` and `other` as its value. This does not mutate\n * `this` but instead returns a new instance, unlike `addToSelf`.\n */\n add(other) {\n const result = this.clone();\n result.addToSelf(other);\n return result;\n }\n /**\n * Adds `other` to the instance itself, thereby mutating its value.\n */\n addToSelf(other) {\n const maxNrOfDigits = Math.max(this.digits.length, other.digits.length);\n let carry = 0;\n for (let i = 0; i < maxNrOfDigits; i++) {\n let digitSum = carry;\n if (i < this.digits.length) {\n digitSum += this.digits[i];\n }\n if (i < other.digits.length) {\n digitSum += other.digits[i];\n }\n if (digitSum >= 10) {\n this.digits[i] = digitSum - 10;\n carry = 1;\n }\n else {\n this.digits[i] = digitSum;\n carry = 0;\n }\n }\n // Apply a remaining carry if needed.\n if (carry > 0) {\n this.digits[maxNrOfDigits] = 1;\n }\n }\n /**\n * Builds the decimal string representation of the big integer. As this is stored in\n * little endian, the digits are concatenated in reverse order.\n */\n toString() {\n let res = '';\n for (let i = this.digits.length - 1; i >= 0; i--) {\n res += this.digits[i];\n }\n return res;\n }\n}\n/**\n * Represents a big integer which is optimized for multiplication operations, as its power-of-twos\n * are memoized. See `multiplyBy()` for details on the multiplication algorithm.\n */\nclass BigIntForMultiplication {\n constructor(value) {\n this.powerOfTwos = [value];\n }\n /**\n * Returns the big integer itself.\n */\n getValue() {\n return this.powerOfTwos[0];\n }\n /**\n * Computes the value for `num * b`, where `num` is a JS number and `b` is a big integer. The\n * value for `b` is represented by a storage model that is optimized for this computation.\n *\n * This operation is implemented in N(log2(num)) by continuous halving of the number, where the\n * least-significant bit (LSB) is tested in each iteration. If the bit is set, the bit's index is\n * used as exponent into the power-of-two multiplication of `b`.\n *\n * As an example, consider the multiplication num=42, b=1337. In binary 42 is 0b00101010 and the\n * algorithm unrolls into the following iterations:\n *\n * Iteration | num | LSB | b * 2^iter | Add? | product\n * -----------|------------|------|------------|------|--------\n * 0 | 0b00101010 | 0 | 1337 | No | 0\n * 1 | 0b00010101 | 1 | 2674 | Yes | 2674\n * 2 | 0b00001010 | 0 | 5348 | No | 2674\n * 3 | 0b00000101 | 1 | 10696 | Yes | 13370\n * 4 | 0b00000010 | 0 | 21392 | No | 13370\n * 5 | 0b00000001 | 1 | 42784 | Yes | 56154\n * 6 | 0b00000000 | 0 | 85568 | No | 56154\n *\n * The computed product of 56154 is indeed the correct result.\n *\n * The `BigIntForMultiplication` representation for a big integer provides memoized access to the\n * power-of-two values to reduce the workload in computing those values.\n */\n multiplyBy(num) {\n const product = BigInteger.zero();\n this.multiplyByAndAddTo(num, product);\n return product;\n }\n /**\n * See `multiplyBy()` for details. This function allows for the computed product to be added\n * directly to the provided result big integer.\n */\n multiplyByAndAddTo(num, result) {\n for (let exponent = 0; num !== 0; num = num >>> 1, exponent++) {\n if (num & 1) {\n const value = this.getMultipliedByPowerOfTwo(exponent);\n result.addToSelf(value);\n }\n }\n }\n /**\n * Computes and memoizes the big integer value for `this.number * 2^exponent`.\n */\n getMultipliedByPowerOfTwo(exponent) {\n // Compute the powers up until the requested exponent, where each value is computed from its\n // predecessor. This is simple as `this.number * 2^(exponent - 1)` only has to be doubled (i.e.\n // added to itself) to reach `this.number * 2^exponent`.\n for (let i = this.powerOfTwos.length; i <= exponent; i++) {\n const previousPower = this.powerOfTwos[i - 1];\n this.powerOfTwos[i] = previousPower.add(previousPower);\n }\n return this.powerOfTwos[exponent];\n }\n}\n/**\n * Represents an exponentiation operation for the provided base, of which exponents are computed and\n * memoized. The results are represented by a `BigIntForMultiplication` which is tailored for\n * multiplication operations by memoizing the power-of-twos. This effectively results in a matrix\n * representation that is lazily computed upon request.\n */\nclass BigIntExponentiation {\n constructor(base) {\n this.base = base;\n this.exponents = [new BigIntForMultiplication(BigInteger.one())];\n }\n /**\n * Compute the value for `this.base^exponent`, resulting in a big integer that is optimized for\n * further multiplication operations.\n */\n toThePowerOf(exponent) {\n // Compute the results up until the requested exponent, where every value is computed from its\n // predecessor. This is because `this.base^(exponent - 1)` only has to be multiplied by `base`\n // to reach `this.base^exponent`.\n for (let i = this.exponents.length; i <= exponent; i++) {\n const value = this.exponents[i - 1].multiplyBy(this.base);\n this.exponents[i] = new BigIntForMultiplication(value);\n }\n return this.exponents[exponent];\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Return the message id or compute it using the XLIFF1 digest.\n */\nfunction digest$1(message) {\n return message.id || computeDigest(message);\n}\n/**\n * Compute the message id using the XLIFF1 digest.\n */\nfunction computeDigest(message) {\n return sha1(serializeNodes(message.nodes).join('') + `[${message.meaning}]`);\n}\n/**\n * Return the message id or compute it using the XLIFF2/XMB/$localize digest.\n */\nfunction decimalDigest(message) {\n return message.id || computeDecimalDigest(message);\n}\n/**\n * Compute the message id using the XLIFF2/XMB/$localize digest.\n */\nfunction computeDecimalDigest(message) {\n const visitor = new _SerializerIgnoreIcuExpVisitor();\n const parts = message.nodes.map(a => a.visit(visitor, null));\n return computeMsgId(parts.join(''), message.meaning);\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * The visitor is also used in the i18n parser tests\n *\n * @internal\n */\nclass _SerializerVisitor {\n visitText(text, context) {\n return text.value;\n }\n visitContainer(container, context) {\n return `[${container.children.map(child => child.visit(this)).join(', ')}]`;\n }\n visitIcu(icu, context) {\n const strCases = Object.keys(icu.cases).map((k) => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expression}, ${icu.type}, ${strCases.join(', ')}}`;\n }\n visitTagPlaceholder(ph, context) {\n return ph.isVoid ?\n `` :\n `${ph.children.map(child => child.visit(this)).join(', ')}`;\n }\n visitPlaceholder(ph, context) {\n return ph.value ? `${ph.value}` : ``;\n }\n visitIcuPlaceholder(ph, context) {\n return `${ph.value.visit(this)}`;\n }\n}\nconst serializerVisitor$1 = new _SerializerVisitor();\nfunction serializeNodes(nodes) {\n return nodes.map(a => a.visit(serializerVisitor$1, null));\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * Ignore the ICU expressions so that message IDs stays identical if only the expression changes.\n *\n * @internal\n */\nclass _SerializerIgnoreIcuExpVisitor extends _SerializerVisitor {\n visitIcu(icu, context) {\n let strCases = Object.keys(icu.cases).map((k) => `${k} {${icu.cases[k].visit(this)}}`);\n // Do not take the expression into account\n return `{${icu.type}, ${strCases.join(', ')}}`;\n }\n}\n/**\n * Compute the SHA1 of the given string\n *\n * see https://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n *\n * WARNING: this function has not been designed not tested with security in mind.\n * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT.\n */\nfunction sha1(str) {\n const utf8 = utf8Encode(str);\n const words32 = bytesToWords32(utf8, Endian.Big);\n const len = utf8.length * 8;\n const w = newArray(80);\n let a = 0x67452301, b = 0xefcdab89, c = 0x98badcfe, d = 0x10325476, e = 0xc3d2e1f0;\n words32[len >> 5] |= 0x80 << (24 - len % 32);\n words32[((len + 64 >> 9) << 4) + 15] = len;\n for (let i = 0; i < words32.length; i += 16) {\n const h0 = a, h1 = b, h2 = c, h3 = d, h4 = e;\n for (let j = 0; j < 80; j++) {\n if (j < 16) {\n w[j] = words32[i + j];\n }\n else {\n w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n const fkVal = fk(j, b, c, d);\n const f = fkVal[0];\n const k = fkVal[1];\n const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n e = d;\n d = c;\n c = rol32(b, 30);\n b = a;\n a = temp;\n }\n a = add32(a, h0);\n b = add32(b, h1);\n c = add32(c, h2);\n d = add32(d, h3);\n e = add32(e, h4);\n }\n return bytesToHexString(words32ToByteString([a, b, c, d, e]));\n}\nfunction fk(index, b, c, d) {\n if (index < 20) {\n return [(b & c) | (~b & d), 0x5a827999];\n }\n if (index < 40) {\n return [b ^ c ^ d, 0x6ed9eba1];\n }\n if (index < 60) {\n return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc];\n }\n return [b ^ c ^ d, 0xca62c1d6];\n}\n/**\n * Compute the fingerprint of the given string\n *\n * The output is 64 bit number encoded as a decimal string\n *\n * based on:\n * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java\n */\nfunction fingerprint(str) {\n const utf8 = utf8Encode(str);\n let hi = hash32(utf8, 0);\n let lo = hash32(utf8, 102072);\n if (hi == 0 && (lo == 0 || lo == 1)) {\n hi = hi ^ 0x130f9bef;\n lo = lo ^ -0x6b5f56d8;\n }\n return [hi, lo];\n}\nfunction computeMsgId(msg, meaning = '') {\n let msgFingerprint = fingerprint(msg);\n if (meaning) {\n const meaningFingerprint = fingerprint(meaning);\n msgFingerprint = add64(rol64(msgFingerprint, 1), meaningFingerprint);\n }\n const hi = msgFingerprint[0];\n const lo = msgFingerprint[1];\n return wordsToDecimalString(hi & 0x7fffffff, lo);\n}\nfunction hash32(bytes, c) {\n let a = 0x9e3779b9, b = 0x9e3779b9;\n let i;\n const len = bytes.length;\n for (i = 0; i + 12 <= len; i += 12) {\n a = add32(a, wordAt(bytes, i, Endian.Little));\n b = add32(b, wordAt(bytes, i + 4, Endian.Little));\n c = add32(c, wordAt(bytes, i + 8, Endian.Little));\n const res = mix(a, b, c);\n a = res[0], b = res[1], c = res[2];\n }\n a = add32(a, wordAt(bytes, i, Endian.Little));\n b = add32(b, wordAt(bytes, i + 4, Endian.Little));\n // the first byte of c is reserved for the length\n c = add32(c, len);\n c = add32(c, wordAt(bytes, i + 8, Endian.Little) << 8);\n return mix(a, b, c)[2];\n}\n// clang-format off\nfunction mix(a, b, c) {\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 13;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 8;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 13;\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 12;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 16;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 5;\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 3;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 10;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 15;\n return [a, b, c];\n}\n// clang-format on\n// Utils\nvar Endian;\n(function (Endian) {\n Endian[Endian[\"Little\"] = 0] = \"Little\";\n Endian[Endian[\"Big\"] = 1] = \"Big\";\n})(Endian || (Endian = {}));\nfunction add32(a, b) {\n return add32to64(a, b)[1];\n}\nfunction add32to64(a, b) {\n const low = (a & 0xffff) + (b & 0xffff);\n const high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n return [high >>> 16, (high << 16) | (low & 0xffff)];\n}\nfunction add64(a, b) {\n const ah = a[0], al = a[1];\n const bh = b[0], bl = b[1];\n const result = add32to64(al, bl);\n const carry = result[0];\n const l = result[1];\n const h = add32(add32(ah, bh), carry);\n return [h, l];\n}\nfunction sub32(a, b) {\n const low = (a & 0xffff) - (b & 0xffff);\n const high = (a >> 16) - (b >> 16) + (low >> 16);\n return (high << 16) | (low & 0xffff);\n}\n// Rotate a 32b number left `count` position\nfunction rol32(a, count) {\n return (a << count) | (a >>> (32 - count));\n}\n// Rotate a 64b number left `count` position\nfunction rol64(num, count) {\n const hi = num[0], lo = num[1];\n const h = (hi << count) | (lo >>> (32 - count));\n const l = (lo << count) | (hi >>> (32 - count));\n return [h, l];\n}\nfunction bytesToWords32(bytes, endian) {\n const size = (bytes.length + 3) >>> 2;\n const words32 = [];\n for (let i = 0; i < size; i++) {\n words32[i] = wordAt(bytes, i * 4, endian);\n }\n return words32;\n}\nfunction byteAt(bytes, index) {\n return index >= bytes.length ? 0 : bytes[index];\n}\nfunction wordAt(bytes, index, endian) {\n let word = 0;\n if (endian === Endian.Big) {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << (24 - 8 * i);\n }\n }\n else {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << 8 * i;\n }\n }\n return word;\n}\nfunction words32ToByteString(words32) {\n return words32.reduce((bytes, word) => bytes.concat(word32ToByteString(word)), []);\n}\nfunction word32ToByteString(word) {\n let bytes = [];\n for (let i = 0; i < 4; i++) {\n bytes.push((word >>> 8 * (3 - i)) & 0xff);\n }\n return bytes;\n}\nfunction bytesToHexString(bytes) {\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n const b = byteAt(bytes, i);\n hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16);\n }\n return hex.toLowerCase();\n}\n/**\n * Create a shared exponentiation pool for base-256 computations. This shared pool provides memoized\n * power-of-256 results with memoized power-of-two computations for efficient multiplication.\n *\n * For our purposes, this can be safely stored as a global without memory concerns. The reason is\n * that we encode two words, so only need the 0th (for the low word) and 4th (for the high word)\n * exponent.\n */\nconst base256 = new BigIntExponentiation(256);\n/**\n * Represents two 32-bit words as a single decimal number. This requires a big integer storage\n * model as JS numbers are not accurate enough to represent the 64-bit number.\n *\n * Based on https://www.danvk.org/hex2dec.html\n */\nfunction wordsToDecimalString(hi, lo) {\n // Encode the four bytes in lo in the lower digits of the decimal number.\n // Note: the multiplication results in lo itself but represented by a big integer using its\n // decimal digits.\n const decimal = base256.toThePowerOf(0).multiplyBy(lo);\n // Encode the four bytes in hi above the four lo bytes. lo is a maximum of (2^8)^4, which is why\n // this multiplication factor is applied.\n base256.toThePowerOf(4).multiplyByAndAddTo(hi, decimal);\n return decimal.toString();\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n//// Types\nvar TypeModifier;\n(function (TypeModifier) {\n TypeModifier[TypeModifier[\"None\"] = 0] = \"None\";\n TypeModifier[TypeModifier[\"Const\"] = 1] = \"Const\";\n})(TypeModifier || (TypeModifier = {}));\nclass Type {\n constructor(modifiers = TypeModifier.None) {\n this.modifiers = modifiers;\n }\n hasModifier(modifier) {\n return (this.modifiers & modifier) !== 0;\n }\n}\nvar BuiltinTypeName;\n(function (BuiltinTypeName) {\n BuiltinTypeName[BuiltinTypeName[\"Dynamic\"] = 0] = \"Dynamic\";\n BuiltinTypeName[BuiltinTypeName[\"Bool\"] = 1] = \"Bool\";\n BuiltinTypeName[BuiltinTypeName[\"String\"] = 2] = \"String\";\n BuiltinTypeName[BuiltinTypeName[\"Int\"] = 3] = \"Int\";\n BuiltinTypeName[BuiltinTypeName[\"Number\"] = 4] = \"Number\";\n BuiltinTypeName[BuiltinTypeName[\"Function\"] = 5] = \"Function\";\n BuiltinTypeName[BuiltinTypeName[\"Inferred\"] = 6] = \"Inferred\";\n BuiltinTypeName[BuiltinTypeName[\"None\"] = 7] = \"None\";\n})(BuiltinTypeName || (BuiltinTypeName = {}));\nclass BuiltinType extends Type {\n constructor(name, modifiers) {\n super(modifiers);\n this.name = name;\n }\n visitType(visitor, context) {\n return visitor.visitBuiltinType(this, context);\n }\n}\nclass ExpressionType extends Type {\n constructor(value, modifiers, typeParams = null) {\n super(modifiers);\n this.value = value;\n this.typeParams = typeParams;\n }\n visitType(visitor, context) {\n return visitor.visitExpressionType(this, context);\n }\n}\nclass ArrayType extends Type {\n constructor(of, modifiers) {\n super(modifiers);\n this.of = of;\n }\n visitType(visitor, context) {\n return visitor.visitArrayType(this, context);\n }\n}\nclass MapType extends Type {\n constructor(valueType, modifiers) {\n super(modifiers);\n this.valueType = valueType || null;\n }\n visitType(visitor, context) {\n return visitor.visitMapType(this, context);\n }\n}\nconst DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\nconst INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);\nconst BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\nconst INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\nconst NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\nconst STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\nconst FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\nconst NONE_TYPE = new BuiltinType(BuiltinTypeName.None);\n///// Expressions\nvar UnaryOperator;\n(function (UnaryOperator) {\n UnaryOperator[UnaryOperator[\"Minus\"] = 0] = \"Minus\";\n UnaryOperator[UnaryOperator[\"Plus\"] = 1] = \"Plus\";\n})(UnaryOperator || (UnaryOperator = {}));\nvar BinaryOperator;\n(function (BinaryOperator) {\n BinaryOperator[BinaryOperator[\"Equals\"] = 0] = \"Equals\";\n BinaryOperator[BinaryOperator[\"NotEquals\"] = 1] = \"NotEquals\";\n BinaryOperator[BinaryOperator[\"Identical\"] = 2] = \"Identical\";\n BinaryOperator[BinaryOperator[\"NotIdentical\"] = 3] = \"NotIdentical\";\n BinaryOperator[BinaryOperator[\"Minus\"] = 4] = \"Minus\";\n BinaryOperator[BinaryOperator[\"Plus\"] = 5] = \"Plus\";\n BinaryOperator[BinaryOperator[\"Divide\"] = 6] = \"Divide\";\n BinaryOperator[BinaryOperator[\"Multiply\"] = 7] = \"Multiply\";\n BinaryOperator[BinaryOperator[\"Modulo\"] = 8] = \"Modulo\";\n BinaryOperator[BinaryOperator[\"And\"] = 9] = \"And\";\n BinaryOperator[BinaryOperator[\"Or\"] = 10] = \"Or\";\n BinaryOperator[BinaryOperator[\"BitwiseAnd\"] = 11] = \"BitwiseAnd\";\n BinaryOperator[BinaryOperator[\"Lower\"] = 12] = \"Lower\";\n BinaryOperator[BinaryOperator[\"LowerEquals\"] = 13] = \"LowerEquals\";\n BinaryOperator[BinaryOperator[\"Bigger\"] = 14] = \"Bigger\";\n BinaryOperator[BinaryOperator[\"BiggerEquals\"] = 15] = \"BiggerEquals\";\n BinaryOperator[BinaryOperator[\"NullishCoalesce\"] = 16] = \"NullishCoalesce\";\n})(BinaryOperator || (BinaryOperator = {}));\nfunction nullSafeIsEquivalent(base, other) {\n if (base == null || other == null) {\n return base == other;\n }\n return base.isEquivalent(other);\n}\nfunction areAllEquivalentPredicate(base, other, equivalentPredicate) {\n const len = base.length;\n if (len !== other.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (!equivalentPredicate(base[i], other[i])) {\n return false;\n }\n }\n return true;\n}\nfunction areAllEquivalent(base, other) {\n return areAllEquivalentPredicate(base, other, (baseElement, otherElement) => baseElement.isEquivalent(otherElement));\n}\nclass Expression {\n constructor(type, sourceSpan) {\n this.type = type || null;\n this.sourceSpan = sourceSpan || null;\n }\n prop(name, sourceSpan) {\n return new ReadPropExpr(this, name, null, sourceSpan);\n }\n key(index, type, sourceSpan) {\n return new ReadKeyExpr(this, index, type, sourceSpan);\n }\n callFn(params, sourceSpan, pure) {\n return new InvokeFunctionExpr(this, params, null, sourceSpan, pure);\n }\n instantiate(params, type, sourceSpan) {\n return new InstantiateExpr(this, params, type, sourceSpan);\n }\n conditional(trueCase, falseCase = null, sourceSpan) {\n return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan);\n }\n equals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan);\n }\n notEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan);\n }\n identical(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan);\n }\n notIdentical(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan);\n }\n minus(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan);\n }\n plus(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan);\n }\n divide(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan);\n }\n multiply(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan);\n }\n modulo(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan);\n }\n and(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan);\n }\n bitwiseAnd(rhs, sourceSpan, parens = true) {\n return new BinaryOperatorExpr(BinaryOperator.BitwiseAnd, this, rhs, null, sourceSpan, parens);\n }\n or(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan);\n }\n lower(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan);\n }\n lowerEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan);\n }\n bigger(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan);\n }\n biggerEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan);\n }\n isBlank(sourceSpan) {\n // Note: We use equals by purpose here to compare to null and undefined in JS.\n // We use the typed null to allow strictNullChecks to narrow types.\n return this.equals(TYPED_NULL_EXPR, sourceSpan);\n }\n nullishCoalesce(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NullishCoalesce, this, rhs, null, sourceSpan);\n }\n toStmt() {\n return new ExpressionStatement(this, null);\n }\n}\nclass ReadVarExpr extends Expression {\n constructor(name, type, sourceSpan) {\n super(type, sourceSpan);\n this.name = name;\n }\n isEquivalent(e) {\n return e instanceof ReadVarExpr && this.name === e.name;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitReadVarExpr(this, context);\n }\n set(value) {\n return new WriteVarExpr(this.name, value, null, this.sourceSpan);\n }\n}\nclass TypeofExpr extends Expression {\n constructor(expr, type, sourceSpan) {\n super(type, sourceSpan);\n this.expr = expr;\n }\n visitExpression(visitor, context) {\n return visitor.visitTypeofExpr(this, context);\n }\n isEquivalent(e) {\n return e instanceof TypeofExpr && e.expr.isEquivalent(this.expr);\n }\n isConstant() {\n return this.expr.isConstant();\n }\n}\nclass WrappedNodeExpr extends Expression {\n constructor(node, type, sourceSpan) {\n super(type, sourceSpan);\n this.node = node;\n }\n isEquivalent(e) {\n return e instanceof WrappedNodeExpr && this.node === e.node;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitWrappedNodeExpr(this, context);\n }\n}\nclass WriteVarExpr extends Expression {\n constructor(name, value, type, sourceSpan) {\n super(type || value.type, sourceSpan);\n this.name = name;\n this.value = value;\n }\n isEquivalent(e) {\n return e instanceof WriteVarExpr && this.name === e.name && this.value.isEquivalent(e.value);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitWriteVarExpr(this, context);\n }\n toDeclStmt(type, modifiers) {\n return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan);\n }\n toConstDecl() {\n return this.toDeclStmt(INFERRED_TYPE, StmtModifier.Final);\n }\n}\nclass WriteKeyExpr extends Expression {\n constructor(receiver, index, value, type, sourceSpan) {\n super(type || value.type, sourceSpan);\n this.receiver = receiver;\n this.index = index;\n this.value = value;\n }\n isEquivalent(e) {\n return e instanceof WriteKeyExpr && this.receiver.isEquivalent(e.receiver) &&\n this.index.isEquivalent(e.index) && this.value.isEquivalent(e.value);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitWriteKeyExpr(this, context);\n }\n}\nclass WritePropExpr extends Expression {\n constructor(receiver, name, value, type, sourceSpan) {\n super(type || value.type, sourceSpan);\n this.receiver = receiver;\n this.name = name;\n this.value = value;\n }\n isEquivalent(e) {\n return e instanceof WritePropExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name && this.value.isEquivalent(e.value);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitWritePropExpr(this, context);\n }\n}\nclass InvokeFunctionExpr extends Expression {\n constructor(fn, args, type, sourceSpan, pure = false) {\n super(type, sourceSpan);\n this.fn = fn;\n this.args = args;\n this.pure = pure;\n }\n isEquivalent(e) {\n return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) &&\n areAllEquivalent(this.args, e.args) && this.pure === e.pure;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitInvokeFunctionExpr(this, context);\n }\n}\nclass TaggedTemplateExpr extends Expression {\n constructor(tag, template, type, sourceSpan) {\n super(type, sourceSpan);\n this.tag = tag;\n this.template = template;\n }\n isEquivalent(e) {\n return e instanceof TaggedTemplateExpr && this.tag.isEquivalent(e.tag) &&\n areAllEquivalentPredicate(this.template.elements, e.template.elements, (a, b) => a.text === b.text) &&\n areAllEquivalent(this.template.expressions, e.template.expressions);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitTaggedTemplateExpr(this, context);\n }\n}\nclass InstantiateExpr extends Expression {\n constructor(classExpr, args, type, sourceSpan) {\n super(type, sourceSpan);\n this.classExpr = classExpr;\n this.args = args;\n }\n isEquivalent(e) {\n return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) &&\n areAllEquivalent(this.args, e.args);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitInstantiateExpr(this, context);\n }\n}\nclass LiteralExpr extends Expression {\n constructor(value, type, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n }\n isEquivalent(e) {\n return e instanceof LiteralExpr && this.value === e.value;\n }\n isConstant() {\n return true;\n }\n visitExpression(visitor, context) {\n return visitor.visitLiteralExpr(this, context);\n }\n}\nclass TemplateLiteral {\n constructor(elements, expressions) {\n this.elements = elements;\n this.expressions = expressions;\n }\n}\nclass TemplateLiteralElement {\n constructor(text, sourceSpan, rawText) {\n this.text = text;\n this.sourceSpan = sourceSpan;\n // If `rawText` is not provided, try to extract the raw string from its\n // associated `sourceSpan`. If that is also not available, \"fake\" the raw\n // string instead by escaping the following control sequences:\n // - \"\\\" would otherwise indicate that the next character is a control character.\n // - \"`\" and \"${\" are template string control sequences that would otherwise prematurely\n // indicate the end of the template literal element.\n this.rawText =\n rawText ?? sourceSpan?.toString() ?? escapeForTemplateLiteral(escapeSlashes(text));\n }\n}\nclass LiteralPiece {\n constructor(text, sourceSpan) {\n this.text = text;\n this.sourceSpan = sourceSpan;\n }\n}\nclass PlaceholderPiece {\n /**\n * Create a new instance of a `PlaceholderPiece`.\n *\n * @param text the name of this placeholder (e.g. `PH_1`).\n * @param sourceSpan the location of this placeholder in its localized message the source code.\n * @param associatedMessage reference to another message that this placeholder is associated with.\n * The `associatedMessage` is mainly used to provide a relationship to an ICU message that has\n * been extracted out from the message containing the placeholder.\n */\n constructor(text, sourceSpan, associatedMessage) {\n this.text = text;\n this.sourceSpan = sourceSpan;\n this.associatedMessage = associatedMessage;\n }\n}\nconst MEANING_SEPARATOR$1 = '|';\nconst ID_SEPARATOR$1 = '@@';\nconst LEGACY_ID_INDICATOR = '␟';\nclass LocalizedString extends Expression {\n constructor(metaBlock, messageParts, placeHolderNames, expressions, sourceSpan) {\n super(STRING_TYPE, sourceSpan);\n this.metaBlock = metaBlock;\n this.messageParts = messageParts;\n this.placeHolderNames = placeHolderNames;\n this.expressions = expressions;\n }\n isEquivalent(e) {\n // return e instanceof LocalizedString && this.message === e.message;\n return false;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitLocalizedString(this, context);\n }\n /**\n * Serialize the given `meta` and `messagePart` into \"cooked\" and \"raw\" strings that can be used\n * in a `$localize` tagged string. The format of the metadata is the same as that parsed by\n * `parseI18nMeta()`.\n *\n * @param meta The metadata to serialize\n * @param messagePart The first part of the tagged string\n */\n serializeI18nHead() {\n let metaBlock = this.metaBlock.description || '';\n if (this.metaBlock.meaning) {\n metaBlock = `${this.metaBlock.meaning}${MEANING_SEPARATOR$1}${metaBlock}`;\n }\n if (this.metaBlock.customId) {\n metaBlock = `${metaBlock}${ID_SEPARATOR$1}${this.metaBlock.customId}`;\n }\n if (this.metaBlock.legacyIds) {\n this.metaBlock.legacyIds.forEach(legacyId => {\n metaBlock = `${metaBlock}${LEGACY_ID_INDICATOR}${legacyId}`;\n });\n }\n return createCookedRawString(metaBlock, this.messageParts[0].text, this.getMessagePartSourceSpan(0));\n }\n getMessagePartSourceSpan(i) {\n return this.messageParts[i]?.sourceSpan ?? this.sourceSpan;\n }\n getPlaceholderSourceSpan(i) {\n return this.placeHolderNames[i]?.sourceSpan ?? this.expressions[i]?.sourceSpan ??\n this.sourceSpan;\n }\n /**\n * Serialize the given `placeholderName` and `messagePart` into \"cooked\" and \"raw\" strings that\n * can be used in a `$localize` tagged string.\n *\n * The format is `:[@@]:`.\n *\n * The `associated-id` is the message id of the (usually an ICU) message to which this placeholder\n * refers.\n *\n * @param partIndex The index of the message part to serialize.\n */\n serializeI18nTemplatePart(partIndex) {\n const placeholder = this.placeHolderNames[partIndex - 1];\n const messagePart = this.messageParts[partIndex];\n let metaBlock = placeholder.text;\n if (placeholder.associatedMessage?.legacyIds.length === 0) {\n metaBlock += `${ID_SEPARATOR$1}${computeMsgId(placeholder.associatedMessage.messageString, placeholder.associatedMessage.meaning)}`;\n }\n return createCookedRawString(metaBlock, messagePart.text, this.getMessagePartSourceSpan(partIndex));\n }\n}\nconst escapeSlashes = (str) => str.replace(/\\\\/g, '\\\\\\\\');\nconst escapeStartingColon = (str) => str.replace(/^:/, '\\\\:');\nconst escapeColons = (str) => str.replace(/:/g, '\\\\:');\nconst escapeForTemplateLiteral = (str) => str.replace(/`/g, '\\\\`').replace(/\\${/g, '$\\\\{');\n/**\n * Creates a `{cooked, raw}` object from the `metaBlock` and `messagePart`.\n *\n * The `raw` text must have various character sequences escaped:\n * * \"\\\" would otherwise indicate that the next character is a control character.\n * * \"`\" and \"${\" are template string control sequences that would otherwise prematurely indicate\n * the end of a message part.\n * * \":\" inside a metablock would prematurely indicate the end of the metablock.\n * * \":\" at the start of a messagePart with no metablock would erroneously indicate the start of a\n * metablock.\n *\n * @param metaBlock Any metadata that should be prepended to the string\n * @param messagePart The message part of the string\n */\nfunction createCookedRawString(metaBlock, messagePart, range) {\n if (metaBlock === '') {\n return {\n cooked: messagePart,\n raw: escapeForTemplateLiteral(escapeStartingColon(escapeSlashes(messagePart))),\n range,\n };\n }\n else {\n return {\n cooked: `:${metaBlock}:${messagePart}`,\n raw: escapeForTemplateLiteral(`:${escapeColons(escapeSlashes(metaBlock))}:${escapeSlashes(messagePart)}`),\n range,\n };\n }\n}\nclass ExternalExpr extends Expression {\n constructor(value, type, typeParams = null, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n this.typeParams = typeParams;\n }\n isEquivalent(e) {\n return e instanceof ExternalExpr && this.value.name === e.value.name &&\n this.value.moduleName === e.value.moduleName && this.value.runtime === e.value.runtime;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitExternalExpr(this, context);\n }\n}\nclass ExternalReference {\n constructor(moduleName, name, runtime) {\n this.moduleName = moduleName;\n this.name = name;\n this.runtime = runtime;\n }\n}\nclass ConditionalExpr extends Expression {\n constructor(condition, trueCase, falseCase = null, type, sourceSpan) {\n super(type || trueCase.type, sourceSpan);\n this.condition = condition;\n this.falseCase = falseCase;\n this.trueCase = trueCase;\n }\n isEquivalent(e) {\n return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) &&\n this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitConditionalExpr(this, context);\n }\n}\nclass NotExpr extends Expression {\n constructor(condition, sourceSpan) {\n super(BOOL_TYPE, sourceSpan);\n this.condition = condition;\n }\n isEquivalent(e) {\n return e instanceof NotExpr && this.condition.isEquivalent(e.condition);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitNotExpr(this, context);\n }\n}\nclass FnParam {\n constructor(name, type = null) {\n this.name = name;\n this.type = type;\n }\n isEquivalent(param) {\n return this.name === param.name;\n }\n}\nclass FunctionExpr extends Expression {\n constructor(params, statements, type, sourceSpan, name) {\n super(type, sourceSpan);\n this.params = params;\n this.statements = statements;\n this.name = name;\n }\n isEquivalent(e) {\n return e instanceof FunctionExpr && areAllEquivalent(this.params, e.params) &&\n areAllEquivalent(this.statements, e.statements);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitFunctionExpr(this, context);\n }\n toDeclStmt(name, modifiers) {\n return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan);\n }\n}\nclass UnaryOperatorExpr extends Expression {\n constructor(operator, expr, type, sourceSpan, parens = true) {\n super(type || NUMBER_TYPE, sourceSpan);\n this.operator = operator;\n this.expr = expr;\n this.parens = parens;\n }\n isEquivalent(e) {\n return e instanceof UnaryOperatorExpr && this.operator === e.operator &&\n this.expr.isEquivalent(e.expr);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitUnaryOperatorExpr(this, context);\n }\n}\nclass BinaryOperatorExpr extends Expression {\n constructor(operator, lhs, rhs, type, sourceSpan, parens = true) {\n super(type || lhs.type, sourceSpan);\n this.operator = operator;\n this.rhs = rhs;\n this.parens = parens;\n this.lhs = lhs;\n }\n isEquivalent(e) {\n return e instanceof BinaryOperatorExpr && this.operator === e.operator &&\n this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitBinaryOperatorExpr(this, context);\n }\n}\nclass ReadPropExpr extends Expression {\n constructor(receiver, name, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.name = name;\n }\n isEquivalent(e) {\n return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitReadPropExpr(this, context);\n }\n set(value) {\n return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan);\n }\n}\nclass ReadKeyExpr extends Expression {\n constructor(receiver, index, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.index = index;\n }\n isEquivalent(e) {\n return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) &&\n this.index.isEquivalent(e.index);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitReadKeyExpr(this, context);\n }\n set(value) {\n return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan);\n }\n}\nclass LiteralArrayExpr extends Expression {\n constructor(entries, type, sourceSpan) {\n super(type, sourceSpan);\n this.entries = entries;\n }\n isConstant() {\n return this.entries.every(e => e.isConstant());\n }\n isEquivalent(e) {\n return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries);\n }\n visitExpression(visitor, context) {\n return visitor.visitLiteralArrayExpr(this, context);\n }\n}\nclass LiteralMapEntry {\n constructor(key, value, quoted) {\n this.key = key;\n this.value = value;\n this.quoted = quoted;\n }\n isEquivalent(e) {\n return this.key === e.key && this.value.isEquivalent(e.value);\n }\n}\nclass LiteralMapExpr extends Expression {\n constructor(entries, type, sourceSpan) {\n super(type, sourceSpan);\n this.entries = entries;\n this.valueType = null;\n if (type) {\n this.valueType = type.valueType;\n }\n }\n isEquivalent(e) {\n return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries);\n }\n isConstant() {\n return this.entries.every(e => e.value.isConstant());\n }\n visitExpression(visitor, context) {\n return visitor.visitLiteralMapExpr(this, context);\n }\n}\nclass CommaExpr extends Expression {\n constructor(parts, sourceSpan) {\n super(parts[parts.length - 1].type, sourceSpan);\n this.parts = parts;\n }\n isEquivalent(e) {\n return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitCommaExpr(this, context);\n }\n}\nconst NULL_EXPR = new LiteralExpr(null, null, null);\nconst TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null);\n//// Statements\nvar StmtModifier;\n(function (StmtModifier) {\n StmtModifier[StmtModifier[\"None\"] = 0] = \"None\";\n StmtModifier[StmtModifier[\"Final\"] = 1] = \"Final\";\n StmtModifier[StmtModifier[\"Private\"] = 2] = \"Private\";\n StmtModifier[StmtModifier[\"Exported\"] = 4] = \"Exported\";\n StmtModifier[StmtModifier[\"Static\"] = 8] = \"Static\";\n})(StmtModifier || (StmtModifier = {}));\nclass LeadingComment {\n constructor(text, multiline, trailingNewline) {\n this.text = text;\n this.multiline = multiline;\n this.trailingNewline = trailingNewline;\n }\n toString() {\n return this.multiline ? ` ${this.text} ` : this.text;\n }\n}\nclass JSDocComment extends LeadingComment {\n constructor(tags) {\n super('', /* multiline */ true, /* trailingNewline */ true);\n this.tags = tags;\n }\n toString() {\n return serializeTags(this.tags);\n }\n}\nclass Statement {\n constructor(modifiers = StmtModifier.None, sourceSpan = null, leadingComments) {\n this.modifiers = modifiers;\n this.sourceSpan = sourceSpan;\n this.leadingComments = leadingComments;\n }\n hasModifier(modifier) {\n return (this.modifiers & modifier) !== 0;\n }\n addLeadingComment(leadingComment) {\n this.leadingComments = this.leadingComments ?? [];\n this.leadingComments.push(leadingComment);\n }\n}\nclass DeclareVarStmt extends Statement {\n constructor(name, value, type, modifiers, sourceSpan, leadingComments) {\n super(modifiers, sourceSpan, leadingComments);\n this.name = name;\n this.value = value;\n this.type = type || (value && value.type) || null;\n }\n isEquivalent(stmt) {\n return stmt instanceof DeclareVarStmt && this.name === stmt.name &&\n (this.value ? !!stmt.value && this.value.isEquivalent(stmt.value) : !stmt.value);\n }\n visitStatement(visitor, context) {\n return visitor.visitDeclareVarStmt(this, context);\n }\n}\nclass DeclareFunctionStmt extends Statement {\n constructor(name, params, statements, type, modifiers, sourceSpan, leadingComments) {\n super(modifiers, sourceSpan, leadingComments);\n this.name = name;\n this.params = params;\n this.statements = statements;\n this.type = type || null;\n }\n isEquivalent(stmt) {\n return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) &&\n areAllEquivalent(this.statements, stmt.statements);\n }\n visitStatement(visitor, context) {\n return visitor.visitDeclareFunctionStmt(this, context);\n }\n}\nclass ExpressionStatement extends Statement {\n constructor(expr, sourceSpan, leadingComments) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n this.expr = expr;\n }\n isEquivalent(stmt) {\n return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr);\n }\n visitStatement(visitor, context) {\n return visitor.visitExpressionStmt(this, context);\n }\n}\nclass ReturnStatement extends Statement {\n constructor(value, sourceSpan = null, leadingComments) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n this.value = value;\n }\n isEquivalent(stmt) {\n return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value);\n }\n visitStatement(visitor, context) {\n return visitor.visitReturnStmt(this, context);\n }\n}\nclass IfStmt extends Statement {\n constructor(condition, trueCase, falseCase = [], sourceSpan, leadingComments) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n this.condition = condition;\n this.trueCase = trueCase;\n this.falseCase = falseCase;\n }\n isEquivalent(stmt) {\n return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) &&\n areAllEquivalent(this.trueCase, stmt.trueCase) &&\n areAllEquivalent(this.falseCase, stmt.falseCase);\n }\n visitStatement(visitor, context) {\n return visitor.visitIfStmt(this, context);\n }\n}\nclass RecursiveAstVisitor$1 {\n visitType(ast, context) {\n return ast;\n }\n visitExpression(ast, context) {\n if (ast.type) {\n ast.type.visitType(this, context);\n }\n return ast;\n }\n visitBuiltinType(type, context) {\n return this.visitType(type, context);\n }\n visitExpressionType(type, context) {\n type.value.visitExpression(this, context);\n if (type.typeParams !== null) {\n type.typeParams.forEach(param => this.visitType(param, context));\n }\n return this.visitType(type, context);\n }\n visitArrayType(type, context) {\n return this.visitType(type, context);\n }\n visitMapType(type, context) {\n return this.visitType(type, context);\n }\n visitWrappedNodeExpr(ast, context) {\n return ast;\n }\n visitTypeofExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitReadVarExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitWriteVarExpr(ast, context) {\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitWriteKeyExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitWritePropExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitInvokeFunctionExpr(ast, context) {\n ast.fn.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n visitTaggedTemplateExpr(ast, context) {\n ast.tag.visitExpression(this, context);\n this.visitAllExpressions(ast.template.expressions, context);\n return this.visitExpression(ast, context);\n }\n visitInstantiateExpr(ast, context) {\n ast.classExpr.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitLocalizedString(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitExternalExpr(ast, context) {\n if (ast.typeParams) {\n ast.typeParams.forEach(type => type.visitType(this, context));\n }\n return this.visitExpression(ast, context);\n }\n visitConditionalExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n ast.trueCase.visitExpression(this, context);\n ast.falseCase.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitNotExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitFunctionExpr(ast, context) {\n this.visitAllStatements(ast.statements, context);\n return this.visitExpression(ast, context);\n }\n visitUnaryOperatorExpr(ast, context) {\n ast.expr.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitBinaryOperatorExpr(ast, context) {\n ast.lhs.visitExpression(this, context);\n ast.rhs.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitReadPropExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitReadKeyExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralArrayExpr(ast, context) {\n this.visitAllExpressions(ast.entries, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralMapExpr(ast, context) {\n ast.entries.forEach((entry) => entry.value.visitExpression(this, context));\n return this.visitExpression(ast, context);\n }\n visitCommaExpr(ast, context) {\n this.visitAllExpressions(ast.parts, context);\n return this.visitExpression(ast, context);\n }\n visitAllExpressions(exprs, context) {\n exprs.forEach(expr => expr.visitExpression(this, context));\n }\n visitDeclareVarStmt(stmt, context) {\n if (stmt.value) {\n stmt.value.visitExpression(this, context);\n }\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n visitDeclareFunctionStmt(stmt, context) {\n this.visitAllStatements(stmt.statements, context);\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n visitExpressionStmt(stmt, context) {\n stmt.expr.visitExpression(this, context);\n return stmt;\n }\n visitReturnStmt(stmt, context) {\n stmt.value.visitExpression(this, context);\n return stmt;\n }\n visitIfStmt(stmt, context) {\n stmt.condition.visitExpression(this, context);\n this.visitAllStatements(stmt.trueCase, context);\n this.visitAllStatements(stmt.falseCase, context);\n return stmt;\n }\n visitAllStatements(stmts, context) {\n stmts.forEach(stmt => stmt.visitStatement(this, context));\n }\n}\nfunction leadingComment(text, multiline = false, trailingNewline = true) {\n return new LeadingComment(text, multiline, trailingNewline);\n}\nfunction jsDocComment(tags = []) {\n return new JSDocComment(tags);\n}\nfunction variable(name, type, sourceSpan) {\n return new ReadVarExpr(name, type, sourceSpan);\n}\nfunction importExpr(id, typeParams = null, sourceSpan) {\n return new ExternalExpr(id, null, typeParams, sourceSpan);\n}\nfunction importType(id, typeParams, typeModifiers) {\n return id != null ? expressionType(importExpr(id, typeParams, null), typeModifiers) : null;\n}\nfunction expressionType(expr, typeModifiers, typeParams) {\n return new ExpressionType(expr, typeModifiers, typeParams);\n}\nfunction typeofExpr(expr) {\n return new TypeofExpr(expr);\n}\nfunction literalArr(values, type, sourceSpan) {\n return new LiteralArrayExpr(values, type, sourceSpan);\n}\nfunction literalMap(values, type = null) {\n return new LiteralMapExpr(values.map(e => new LiteralMapEntry(e.key, e.value, e.quoted)), type, null);\n}\nfunction unary(operator, expr, type, sourceSpan) {\n return new UnaryOperatorExpr(operator, expr, type, sourceSpan);\n}\nfunction not(expr, sourceSpan) {\n return new NotExpr(expr, sourceSpan);\n}\nfunction fn(params, body, type, sourceSpan, name) {\n return new FunctionExpr(params, body, type, sourceSpan, name);\n}\nfunction ifStmt(condition, thenClause, elseClause, sourceSpan, leadingComments) {\n return new IfStmt(condition, thenClause, elseClause, sourceSpan, leadingComments);\n}\nfunction taggedTemplate(tag, template, type, sourceSpan) {\n return new TaggedTemplateExpr(tag, template, type, sourceSpan);\n}\nfunction literal(value, type, sourceSpan) {\n return new LiteralExpr(value, type, sourceSpan);\n}\nfunction localizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan) {\n return new LocalizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan);\n}\nfunction isNull(exp) {\n return exp instanceof LiteralExpr && exp.value === null;\n}\n/*\n * Serializes a `Tag` into a string.\n * Returns a string like \" @foo {bar} baz\" (note the leading whitespace before `@foo`).\n */\nfunction tagToString(tag) {\n let out = '';\n if (tag.tagName) {\n out += ` @${tag.tagName}`;\n }\n if (tag.text) {\n if (tag.text.match(/\\/\\*|\\*\\//)) {\n throw new Error('JSDoc text cannot contain \"/*\" and \"*/\"');\n }\n out += ' ' + tag.text.replace(/@/g, '\\\\@');\n }\n return out;\n}\nfunction serializeTags(tags) {\n if (tags.length === 0)\n return '';\n if (tags.length === 1 && tags[0].tagName && !tags[0].text) {\n // The JSDOC comment is a single simple tag: e.g `/** @tagname */`.\n return `*${tagToString(tags[0])} `;\n }\n let out = '*\\n';\n for (const tag of tags) {\n out += ' *';\n // If the tagToString is multi-line, insert \" * \" prefixes on lines.\n out += tagToString(tag).replace(/\\n/g, '\\n * ');\n out += '\\n';\n }\n out += ' ';\n return out;\n}\n\nvar output_ast = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get TypeModifier () { return TypeModifier; },\n Type: Type,\n get BuiltinTypeName () { return BuiltinTypeName; },\n BuiltinType: BuiltinType,\n ExpressionType: ExpressionType,\n ArrayType: ArrayType,\n MapType: MapType,\n DYNAMIC_TYPE: DYNAMIC_TYPE,\n INFERRED_TYPE: INFERRED_TYPE,\n BOOL_TYPE: BOOL_TYPE,\n INT_TYPE: INT_TYPE,\n NUMBER_TYPE: NUMBER_TYPE,\n STRING_TYPE: STRING_TYPE,\n FUNCTION_TYPE: FUNCTION_TYPE,\n NONE_TYPE: NONE_TYPE,\n get UnaryOperator () { return UnaryOperator; },\n get BinaryOperator () { return BinaryOperator; },\n nullSafeIsEquivalent: nullSafeIsEquivalent,\n areAllEquivalent: areAllEquivalent,\n Expression: Expression,\n ReadVarExpr: ReadVarExpr,\n TypeofExpr: TypeofExpr,\n WrappedNodeExpr: WrappedNodeExpr,\n WriteVarExpr: WriteVarExpr,\n WriteKeyExpr: WriteKeyExpr,\n WritePropExpr: WritePropExpr,\n InvokeFunctionExpr: InvokeFunctionExpr,\n TaggedTemplateExpr: TaggedTemplateExpr,\n InstantiateExpr: InstantiateExpr,\n LiteralExpr: LiteralExpr,\n TemplateLiteral: TemplateLiteral,\n TemplateLiteralElement: TemplateLiteralElement,\n LiteralPiece: LiteralPiece,\n PlaceholderPiece: PlaceholderPiece,\n LocalizedString: LocalizedString,\n ExternalExpr: ExternalExpr,\n ExternalReference: ExternalReference,\n ConditionalExpr: ConditionalExpr,\n NotExpr: NotExpr,\n FnParam: FnParam,\n FunctionExpr: FunctionExpr,\n UnaryOperatorExpr: UnaryOperatorExpr,\n BinaryOperatorExpr: BinaryOperatorExpr,\n ReadPropExpr: ReadPropExpr,\n ReadKeyExpr: ReadKeyExpr,\n LiteralArrayExpr: LiteralArrayExpr,\n LiteralMapEntry: LiteralMapEntry,\n LiteralMapExpr: LiteralMapExpr,\n CommaExpr: CommaExpr,\n NULL_EXPR: NULL_EXPR,\n TYPED_NULL_EXPR: TYPED_NULL_EXPR,\n get StmtModifier () { return StmtModifier; },\n LeadingComment: LeadingComment,\n JSDocComment: JSDocComment,\n Statement: Statement,\n DeclareVarStmt: DeclareVarStmt,\n DeclareFunctionStmt: DeclareFunctionStmt,\n ExpressionStatement: ExpressionStatement,\n ReturnStatement: ReturnStatement,\n IfStmt: IfStmt,\n RecursiveAstVisitor: RecursiveAstVisitor$1,\n leadingComment: leadingComment,\n jsDocComment: jsDocComment,\n variable: variable,\n importExpr: importExpr,\n importType: importType,\n expressionType: expressionType,\n typeofExpr: typeofExpr,\n literalArr: literalArr,\n literalMap: literalMap,\n unary: unary,\n not: not,\n fn: fn,\n ifStmt: ifStmt,\n taggedTemplate: taggedTemplate,\n literal: literal,\n localizedString: localizedString,\n isNull: isNull\n});\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst CONSTANT_PREFIX = '_c';\n/**\n * `ConstantPool` tries to reuse literal factories when two or more literals are identical.\n * We determine whether literals are identical by creating a key out of their AST using the\n * `KeyVisitor`. This constant is used to replace dynamic expressions which can't be safely\n * converted into a key. E.g. given an expression `{foo: bar()}`, since we don't know what\n * the result of `bar` will be, we create a key that looks like `{foo: }`. Note\n * that we use a variable, rather than something like `null` in order to avoid collisions.\n */\nconst UNKNOWN_VALUE_KEY = variable('');\n/**\n * Context to use when producing a key.\n *\n * This ensures we see the constant not the reference variable when producing\n * a key.\n */\nconst KEY_CONTEXT = {};\n/**\n * Generally all primitive values are excluded from the `ConstantPool`, but there is an exclusion\n * for strings that reach a certain length threshold. This constant defines the length threshold for\n * strings.\n */\nconst POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS = 50;\n/**\n * A node that is a place-holder that allows the node to be replaced when the actual\n * node is known.\n *\n * This allows the constant pool to change an expression from a direct reference to\n * a constant to a shared constant. It returns a fix-up node that is later allowed to\n * change the referenced expression.\n */\nclass FixupExpression extends Expression {\n constructor(resolved) {\n super(resolved.type);\n this.resolved = resolved;\n this.original = resolved;\n }\n visitExpression(visitor, context) {\n if (context === KEY_CONTEXT) {\n // When producing a key we want to traverse the constant not the\n // variable used to refer to it.\n return this.original.visitExpression(visitor, context);\n }\n else {\n return this.resolved.visitExpression(visitor, context);\n }\n }\n isEquivalent(e) {\n return e instanceof FixupExpression && this.resolved.isEquivalent(e.resolved);\n }\n isConstant() {\n return true;\n }\n fixup(expression) {\n this.resolved = expression;\n this.shared = true;\n }\n}\n/**\n * A constant pool allows a code emitter to share constant in an output context.\n *\n * The constant pool also supports sharing access to ivy definitions references.\n */\nclass ConstantPool {\n constructor(isClosureCompilerEnabled = false) {\n this.isClosureCompilerEnabled = isClosureCompilerEnabled;\n this.statements = [];\n this.literals = new Map();\n this.literalFactories = new Map();\n this.nextNameIndex = 0;\n }\n getConstLiteral(literal, forceShared) {\n if ((literal instanceof LiteralExpr && !isLongStringLiteral(literal)) ||\n literal instanceof FixupExpression) {\n // Do no put simple literals into the constant pool or try to produce a constant for a\n // reference to a constant.\n return literal;\n }\n const key = this.keyOf(literal);\n let fixup = this.literals.get(key);\n let newValue = false;\n if (!fixup) {\n fixup = new FixupExpression(literal);\n this.literals.set(key, fixup);\n newValue = true;\n }\n if ((!newValue && !fixup.shared) || (newValue && forceShared)) {\n // Replace the expression with a variable\n const name = this.freshName();\n let definition;\n let usage;\n if (this.isClosureCompilerEnabled && isLongStringLiteral(literal)) {\n // For string literals, Closure will **always** inline the string at\n // **all** usages, duplicating it each time. For large strings, this\n // unnecessarily bloats bundle size. To work around this restriction, we\n // wrap the string in a function, and call that function for each usage.\n // This tricks Closure into using inline logic for functions instead of\n // string literals. Function calls are only inlined if the body is small\n // enough to be worth it. By doing this, very large strings will be\n // shared across multiple usages, rather than duplicating the string at\n // each usage site.\n //\n // const myStr = function() { return \"very very very long string\"; };\n // const usage1 = myStr();\n // const usage2 = myStr();\n definition = variable(name).set(new FunctionExpr([], // Params.\n [\n // Statements.\n new ReturnStatement(literal),\n ]));\n usage = variable(name).callFn([]);\n }\n else {\n // Just declare and use the variable directly, without a function call\n // indirection. This saves a few bytes and avoids an unnecessary call.\n definition = variable(name).set(literal);\n usage = variable(name);\n }\n this.statements.push(definition.toDeclStmt(INFERRED_TYPE, StmtModifier.Final));\n fixup.fixup(usage);\n }\n return fixup;\n }\n getLiteralFactory(literal) {\n // Create a pure function that builds an array of a mix of constant and variable expressions\n if (literal instanceof LiteralArrayExpr) {\n const argumentsForKey = literal.entries.map(e => e.isConstant() ? e : UNKNOWN_VALUE_KEY);\n const key = this.keyOf(literalArr(argumentsForKey));\n return this._getLiteralFactory(key, literal.entries, entries => literalArr(entries));\n }\n else {\n const expressionForKey = literalMap(literal.entries.map(e => ({\n key: e.key,\n value: e.value.isConstant() ? e.value : UNKNOWN_VALUE_KEY,\n quoted: e.quoted\n })));\n const key = this.keyOf(expressionForKey);\n return this._getLiteralFactory(key, literal.entries.map(e => e.value), entries => literalMap(entries.map((value, index) => ({\n key: literal.entries[index].key,\n value,\n quoted: literal.entries[index].quoted\n }))));\n }\n }\n _getLiteralFactory(key, values, resultMap) {\n let literalFactory = this.literalFactories.get(key);\n const literalFactoryArguments = values.filter((e => !e.isConstant()));\n if (!literalFactory) {\n const resultExpressions = values.map((e, index) => e.isConstant() ? this.getConstLiteral(e, true) : variable(`a${index}`));\n const parameters = resultExpressions.filter(isVariable).map(e => new FnParam(e.name, DYNAMIC_TYPE));\n const pureFunctionDeclaration = fn(parameters, [new ReturnStatement(resultMap(resultExpressions))], INFERRED_TYPE);\n const name = this.freshName();\n this.statements.push(variable(name)\n .set(pureFunctionDeclaration)\n .toDeclStmt(INFERRED_TYPE, StmtModifier.Final));\n literalFactory = variable(name);\n this.literalFactories.set(key, literalFactory);\n }\n return { literalFactory, literalFactoryArguments };\n }\n /**\n * Produce a unique name.\n *\n * The name might be unique among different prefixes if any of the prefixes end in\n * a digit so the prefix should be a constant string (not based on user input) and\n * must not end in a digit.\n */\n uniqueName(prefix) {\n return `${prefix}${this.nextNameIndex++}`;\n }\n freshName() {\n return this.uniqueName(CONSTANT_PREFIX);\n }\n keyOf(expression) {\n return expression.visitExpression(new KeyVisitor(), KEY_CONTEXT);\n }\n}\n/**\n * Visitor used to determine if 2 expressions are equivalent and can be shared in the\n * `ConstantPool`.\n *\n * When the id (string) generated by the visitor is equal, expressions are considered equivalent.\n */\nclass KeyVisitor {\n constructor() {\n this.visitWrappedNodeExpr = invalid$1;\n this.visitWriteVarExpr = invalid$1;\n this.visitWriteKeyExpr = invalid$1;\n this.visitWritePropExpr = invalid$1;\n this.visitInvokeFunctionExpr = invalid$1;\n this.visitTaggedTemplateExpr = invalid$1;\n this.visitInstantiateExpr = invalid$1;\n this.visitConditionalExpr = invalid$1;\n this.visitNotExpr = invalid$1;\n this.visitAssertNotNullExpr = invalid$1;\n this.visitCastExpr = invalid$1;\n this.visitFunctionExpr = invalid$1;\n this.visitUnaryOperatorExpr = invalid$1;\n this.visitBinaryOperatorExpr = invalid$1;\n this.visitReadPropExpr = invalid$1;\n this.visitReadKeyExpr = invalid$1;\n this.visitCommaExpr = invalid$1;\n this.visitLocalizedString = invalid$1;\n }\n visitLiteralExpr(ast) {\n return `${typeof ast.value === 'string' ? '\"' + ast.value + '\"' : ast.value}`;\n }\n visitLiteralArrayExpr(ast, context) {\n return `[${ast.entries.map(entry => entry.visitExpression(this, context)).join(',')}]`;\n }\n visitLiteralMapExpr(ast, context) {\n const mapKey = (entry) => {\n const quote = entry.quoted ? '\"' : '';\n return `${quote}${entry.key}${quote}`;\n };\n const mapEntry = (entry) => `${mapKey(entry)}:${entry.value.visitExpression(this, context)}`;\n return `{${ast.entries.map(mapEntry).join(',')}`;\n }\n visitExternalExpr(ast) {\n return ast.value.moduleName ? `EX:${ast.value.moduleName}:${ast.value.name}` :\n `EX:${ast.value.runtime.name}`;\n }\n visitReadVarExpr(node) {\n return `VAR:${node.name}`;\n }\n visitTypeofExpr(node, context) {\n return `TYPEOF:${node.expr.visitExpression(this, context)}`;\n }\n}\nfunction invalid$1(arg) {\n throw new Error(`Invalid state: Visitor ${this.constructor.name} doesn't handle ${arg.constructor.name}`);\n}\nfunction isVariable(e) {\n return e instanceof ReadVarExpr;\n}\nfunction isLongStringLiteral(expr) {\n return expr instanceof LiteralExpr && typeof expr.value === 'string' &&\n expr.value.length >= POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst CORE = '@angular/core';\nclass Identifiers {\n}\n/* Methods */\nIdentifiers.NEW_METHOD = 'factory';\nIdentifiers.TRANSFORM_METHOD = 'transform';\nIdentifiers.PATCH_DEPS = 'patchedDeps';\nIdentifiers.core = { name: null, moduleName: CORE };\n/* Instructions */\nIdentifiers.namespaceHTML = { name: 'ɵɵnamespaceHTML', moduleName: CORE };\nIdentifiers.namespaceMathML = { name: 'ɵɵnamespaceMathML', moduleName: CORE };\nIdentifiers.namespaceSVG = { name: 'ɵɵnamespaceSVG', moduleName: CORE };\nIdentifiers.element = { name: 'ɵɵelement', moduleName: CORE };\nIdentifiers.elementStart = { name: 'ɵɵelementStart', moduleName: CORE };\nIdentifiers.elementEnd = { name: 'ɵɵelementEnd', moduleName: CORE };\nIdentifiers.advance = { name: 'ɵɵadvance', moduleName: CORE };\nIdentifiers.syntheticHostProperty = { name: 'ɵɵsyntheticHostProperty', moduleName: CORE };\nIdentifiers.syntheticHostListener = { name: 'ɵɵsyntheticHostListener', moduleName: CORE };\nIdentifiers.attribute = { name: 'ɵɵattribute', moduleName: CORE };\nIdentifiers.attributeInterpolate1 = { name: 'ɵɵattributeInterpolate1', moduleName: CORE };\nIdentifiers.attributeInterpolate2 = { name: 'ɵɵattributeInterpolate2', moduleName: CORE };\nIdentifiers.attributeInterpolate3 = { name: 'ɵɵattributeInterpolate3', moduleName: CORE };\nIdentifiers.attributeInterpolate4 = { name: 'ɵɵattributeInterpolate4', moduleName: CORE };\nIdentifiers.attributeInterpolate5 = { name: 'ɵɵattributeInterpolate5', moduleName: CORE };\nIdentifiers.attributeInterpolate6 = { name: 'ɵɵattributeInterpolate6', moduleName: CORE };\nIdentifiers.attributeInterpolate7 = { name: 'ɵɵattributeInterpolate7', moduleName: CORE };\nIdentifiers.attributeInterpolate8 = { name: 'ɵɵattributeInterpolate8', moduleName: CORE };\nIdentifiers.attributeInterpolateV = { name: 'ɵɵattributeInterpolateV', moduleName: CORE };\nIdentifiers.classProp = { name: 'ɵɵclassProp', moduleName: CORE };\nIdentifiers.elementContainerStart = { name: 'ɵɵelementContainerStart', moduleName: CORE };\nIdentifiers.elementContainerEnd = { name: 'ɵɵelementContainerEnd', moduleName: CORE };\nIdentifiers.elementContainer = { name: 'ɵɵelementContainer', moduleName: CORE };\nIdentifiers.styleMap = { name: 'ɵɵstyleMap', moduleName: CORE };\nIdentifiers.styleMapInterpolate1 = { name: 'ɵɵstyleMapInterpolate1', moduleName: CORE };\nIdentifiers.styleMapInterpolate2 = { name: 'ɵɵstyleMapInterpolate2', moduleName: CORE };\nIdentifiers.styleMapInterpolate3 = { name: 'ɵɵstyleMapInterpolate3', moduleName: CORE };\nIdentifiers.styleMapInterpolate4 = { name: 'ɵɵstyleMapInterpolate4', moduleName: CORE };\nIdentifiers.styleMapInterpolate5 = { name: 'ɵɵstyleMapInterpolate5', moduleName: CORE };\nIdentifiers.styleMapInterpolate6 = { name: 'ɵɵstyleMapInterpolate6', moduleName: CORE };\nIdentifiers.styleMapInterpolate7 = { name: 'ɵɵstyleMapInterpolate7', moduleName: CORE };\nIdentifiers.styleMapInterpolate8 = { name: 'ɵɵstyleMapInterpolate8', moduleName: CORE };\nIdentifiers.styleMapInterpolateV = { name: 'ɵɵstyleMapInterpolateV', moduleName: CORE };\nIdentifiers.classMap = { name: 'ɵɵclassMap', moduleName: CORE };\nIdentifiers.classMapInterpolate1 = { name: 'ɵɵclassMapInterpolate1', moduleName: CORE };\nIdentifiers.classMapInterpolate2 = { name: 'ɵɵclassMapInterpolate2', moduleName: CORE };\nIdentifiers.classMapInterpolate3 = { name: 'ɵɵclassMapInterpolate3', moduleName: CORE };\nIdentifiers.classMapInterpolate4 = { name: 'ɵɵclassMapInterpolate4', moduleName: CORE };\nIdentifiers.classMapInterpolate5 = { name: 'ɵɵclassMapInterpolate5', moduleName: CORE };\nIdentifiers.classMapInterpolate6 = { name: 'ɵɵclassMapInterpolate6', moduleName: CORE };\nIdentifiers.classMapInterpolate7 = { name: 'ɵɵclassMapInterpolate7', moduleName: CORE };\nIdentifiers.classMapInterpolate8 = { name: 'ɵɵclassMapInterpolate8', moduleName: CORE };\nIdentifiers.classMapInterpolateV = { name: 'ɵɵclassMapInterpolateV', moduleName: CORE };\nIdentifiers.styleProp = { name: 'ɵɵstyleProp', moduleName: CORE };\nIdentifiers.stylePropInterpolate1 = { name: 'ɵɵstylePropInterpolate1', moduleName: CORE };\nIdentifiers.stylePropInterpolate2 = { name: 'ɵɵstylePropInterpolate2', moduleName: CORE };\nIdentifiers.stylePropInterpolate3 = { name: 'ɵɵstylePropInterpolate3', moduleName: CORE };\nIdentifiers.stylePropInterpolate4 = { name: 'ɵɵstylePropInterpolate4', moduleName: CORE };\nIdentifiers.stylePropInterpolate5 = { name: 'ɵɵstylePropInterpolate5', moduleName: CORE };\nIdentifiers.stylePropInterpolate6 = { name: 'ɵɵstylePropInterpolate6', moduleName: CORE };\nIdentifiers.stylePropInterpolate7 = { name: 'ɵɵstylePropInterpolate7', moduleName: CORE };\nIdentifiers.stylePropInterpolate8 = { name: 'ɵɵstylePropInterpolate8', moduleName: CORE };\nIdentifiers.stylePropInterpolateV = { name: 'ɵɵstylePropInterpolateV', moduleName: CORE };\nIdentifiers.nextContext = { name: 'ɵɵnextContext', moduleName: CORE };\nIdentifiers.resetView = { name: 'ɵɵresetView', moduleName: CORE };\nIdentifiers.templateCreate = { name: 'ɵɵtemplate', moduleName: CORE };\nIdentifiers.text = { name: 'ɵɵtext', moduleName: CORE };\nIdentifiers.enableBindings = { name: 'ɵɵenableBindings', moduleName: CORE };\nIdentifiers.disableBindings = { name: 'ɵɵdisableBindings', moduleName: CORE };\nIdentifiers.getCurrentView = { name: 'ɵɵgetCurrentView', moduleName: CORE };\nIdentifiers.textInterpolate = { name: 'ɵɵtextInterpolate', moduleName: CORE };\nIdentifiers.textInterpolate1 = { name: 'ɵɵtextInterpolate1', moduleName: CORE };\nIdentifiers.textInterpolate2 = { name: 'ɵɵtextInterpolate2', moduleName: CORE };\nIdentifiers.textInterpolate3 = { name: 'ɵɵtextInterpolate3', moduleName: CORE };\nIdentifiers.textInterpolate4 = { name: 'ɵɵtextInterpolate4', moduleName: CORE };\nIdentifiers.textInterpolate5 = { name: 'ɵɵtextInterpolate5', moduleName: CORE };\nIdentifiers.textInterpolate6 = { name: 'ɵɵtextInterpolate6', moduleName: CORE };\nIdentifiers.textInterpolate7 = { name: 'ɵɵtextInterpolate7', moduleName: CORE };\nIdentifiers.textInterpolate8 = { name: 'ɵɵtextInterpolate8', moduleName: CORE };\nIdentifiers.textInterpolateV = { name: 'ɵɵtextInterpolateV', moduleName: CORE };\nIdentifiers.restoreView = { name: 'ɵɵrestoreView', moduleName: CORE };\nIdentifiers.pureFunction0 = { name: 'ɵɵpureFunction0', moduleName: CORE };\nIdentifiers.pureFunction1 = { name: 'ɵɵpureFunction1', moduleName: CORE };\nIdentifiers.pureFunction2 = { name: 'ɵɵpureFunction2', moduleName: CORE };\nIdentifiers.pureFunction3 = { name: 'ɵɵpureFunction3', moduleName: CORE };\nIdentifiers.pureFunction4 = { name: 'ɵɵpureFunction4', moduleName: CORE };\nIdentifiers.pureFunction5 = { name: 'ɵɵpureFunction5', moduleName: CORE };\nIdentifiers.pureFunction6 = { name: 'ɵɵpureFunction6', moduleName: CORE };\nIdentifiers.pureFunction7 = { name: 'ɵɵpureFunction7', moduleName: CORE };\nIdentifiers.pureFunction8 = { name: 'ɵɵpureFunction8', moduleName: CORE };\nIdentifiers.pureFunctionV = { name: 'ɵɵpureFunctionV', moduleName: CORE };\nIdentifiers.pipeBind1 = { name: 'ɵɵpipeBind1', moduleName: CORE };\nIdentifiers.pipeBind2 = { name: 'ɵɵpipeBind2', moduleName: CORE };\nIdentifiers.pipeBind3 = { name: 'ɵɵpipeBind3', moduleName: CORE };\nIdentifiers.pipeBind4 = { name: 'ɵɵpipeBind4', moduleName: CORE };\nIdentifiers.pipeBindV = { name: 'ɵɵpipeBindV', moduleName: CORE };\nIdentifiers.hostProperty = { name: 'ɵɵhostProperty', moduleName: CORE };\nIdentifiers.property = { name: 'ɵɵproperty', moduleName: CORE };\nIdentifiers.propertyInterpolate = { name: 'ɵɵpropertyInterpolate', moduleName: CORE };\nIdentifiers.propertyInterpolate1 = { name: 'ɵɵpropertyInterpolate1', moduleName: CORE };\nIdentifiers.propertyInterpolate2 = { name: 'ɵɵpropertyInterpolate2', moduleName: CORE };\nIdentifiers.propertyInterpolate3 = { name: 'ɵɵpropertyInterpolate3', moduleName: CORE };\nIdentifiers.propertyInterpolate4 = { name: 'ɵɵpropertyInterpolate4', moduleName: CORE };\nIdentifiers.propertyInterpolate5 = { name: 'ɵɵpropertyInterpolate5', moduleName: CORE };\nIdentifiers.propertyInterpolate6 = { name: 'ɵɵpropertyInterpolate6', moduleName: CORE };\nIdentifiers.propertyInterpolate7 = { name: 'ɵɵpropertyInterpolate7', moduleName: CORE };\nIdentifiers.propertyInterpolate8 = { name: 'ɵɵpropertyInterpolate8', moduleName: CORE };\nIdentifiers.propertyInterpolateV = { name: 'ɵɵpropertyInterpolateV', moduleName: CORE };\nIdentifiers.i18n = { name: 'ɵɵi18n', moduleName: CORE };\nIdentifiers.i18nAttributes = { name: 'ɵɵi18nAttributes', moduleName: CORE };\nIdentifiers.i18nExp = { name: 'ɵɵi18nExp', moduleName: CORE };\nIdentifiers.i18nStart = { name: 'ɵɵi18nStart', moduleName: CORE };\nIdentifiers.i18nEnd = { name: 'ɵɵi18nEnd', moduleName: CORE };\nIdentifiers.i18nApply = { name: 'ɵɵi18nApply', moduleName: CORE };\nIdentifiers.i18nPostprocess = { name: 'ɵɵi18nPostprocess', moduleName: CORE };\nIdentifiers.pipe = { name: 'ɵɵpipe', moduleName: CORE };\nIdentifiers.projection = { name: 'ɵɵprojection', moduleName: CORE };\nIdentifiers.projectionDef = { name: 'ɵɵprojectionDef', moduleName: CORE };\nIdentifiers.reference = { name: 'ɵɵreference', moduleName: CORE };\nIdentifiers.inject = { name: 'ɵɵinject', moduleName: CORE };\nIdentifiers.injectAttribute = { name: 'ɵɵinjectAttribute', moduleName: CORE };\nIdentifiers.directiveInject = { name: 'ɵɵdirectiveInject', moduleName: CORE };\nIdentifiers.invalidFactory = { name: 'ɵɵinvalidFactory', moduleName: CORE };\nIdentifiers.invalidFactoryDep = { name: 'ɵɵinvalidFactoryDep', moduleName: CORE };\nIdentifiers.templateRefExtractor = { name: 'ɵɵtemplateRefExtractor', moduleName: CORE };\nIdentifiers.forwardRef = { name: 'forwardRef', moduleName: CORE };\nIdentifiers.resolveForwardRef = { name: 'resolveForwardRef', moduleName: CORE };\nIdentifiers.ɵɵdefineInjectable = { name: 'ɵɵdefineInjectable', moduleName: CORE };\nIdentifiers.declareInjectable = { name: 'ɵɵngDeclareInjectable', moduleName: CORE };\nIdentifiers.InjectableDeclaration = { name: 'ɵɵInjectableDeclaration', moduleName: CORE };\nIdentifiers.resolveWindow = { name: 'ɵɵresolveWindow', moduleName: CORE };\nIdentifiers.resolveDocument = { name: 'ɵɵresolveDocument', moduleName: CORE };\nIdentifiers.resolveBody = { name: 'ɵɵresolveBody', moduleName: CORE };\nIdentifiers.defineComponent = { name: 'ɵɵdefineComponent', moduleName: CORE };\nIdentifiers.declareComponent = { name: 'ɵɵngDeclareComponent', moduleName: CORE };\nIdentifiers.setComponentScope = { name: 'ɵɵsetComponentScope', moduleName: CORE };\nIdentifiers.ChangeDetectionStrategy = {\n name: 'ChangeDetectionStrategy',\n moduleName: CORE,\n};\nIdentifiers.ViewEncapsulation = {\n name: 'ViewEncapsulation',\n moduleName: CORE,\n};\nIdentifiers.ComponentDeclaration = {\n name: 'ɵɵComponentDeclaration',\n moduleName: CORE,\n};\nIdentifiers.FactoryDeclaration = {\n name: 'ɵɵFactoryDeclaration',\n moduleName: CORE,\n};\nIdentifiers.declareFactory = { name: 'ɵɵngDeclareFactory', moduleName: CORE };\nIdentifiers.FactoryTarget = { name: 'ɵɵFactoryTarget', moduleName: CORE };\nIdentifiers.defineDirective = { name: 'ɵɵdefineDirective', moduleName: CORE };\nIdentifiers.declareDirective = { name: 'ɵɵngDeclareDirective', moduleName: CORE };\nIdentifiers.DirectiveDeclaration = {\n name: 'ɵɵDirectiveDeclaration',\n moduleName: CORE,\n};\nIdentifiers.InjectorDef = { name: 'ɵɵInjectorDef', moduleName: CORE };\nIdentifiers.InjectorDeclaration = { name: 'ɵɵInjectorDeclaration', moduleName: CORE };\nIdentifiers.defineInjector = { name: 'ɵɵdefineInjector', moduleName: CORE };\nIdentifiers.declareInjector = { name: 'ɵɵngDeclareInjector', moduleName: CORE };\nIdentifiers.NgModuleDeclaration = {\n name: 'ɵɵNgModuleDeclaration',\n moduleName: CORE,\n};\nIdentifiers.ModuleWithProviders = {\n name: 'ModuleWithProviders',\n moduleName: CORE,\n};\nIdentifiers.defineNgModule = { name: 'ɵɵdefineNgModule', moduleName: CORE };\nIdentifiers.declareNgModule = { name: 'ɵɵngDeclareNgModule', moduleName: CORE };\nIdentifiers.setNgModuleScope = { name: 'ɵɵsetNgModuleScope', moduleName: CORE };\nIdentifiers.registerNgModuleType = { name: 'ɵɵregisterNgModuleType', moduleName: CORE };\nIdentifiers.PipeDeclaration = { name: 'ɵɵPipeDeclaration', moduleName: CORE };\nIdentifiers.definePipe = { name: 'ɵɵdefinePipe', moduleName: CORE };\nIdentifiers.declarePipe = { name: 'ɵɵngDeclarePipe', moduleName: CORE };\nIdentifiers.declareClassMetadata = { name: 'ɵɵngDeclareClassMetadata', moduleName: CORE };\nIdentifiers.setClassMetadata = { name: 'ɵsetClassMetadata', moduleName: CORE };\nIdentifiers.queryRefresh = { name: 'ɵɵqueryRefresh', moduleName: CORE };\nIdentifiers.viewQuery = { name: 'ɵɵviewQuery', moduleName: CORE };\nIdentifiers.loadQuery = { name: 'ɵɵloadQuery', moduleName: CORE };\nIdentifiers.contentQuery = { name: 'ɵɵcontentQuery', moduleName: CORE };\nIdentifiers.NgOnChangesFeature = { name: 'ɵɵNgOnChangesFeature', moduleName: CORE };\nIdentifiers.InheritDefinitionFeature = { name: 'ɵɵInheritDefinitionFeature', moduleName: CORE };\nIdentifiers.CopyDefinitionFeature = { name: 'ɵɵCopyDefinitionFeature', moduleName: CORE };\nIdentifiers.StandaloneFeature = { name: 'ɵɵStandaloneFeature', moduleName: CORE };\nIdentifiers.ProvidersFeature = { name: 'ɵɵProvidersFeature', moduleName: CORE };\nIdentifiers.listener = { name: 'ɵɵlistener', moduleName: CORE };\nIdentifiers.getInheritedFactory = {\n name: 'ɵɵgetInheritedFactory',\n moduleName: CORE,\n};\n// sanitization-related functions\nIdentifiers.sanitizeHtml = { name: 'ɵɵsanitizeHtml', moduleName: CORE };\nIdentifiers.sanitizeStyle = { name: 'ɵɵsanitizeStyle', moduleName: CORE };\nIdentifiers.sanitizeResourceUrl = { name: 'ɵɵsanitizeResourceUrl', moduleName: CORE };\nIdentifiers.sanitizeScript = { name: 'ɵɵsanitizeScript', moduleName: CORE };\nIdentifiers.sanitizeUrl = { name: 'ɵɵsanitizeUrl', moduleName: CORE };\nIdentifiers.sanitizeUrlOrResourceUrl = { name: 'ɵɵsanitizeUrlOrResourceUrl', moduleName: CORE };\nIdentifiers.trustConstantHtml = { name: 'ɵɵtrustConstantHtml', moduleName: CORE };\nIdentifiers.trustConstantResourceUrl = { name: 'ɵɵtrustConstantResourceUrl', moduleName: CORE };\nIdentifiers.validateIframeAttribute = { name: 'ɵɵvalidateIframeAttribute', moduleName: CORE };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\nconst VERSION$1 = 3;\nconst JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,';\nclass SourceMapGenerator {\n constructor(file = null) {\n this.file = file;\n this.sourcesContent = new Map();\n this.lines = [];\n this.lastCol0 = 0;\n this.hasMappings = false;\n }\n // The content is `null` when the content is expected to be loaded using the URL\n addSource(url, content = null) {\n if (!this.sourcesContent.has(url)) {\n this.sourcesContent.set(url, content);\n }\n return this;\n }\n addLine() {\n this.lines.push([]);\n this.lastCol0 = 0;\n return this;\n }\n addMapping(col0, sourceUrl, sourceLine0, sourceCol0) {\n if (!this.currentLine) {\n throw new Error(`A line must be added before mappings can be added`);\n }\n if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) {\n throw new Error(`Unknown source file \"${sourceUrl}\"`);\n }\n if (col0 == null) {\n throw new Error(`The column in the generated code must be provided`);\n }\n if (col0 < this.lastCol0) {\n throw new Error(`Mapping should be added in output order`);\n }\n if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) {\n throw new Error(`The source location must be provided when a source url is provided`);\n }\n this.hasMappings = true;\n this.lastCol0 = col0;\n this.currentLine.push({ col0, sourceUrl, sourceLine0, sourceCol0 });\n return this;\n }\n /**\n * @internal strip this from published d.ts files due to\n * https://github.com/microsoft/TypeScript/issues/36216\n */\n get currentLine() {\n return this.lines.slice(-1)[0];\n }\n toJSON() {\n if (!this.hasMappings) {\n return null;\n }\n const sourcesIndex = new Map();\n const sources = [];\n const sourcesContent = [];\n Array.from(this.sourcesContent.keys()).forEach((url, i) => {\n sourcesIndex.set(url, i);\n sources.push(url);\n sourcesContent.push(this.sourcesContent.get(url) || null);\n });\n let mappings = '';\n let lastCol0 = 0;\n let lastSourceIndex = 0;\n let lastSourceLine0 = 0;\n let lastSourceCol0 = 0;\n this.lines.forEach(segments => {\n lastCol0 = 0;\n mappings += segments\n .map(segment => {\n // zero-based starting column of the line in the generated code\n let segAsStr = toBase64VLQ(segment.col0 - lastCol0);\n lastCol0 = segment.col0;\n if (segment.sourceUrl != null) {\n // zero-based index into the “sources” list\n segAsStr +=\n toBase64VLQ(sourcesIndex.get(segment.sourceUrl) - lastSourceIndex);\n lastSourceIndex = sourcesIndex.get(segment.sourceUrl);\n // the zero-based starting line in the original source\n segAsStr += toBase64VLQ(segment.sourceLine0 - lastSourceLine0);\n lastSourceLine0 = segment.sourceLine0;\n // the zero-based starting column in the original source\n segAsStr += toBase64VLQ(segment.sourceCol0 - lastSourceCol0);\n lastSourceCol0 = segment.sourceCol0;\n }\n return segAsStr;\n })\n .join(',');\n mappings += ';';\n });\n mappings = mappings.slice(0, -1);\n return {\n 'file': this.file || '',\n 'version': VERSION$1,\n 'sourceRoot': '',\n 'sources': sources,\n 'sourcesContent': sourcesContent,\n 'mappings': mappings,\n };\n }\n toJsComment() {\n return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) :\n '';\n }\n}\nfunction toBase64String(value) {\n let b64 = '';\n const encoded = utf8Encode(value);\n for (let i = 0; i < encoded.length;) {\n const i1 = encoded[i++];\n const i2 = i < encoded.length ? encoded[i++] : null;\n const i3 = i < encoded.length ? encoded[i++] : null;\n b64 += toBase64Digit(i1 >> 2);\n b64 += toBase64Digit(((i1 & 3) << 4) | (i2 === null ? 0 : i2 >> 4));\n b64 += i2 === null ? '=' : toBase64Digit(((i2 & 15) << 2) | (i3 === null ? 0 : i3 >> 6));\n b64 += i2 === null || i3 === null ? '=' : toBase64Digit(i3 & 63);\n }\n return b64;\n}\nfunction toBase64VLQ(value) {\n value = value < 0 ? ((-value) << 1) + 1 : value << 1;\n let out = '';\n do {\n let digit = value & 31;\n value = value >> 5;\n if (value > 0) {\n digit = digit | 32;\n }\n out += toBase64Digit(digit);\n } while (value > 0);\n return out;\n}\nconst B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfunction toBase64Digit(value) {\n if (value < 0 || value >= 64) {\n throw new Error(`Can only encode value in the range [0, 63]`);\n }\n return B64_DIGITS[value];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\nconst _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i;\nconst _INDENT_WITH = ' ';\nclass _EmittedLine {\n constructor(indent) {\n this.indent = indent;\n this.partsLength = 0;\n this.parts = [];\n this.srcSpans = [];\n }\n}\nclass EmitterVisitorContext {\n constructor(_indent) {\n this._indent = _indent;\n this._lines = [new _EmittedLine(_indent)];\n }\n static createRoot() {\n return new EmitterVisitorContext(0);\n }\n /**\n * @internal strip this from published d.ts files due to\n * https://github.com/microsoft/TypeScript/issues/36216\n */\n get _currentLine() {\n return this._lines[this._lines.length - 1];\n }\n println(from, lastPart = '') {\n this.print(from || null, lastPart, true);\n }\n lineIsEmpty() {\n return this._currentLine.parts.length === 0;\n }\n lineLength() {\n return this._currentLine.indent * _INDENT_WITH.length + this._currentLine.partsLength;\n }\n print(from, part, newLine = false) {\n if (part.length > 0) {\n this._currentLine.parts.push(part);\n this._currentLine.partsLength += part.length;\n this._currentLine.srcSpans.push(from && from.sourceSpan || null);\n }\n if (newLine) {\n this._lines.push(new _EmittedLine(this._indent));\n }\n }\n removeEmptyLastLine() {\n if (this.lineIsEmpty()) {\n this._lines.pop();\n }\n }\n incIndent() {\n this._indent++;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n decIndent() {\n this._indent--;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n toSource() {\n return this.sourceLines\n .map(l => l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : '')\n .join('\\n');\n }\n toSourceMapGenerator(genFilePath, startsAtLine = 0) {\n const map = new SourceMapGenerator(genFilePath);\n let firstOffsetMapped = false;\n const mapFirstOffsetIfNeeded = () => {\n if (!firstOffsetMapped) {\n // Add a single space so that tools won't try to load the file from disk.\n // Note: We are using virtual urls like `ng:///`, so we have to\n // provide a content here.\n map.addSource(genFilePath, ' ').addMapping(0, genFilePath, 0, 0);\n firstOffsetMapped = true;\n }\n };\n for (let i = 0; i < startsAtLine; i++) {\n map.addLine();\n mapFirstOffsetIfNeeded();\n }\n this.sourceLines.forEach((line, lineIdx) => {\n map.addLine();\n const spans = line.srcSpans;\n const parts = line.parts;\n let col0 = line.indent * _INDENT_WITH.length;\n let spanIdx = 0;\n // skip leading parts without source spans\n while (spanIdx < spans.length && !spans[spanIdx]) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) {\n firstOffsetMapped = true;\n }\n else {\n mapFirstOffsetIfNeeded();\n }\n while (spanIdx < spans.length) {\n const span = spans[spanIdx];\n const source = span.start.file;\n const sourceLine = span.start.line;\n const sourceCol = span.start.col;\n map.addSource(source.url, source.content)\n .addMapping(col0, source.url, sourceLine, sourceCol);\n col0 += parts[spanIdx].length;\n spanIdx++;\n // assign parts without span or the same span to the previous segment\n while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n }\n });\n return map;\n }\n spanOf(line, column) {\n const emittedLine = this._lines[line];\n if (emittedLine) {\n let columnsLeft = column - _createIndent(emittedLine.indent).length;\n for (let partIndex = 0; partIndex < emittedLine.parts.length; partIndex++) {\n const part = emittedLine.parts[partIndex];\n if (part.length > columnsLeft) {\n return emittedLine.srcSpans[partIndex];\n }\n columnsLeft -= part.length;\n }\n }\n return null;\n }\n /**\n * @internal strip this from published d.ts files due to\n * https://github.com/microsoft/TypeScript/issues/36216\n */\n get sourceLines() {\n if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) {\n return this._lines.slice(0, -1);\n }\n return this._lines;\n }\n}\nclass AbstractEmitterVisitor {\n constructor(_escapeDollarInStrings) {\n this._escapeDollarInStrings = _escapeDollarInStrings;\n }\n printLeadingComments(stmt, ctx) {\n if (stmt.leadingComments === undefined) {\n return;\n }\n for (const comment of stmt.leadingComments) {\n if (comment instanceof JSDocComment) {\n ctx.print(stmt, `/*${comment.toString()}*/`, comment.trailingNewline);\n }\n else {\n if (comment.multiline) {\n ctx.print(stmt, `/* ${comment.text} */`, comment.trailingNewline);\n }\n else {\n comment.text.split('\\n').forEach((line) => {\n ctx.println(stmt, `// ${line}`);\n });\n }\n }\n }\n }\n visitExpressionStmt(stmt, ctx) {\n this.printLeadingComments(stmt, ctx);\n stmt.expr.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n visitReturnStmt(stmt, ctx) {\n this.printLeadingComments(stmt, ctx);\n ctx.print(stmt, `return `);\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n visitIfStmt(stmt, ctx) {\n this.printLeadingComments(stmt, ctx);\n ctx.print(stmt, `if (`);\n stmt.condition.visitExpression(this, ctx);\n ctx.print(stmt, `) {`);\n const hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0;\n if (stmt.trueCase.length <= 1 && !hasElseCase) {\n ctx.print(stmt, ` `);\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.removeEmptyLastLine();\n ctx.print(stmt, ` `);\n }\n else {\n ctx.println();\n ctx.incIndent();\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.decIndent();\n if (hasElseCase) {\n ctx.println(stmt, `} else {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.falseCase, ctx);\n ctx.decIndent();\n }\n }\n ctx.println(stmt, `}`);\n return null;\n }\n visitWriteVarExpr(expr, ctx) {\n const lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n ctx.print(expr, `${expr.name} = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n visitWriteKeyExpr(expr, ctx) {\n const lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, `[`);\n expr.index.visitExpression(this, ctx);\n ctx.print(expr, `] = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n visitWritePropExpr(expr, ctx) {\n const lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, `.${expr.name} = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n visitInvokeFunctionExpr(expr, ctx) {\n expr.fn.visitExpression(this, ctx);\n ctx.print(expr, `(`);\n this.visitAllExpressions(expr.args, ctx, ',');\n ctx.print(expr, `)`);\n return null;\n }\n visitTaggedTemplateExpr(expr, ctx) {\n expr.tag.visitExpression(this, ctx);\n ctx.print(expr, '`' + expr.template.elements[0].rawText);\n for (let i = 1; i < expr.template.elements.length; i++) {\n ctx.print(expr, '${');\n expr.template.expressions[i - 1].visitExpression(this, ctx);\n ctx.print(expr, `}${expr.template.elements[i].rawText}`);\n }\n ctx.print(expr, '`');\n return null;\n }\n visitWrappedNodeExpr(ast, ctx) {\n throw new Error('Abstract emitter cannot visit WrappedNodeExpr.');\n }\n visitTypeofExpr(expr, ctx) {\n ctx.print(expr, 'typeof ');\n expr.expr.visitExpression(this, ctx);\n }\n visitReadVarExpr(ast, ctx) {\n ctx.print(ast, ast.name);\n return null;\n }\n visitInstantiateExpr(ast, ctx) {\n ctx.print(ast, `new `);\n ast.classExpr.visitExpression(this, ctx);\n ctx.print(ast, `(`);\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, `)`);\n return null;\n }\n visitLiteralExpr(ast, ctx) {\n const value = ast.value;\n if (typeof value === 'string') {\n ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings));\n }\n else {\n ctx.print(ast, `${value}`);\n }\n return null;\n }\n visitLocalizedString(ast, ctx) {\n const head = ast.serializeI18nHead();\n ctx.print(ast, '$localize `' + head.raw);\n for (let i = 1; i < ast.messageParts.length; i++) {\n ctx.print(ast, '${');\n ast.expressions[i - 1].visitExpression(this, ctx);\n ctx.print(ast, `}${ast.serializeI18nTemplatePart(i).raw}`);\n }\n ctx.print(ast, '`');\n return null;\n }\n visitConditionalExpr(ast, ctx) {\n ctx.print(ast, `(`);\n ast.condition.visitExpression(this, ctx);\n ctx.print(ast, '? ');\n ast.trueCase.visitExpression(this, ctx);\n ctx.print(ast, ': ');\n ast.falseCase.visitExpression(this, ctx);\n ctx.print(ast, `)`);\n return null;\n }\n visitNotExpr(ast, ctx) {\n ctx.print(ast, '!');\n ast.condition.visitExpression(this, ctx);\n return null;\n }\n visitUnaryOperatorExpr(ast, ctx) {\n let opStr;\n switch (ast.operator) {\n case UnaryOperator.Plus:\n opStr = '+';\n break;\n case UnaryOperator.Minus:\n opStr = '-';\n break;\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n if (ast.parens)\n ctx.print(ast, `(`);\n ctx.print(ast, opStr);\n ast.expr.visitExpression(this, ctx);\n if (ast.parens)\n ctx.print(ast, `)`);\n return null;\n }\n visitBinaryOperatorExpr(ast, ctx) {\n let opStr;\n switch (ast.operator) {\n case BinaryOperator.Equals:\n opStr = '==';\n break;\n case BinaryOperator.Identical:\n opStr = '===';\n break;\n case BinaryOperator.NotEquals:\n opStr = '!=';\n break;\n case BinaryOperator.NotIdentical:\n opStr = '!==';\n break;\n case BinaryOperator.And:\n opStr = '&&';\n break;\n case BinaryOperator.BitwiseAnd:\n opStr = '&';\n break;\n case BinaryOperator.Or:\n opStr = '||';\n break;\n case BinaryOperator.Plus:\n opStr = '+';\n break;\n case BinaryOperator.Minus:\n opStr = '-';\n break;\n case BinaryOperator.Divide:\n opStr = '/';\n break;\n case BinaryOperator.Multiply:\n opStr = '*';\n break;\n case BinaryOperator.Modulo:\n opStr = '%';\n break;\n case BinaryOperator.Lower:\n opStr = '<';\n break;\n case BinaryOperator.LowerEquals:\n opStr = '<=';\n break;\n case BinaryOperator.Bigger:\n opStr = '>';\n break;\n case BinaryOperator.BiggerEquals:\n opStr = '>=';\n break;\n case BinaryOperator.NullishCoalesce:\n opStr = '??';\n break;\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n if (ast.parens)\n ctx.print(ast, `(`);\n ast.lhs.visitExpression(this, ctx);\n ctx.print(ast, ` ${opStr} `);\n ast.rhs.visitExpression(this, ctx);\n if (ast.parens)\n ctx.print(ast, `)`);\n return null;\n }\n visitReadPropExpr(ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `.`);\n ctx.print(ast, ast.name);\n return null;\n }\n visitReadKeyExpr(ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `[`);\n ast.index.visitExpression(this, ctx);\n ctx.print(ast, `]`);\n return null;\n }\n visitLiteralArrayExpr(ast, ctx) {\n ctx.print(ast, `[`);\n this.visitAllExpressions(ast.entries, ctx, ',');\n ctx.print(ast, `]`);\n return null;\n }\n visitLiteralMapExpr(ast, ctx) {\n ctx.print(ast, `{`);\n this.visitAllObjects(entry => {\n ctx.print(ast, `${escapeIdentifier(entry.key, this._escapeDollarInStrings, entry.quoted)}:`);\n entry.value.visitExpression(this, ctx);\n }, ast.entries, ctx, ',');\n ctx.print(ast, `}`);\n return null;\n }\n visitCommaExpr(ast, ctx) {\n ctx.print(ast, '(');\n this.visitAllExpressions(ast.parts, ctx, ',');\n ctx.print(ast, ')');\n return null;\n }\n visitAllExpressions(expressions, ctx, separator) {\n this.visitAllObjects(expr => expr.visitExpression(this, ctx), expressions, ctx, separator);\n }\n visitAllObjects(handler, expressions, ctx, separator) {\n let incrementedIndent = false;\n for (let i = 0; i < expressions.length; i++) {\n if (i > 0) {\n if (ctx.lineLength() > 80) {\n ctx.print(null, separator, true);\n if (!incrementedIndent) {\n // continuation are marked with double indent.\n ctx.incIndent();\n ctx.incIndent();\n incrementedIndent = true;\n }\n }\n else {\n ctx.print(null, separator, false);\n }\n }\n handler(expressions[i]);\n }\n if (incrementedIndent) {\n // continuation are marked with double indent.\n ctx.decIndent();\n ctx.decIndent();\n }\n }\n visitAllStatements(statements, ctx) {\n statements.forEach((stmt) => stmt.visitStatement(this, ctx));\n }\n}\nfunction escapeIdentifier(input, escapeDollar, alwaysQuote = true) {\n if (input == null) {\n return null;\n }\n const body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, (...match) => {\n if (match[0] == '$') {\n return escapeDollar ? '\\\\$' : '$';\n }\n else if (match[0] == '\\n') {\n return '\\\\n';\n }\n else if (match[0] == '\\r') {\n return '\\\\r';\n }\n else {\n return `\\\\${match[0]}`;\n }\n });\n const requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body);\n return requiresQuotes ? `'${body}'` : body;\n}\nfunction _createIndent(count) {\n let res = '';\n for (let i = 0; i < count; i++) {\n res += _INDENT_WITH;\n }\n return res;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction typeWithParameters(type, numParams) {\n if (numParams === 0) {\n return expressionType(type);\n }\n const params = [];\n for (let i = 0; i < numParams; i++) {\n params.push(DYNAMIC_TYPE);\n }\n return expressionType(type, undefined, params);\n}\nconst ANIMATE_SYMBOL_PREFIX = '@';\nfunction prepareSyntheticPropertyName(name) {\n return `${ANIMATE_SYMBOL_PREFIX}${name}`;\n}\nfunction prepareSyntheticListenerName(name, phase) {\n return `${ANIMATE_SYMBOL_PREFIX}${name}.${phase}`;\n}\nfunction getSafePropertyAccessString(accessor, name) {\n const escapedName = escapeIdentifier(name, false, false);\n return escapedName !== name ? `${accessor}[${escapedName}]` : `${accessor}.${name}`;\n}\nfunction prepareSyntheticListenerFunctionName(name, phase) {\n return `animation_${name}_${phase}`;\n}\nfunction jitOnlyGuardedExpression(expr) {\n return guardedExpression('ngJitMode', expr);\n}\nfunction devOnlyGuardedExpression(expr) {\n return guardedExpression('ngDevMode', expr);\n}\nfunction guardedExpression(guard, expr) {\n const guardExpr = new ExternalExpr({ name: guard, moduleName: null });\n const guardNotDefined = new BinaryOperatorExpr(BinaryOperator.Identical, new TypeofExpr(guardExpr), literal('undefined'));\n const guardUndefinedOrTrue = new BinaryOperatorExpr(BinaryOperator.Or, guardNotDefined, guardExpr, /* type */ undefined, \n /* sourceSpan */ undefined, true);\n return new BinaryOperatorExpr(BinaryOperator.And, guardUndefinedOrTrue, expr);\n}\nfunction wrapReference(value) {\n const wrapped = new WrappedNodeExpr(value);\n return { value: wrapped, type: wrapped };\n}\nfunction refsToArray(refs, shouldForwardDeclare) {\n const values = literalArr(refs.map(ref => ref.value));\n return shouldForwardDeclare ? fn([], [new ReturnStatement(values)]) : values;\n}\nfunction createMayBeForwardRefExpression(expression, forwardRef) {\n return { expression, forwardRef };\n}\n/**\n * Convert a `MaybeForwardRefExpression` to an `Expression`, possibly wrapping its expression in a\n * `forwardRef()` call.\n *\n * If `MaybeForwardRefExpression.forwardRef` is `ForwardRefHandling.Unwrapped` then the expression\n * was originally wrapped in a `forwardRef()` call to prevent the value from being eagerly evaluated\n * in the code.\n *\n * See `packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts` and\n * `packages/compiler/src/jit_compiler_facade.ts` for more information.\n */\nfunction convertFromMaybeForwardRefExpression({ expression, forwardRef }) {\n switch (forwardRef) {\n case 0 /* ForwardRefHandling.None */:\n case 1 /* ForwardRefHandling.Wrapped */:\n return expression;\n case 2 /* ForwardRefHandling.Unwrapped */:\n return generateForwardRef(expression);\n }\n}\n/**\n * Generate an expression that has the given `expr` wrapped in the following form:\n *\n * ```\n * forwardRef(() => expr)\n * ```\n */\nfunction generateForwardRef(expr) {\n return importExpr(Identifiers.forwardRef).callFn([fn([], [new ReturnStatement(expr)])]);\n}\n\nvar R3FactoryDelegateType;\n(function (R3FactoryDelegateType) {\n R3FactoryDelegateType[R3FactoryDelegateType[\"Class\"] = 0] = \"Class\";\n R3FactoryDelegateType[R3FactoryDelegateType[\"Function\"] = 1] = \"Function\";\n})(R3FactoryDelegateType || (R3FactoryDelegateType = {}));\nvar FactoryTarget$1;\n(function (FactoryTarget) {\n FactoryTarget[FactoryTarget[\"Directive\"] = 0] = \"Directive\";\n FactoryTarget[FactoryTarget[\"Component\"] = 1] = \"Component\";\n FactoryTarget[FactoryTarget[\"Injectable\"] = 2] = \"Injectable\";\n FactoryTarget[FactoryTarget[\"Pipe\"] = 3] = \"Pipe\";\n FactoryTarget[FactoryTarget[\"NgModule\"] = 4] = \"NgModule\";\n})(FactoryTarget$1 || (FactoryTarget$1 = {}));\n/**\n * Construct a factory function expression for the given `R3FactoryMetadata`.\n */\nfunction compileFactoryFunction(meta) {\n const t = variable('t');\n let baseFactoryVar = null;\n // The type to instantiate via constructor invocation. If there is no delegated factory, meaning\n // this type is always created by constructor invocation, then this is the type-to-create\n // parameter provided by the user (t) if specified, or the current type if not. If there is a\n // delegated factory (which is used to create the current type) then this is only the type-to-\n // create parameter (t).\n const typeForCtor = !isDelegatedFactoryMetadata(meta) ?\n new BinaryOperatorExpr(BinaryOperator.Or, t, meta.internalType) :\n t;\n let ctorExpr = null;\n if (meta.deps !== null) {\n // There is a constructor (either explicitly or implicitly defined).\n if (meta.deps !== 'invalid') {\n ctorExpr = new InstantiateExpr(typeForCtor, injectDependencies(meta.deps, meta.target));\n }\n }\n else {\n // There is no constructor, use the base class' factory to construct typeForCtor.\n baseFactoryVar = variable(`ɵ${meta.name}_BaseFactory`);\n ctorExpr = baseFactoryVar.callFn([typeForCtor]);\n }\n const body = [];\n let retExpr = null;\n function makeConditionalFactory(nonCtorExpr) {\n const r = variable('r');\n body.push(r.set(NULL_EXPR).toDeclStmt());\n const ctorStmt = ctorExpr !== null ? r.set(ctorExpr).toStmt() :\n importExpr(Identifiers.invalidFactory).callFn([]).toStmt();\n body.push(ifStmt(t, [ctorStmt], [r.set(nonCtorExpr).toStmt()]));\n return r;\n }\n if (isDelegatedFactoryMetadata(meta)) {\n // This type is created with a delegated factory. If a type parameter is not specified, call\n // the factory instead.\n const delegateArgs = injectDependencies(meta.delegateDeps, meta.target);\n // Either call `new delegate(...)` or `delegate(...)` depending on meta.delegateType.\n const factoryExpr = new (meta.delegateType === R3FactoryDelegateType.Class ?\n InstantiateExpr :\n InvokeFunctionExpr)(meta.delegate, delegateArgs);\n retExpr = makeConditionalFactory(factoryExpr);\n }\n else if (isExpressionFactoryMetadata(meta)) {\n // TODO(alxhub): decide whether to lower the value here or in the caller\n retExpr = makeConditionalFactory(meta.expression);\n }\n else {\n retExpr = ctorExpr;\n }\n if (retExpr === null) {\n // The expression cannot be formed so render an `ɵɵinvalidFactory()` call.\n body.push(importExpr(Identifiers.invalidFactory).callFn([]).toStmt());\n }\n else if (baseFactoryVar !== null) {\n // This factory uses a base factory, so call `ɵɵgetInheritedFactory()` to compute it.\n const getInheritedFactoryCall = importExpr(Identifiers.getInheritedFactory).callFn([meta.internalType]);\n // Memoize the base factoryFn: `baseFactory || (baseFactory = ɵɵgetInheritedFactory(...))`\n const baseFactory = new BinaryOperatorExpr(BinaryOperator.Or, baseFactoryVar, baseFactoryVar.set(getInheritedFactoryCall));\n body.push(new ReturnStatement(baseFactory.callFn([typeForCtor])));\n }\n else {\n // This is straightforward factory, just return it.\n body.push(new ReturnStatement(retExpr));\n }\n let factoryFn = fn([new FnParam('t', DYNAMIC_TYPE)], body, INFERRED_TYPE, undefined, `${meta.name}_Factory`);\n if (baseFactoryVar !== null) {\n // There is a base factory variable so wrap its declaration along with the factory function into\n // an IIFE.\n factoryFn = fn([], [\n new DeclareVarStmt(baseFactoryVar.name), new ReturnStatement(factoryFn)\n ]).callFn([], /* sourceSpan */ undefined, /* pure */ true);\n }\n return {\n expression: factoryFn,\n statements: [],\n type: createFactoryType(meta),\n };\n}\nfunction createFactoryType(meta) {\n const ctorDepsType = meta.deps !== null && meta.deps !== 'invalid' ? createCtorDepsType(meta.deps) : NONE_TYPE;\n return expressionType(importExpr(Identifiers.FactoryDeclaration, [typeWithParameters(meta.type.type, meta.typeArgumentCount), ctorDepsType]));\n}\nfunction injectDependencies(deps, target) {\n return deps.map((dep, index) => compileInjectDependency(dep, target, index));\n}\nfunction compileInjectDependency(dep, target, index) {\n // Interpret the dependency according to its resolved type.\n if (dep.token === null) {\n return importExpr(Identifiers.invalidFactoryDep).callFn([literal(index)]);\n }\n else if (dep.attributeNameType === null) {\n // Build up the injection flags according to the metadata.\n const flags = 0 /* InjectFlags.Default */ | (dep.self ? 2 /* InjectFlags.Self */ : 0) |\n (dep.skipSelf ? 4 /* InjectFlags.SkipSelf */ : 0) | (dep.host ? 1 /* InjectFlags.Host */ : 0) |\n (dep.optional ? 8 /* InjectFlags.Optional */ : 0) |\n (target === FactoryTarget$1.Pipe ? 16 /* InjectFlags.ForPipe */ : 0);\n // If this dependency is optional or otherwise has non-default flags, then additional\n // parameters describing how to inject the dependency must be passed to the inject function\n // that's being used.\n let flagsParam = (flags !== 0 /* InjectFlags.Default */ || dep.optional) ? literal(flags) : null;\n // Build up the arguments to the injectFn call.\n const injectArgs = [dep.token];\n if (flagsParam) {\n injectArgs.push(flagsParam);\n }\n const injectFn = getInjectFn(target);\n return importExpr(injectFn).callFn(injectArgs);\n }\n else {\n // The `dep.attributeTypeName` value is defined, which indicates that this is an `@Attribute()`\n // type dependency. For the generated JS we still want to use the `dep.token` value in case the\n // name given for the attribute is not a string literal. For example given `@Attribute(foo())`,\n // we want to generate `ɵɵinjectAttribute(foo())`.\n //\n // The `dep.attributeTypeName` is only actually used (in `createCtorDepType()`) to generate\n // typings.\n return importExpr(Identifiers.injectAttribute).callFn([dep.token]);\n }\n}\nfunction createCtorDepsType(deps) {\n let hasTypes = false;\n const attributeTypes = deps.map(dep => {\n const type = createCtorDepType(dep);\n if (type !== null) {\n hasTypes = true;\n return type;\n }\n else {\n return literal(null);\n }\n });\n if (hasTypes) {\n return expressionType(literalArr(attributeTypes));\n }\n else {\n return NONE_TYPE;\n }\n}\nfunction createCtorDepType(dep) {\n const entries = [];\n if (dep.attributeNameType !== null) {\n entries.push({ key: 'attribute', value: dep.attributeNameType, quoted: false });\n }\n if (dep.optional) {\n entries.push({ key: 'optional', value: literal(true), quoted: false });\n }\n if (dep.host) {\n entries.push({ key: 'host', value: literal(true), quoted: false });\n }\n if (dep.self) {\n entries.push({ key: 'self', value: literal(true), quoted: false });\n }\n if (dep.skipSelf) {\n entries.push({ key: 'skipSelf', value: literal(true), quoted: false });\n }\n return entries.length > 0 ? literalMap(entries) : null;\n}\nfunction isDelegatedFactoryMetadata(meta) {\n return meta.delegateType !== undefined;\n}\nfunction isExpressionFactoryMetadata(meta) {\n return meta.expression !== undefined;\n}\nfunction getInjectFn(target) {\n switch (target) {\n case FactoryTarget$1.Component:\n case FactoryTarget$1.Directive:\n case FactoryTarget$1.Pipe:\n return Identifiers.directiveInject;\n case FactoryTarget$1.NgModule:\n case FactoryTarget$1.Injectable:\n default:\n return Identifiers.inject;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This is an R3 `Node`-like wrapper for a raw `html.Comment` node. We do not currently\n * require the implementation of a visitor for Comments as they are only collected at\n * the top-level of the R3 AST, and only if `Render3ParseOptions['collectCommentNodes']`\n * is true.\n */\nclass Comment$1 {\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(_visitor) {\n throw new Error('visit() not implemented for Comment');\n }\n}\nclass Text$3 {\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor) {\n return visitor.visitText(this);\n }\n}\nclass BoundText {\n constructor(value, sourceSpan, i18n) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitBoundText(this);\n }\n}\n/**\n * Represents a text attribute in the template.\n *\n * `valueSpan` may not be present in cases where there is no value `
`.\n * `keySpan` may also not be present for synthetic attributes from ICU expansions.\n */\nclass TextAttribute {\n constructor(name, value, sourceSpan, keySpan, valueSpan, i18n) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitTextAttribute(this);\n }\n}\nclass BoundAttribute {\n constructor(name, type, securityContext, value, unit, sourceSpan, keySpan, valueSpan, i18n) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.i18n = i18n;\n }\n static fromBoundElementProperty(prop, i18n) {\n if (prop.keySpan === undefined) {\n throw new Error(`Unexpected state: keySpan must be defined for bound attributes but was not for ${prop.name}: ${prop.sourceSpan}`);\n }\n return new BoundAttribute(prop.name, prop.type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan, prop.keySpan, prop.valueSpan, i18n);\n }\n visit(visitor) {\n return visitor.visitBoundAttribute(this);\n }\n}\nclass BoundEvent {\n constructor(name, type, handler, target, phase, sourceSpan, handlerSpan, keySpan) {\n this.name = name;\n this.type = type;\n this.handler = handler;\n this.target = target;\n this.phase = phase;\n this.sourceSpan = sourceSpan;\n this.handlerSpan = handlerSpan;\n this.keySpan = keySpan;\n }\n static fromParsedEvent(event) {\n const target = event.type === 0 /* ParsedEventType.Regular */ ? event.targetOrPhase : null;\n const phase = event.type === 1 /* ParsedEventType.Animation */ ? event.targetOrPhase : null;\n if (event.keySpan === undefined) {\n throw new Error(`Unexpected state: keySpan must be defined for bound event but was not for ${event.name}: ${event.sourceSpan}`);\n }\n return new BoundEvent(event.name, event.type, event.handler, target, phase, event.sourceSpan, event.handlerSpan, event.keySpan);\n }\n visit(visitor) {\n return visitor.visitBoundEvent(this);\n }\n}\nclass Element$1 {\n constructor(name, attributes, inputs, outputs, children, references, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n this.name = name;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.children = children;\n this.references = references;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitElement(this);\n }\n}\nclass Template {\n constructor(\n // tagName is the name of the container element, if applicable.\n // `null` is a special case for when there is a structural directive on an `ng-template` so\n // the renderer can differentiate between the synthetic template and the one written in the\n // file.\n tagName, attributes, inputs, outputs, templateAttrs, children, references, variables, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n this.tagName = tagName;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.templateAttrs = templateAttrs;\n this.children = children;\n this.references = references;\n this.variables = variables;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitTemplate(this);\n }\n}\nclass Content {\n constructor(selector, attributes, sourceSpan, i18n) {\n this.selector = selector;\n this.attributes = attributes;\n this.sourceSpan = sourceSpan;\n this.i18n = i18n;\n this.name = 'ng-content';\n }\n visit(visitor) {\n return visitor.visitContent(this);\n }\n}\nclass Variable {\n constructor(name, value, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n visit(visitor) {\n return visitor.visitVariable(this);\n }\n}\nclass Reference {\n constructor(name, value, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n visit(visitor) {\n return visitor.visitReference(this);\n }\n}\nclass Icu$1 {\n constructor(vars, placeholders, sourceSpan, i18n) {\n this.vars = vars;\n this.placeholders = placeholders;\n this.sourceSpan = sourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitIcu(this);\n }\n}\nclass NullVisitor {\n visitElement(element) { }\n visitTemplate(template) { }\n visitContent(content) { }\n visitVariable(variable) { }\n visitReference(reference) { }\n visitTextAttribute(attribute) { }\n visitBoundAttribute(attribute) { }\n visitBoundEvent(attribute) { }\n visitText(text) { }\n visitBoundText(text) { }\n visitIcu(icu) { }\n}\nclass RecursiveVisitor$1 {\n visitElement(element) {\n visitAll$1(this, element.attributes);\n visitAll$1(this, element.inputs);\n visitAll$1(this, element.outputs);\n visitAll$1(this, element.children);\n visitAll$1(this, element.references);\n }\n visitTemplate(template) {\n visitAll$1(this, template.attributes);\n visitAll$1(this, template.inputs);\n visitAll$1(this, template.outputs);\n visitAll$1(this, template.children);\n visitAll$1(this, template.references);\n visitAll$1(this, template.variables);\n }\n visitContent(content) { }\n visitVariable(variable) { }\n visitReference(reference) { }\n visitTextAttribute(attribute) { }\n visitBoundAttribute(attribute) { }\n visitBoundEvent(attribute) { }\n visitText(text) { }\n visitBoundText(text) { }\n visitIcu(icu) { }\n}\nclass TransformVisitor {\n visitElement(element) {\n const newAttributes = transformAll(this, element.attributes);\n const newInputs = transformAll(this, element.inputs);\n const newOutputs = transformAll(this, element.outputs);\n const newChildren = transformAll(this, element.children);\n const newReferences = transformAll(this, element.references);\n if (newAttributes != element.attributes || newInputs != element.inputs ||\n newOutputs != element.outputs || newChildren != element.children ||\n newReferences != element.references) {\n return new Element$1(element.name, newAttributes, newInputs, newOutputs, newChildren, newReferences, element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n return element;\n }\n visitTemplate(template) {\n const newAttributes = transformAll(this, template.attributes);\n const newInputs = transformAll(this, template.inputs);\n const newOutputs = transformAll(this, template.outputs);\n const newTemplateAttrs = transformAll(this, template.templateAttrs);\n const newChildren = transformAll(this, template.children);\n const newReferences = transformAll(this, template.references);\n const newVariables = transformAll(this, template.variables);\n if (newAttributes != template.attributes || newInputs != template.inputs ||\n newOutputs != template.outputs || newTemplateAttrs != template.templateAttrs ||\n newChildren != template.children || newReferences != template.references ||\n newVariables != template.variables) {\n return new Template(template.tagName, newAttributes, newInputs, newOutputs, newTemplateAttrs, newChildren, newReferences, newVariables, template.sourceSpan, template.startSourceSpan, template.endSourceSpan);\n }\n return template;\n }\n visitContent(content) {\n return content;\n }\n visitVariable(variable) {\n return variable;\n }\n visitReference(reference) {\n return reference;\n }\n visitTextAttribute(attribute) {\n return attribute;\n }\n visitBoundAttribute(attribute) {\n return attribute;\n }\n visitBoundEvent(attribute) {\n return attribute;\n }\n visitText(text) {\n return text;\n }\n visitBoundText(text) {\n return text;\n }\n visitIcu(icu) {\n return icu;\n }\n}\nfunction visitAll$1(visitor, nodes) {\n const result = [];\n if (visitor.visit) {\n for (const node of nodes) {\n const newNode = visitor.visit(node) || node.visit(visitor);\n }\n }\n else {\n for (const node of nodes) {\n const newNode = node.visit(visitor);\n if (newNode) {\n result.push(newNode);\n }\n }\n }\n return result;\n}\nfunction transformAll(visitor, nodes) {\n const result = [];\n let changed = false;\n for (const node of nodes) {\n const newNode = node.visit(visitor);\n if (newNode) {\n result.push(newNode);\n }\n changed = changed || newNode != node;\n }\n return changed ? result : nodes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass Message {\n /**\n * @param nodes message AST\n * @param placeholders maps placeholder names to static content and their source spans\n * @param placeholderToMessage maps placeholder names to messages (used for nested ICU messages)\n * @param meaning\n * @param description\n * @param customId\n */\n constructor(nodes, placeholders, placeholderToMessage, meaning, description, customId) {\n this.nodes = nodes;\n this.placeholders = placeholders;\n this.placeholderToMessage = placeholderToMessage;\n this.meaning = meaning;\n this.description = description;\n this.customId = customId;\n this.id = this.customId;\n /** The ids to use if there are no custom id and if `i18nLegacyMessageIdFormat` is not empty */\n this.legacyIds = [];\n this.messageString = serializeMessage(this.nodes);\n if (nodes.length) {\n this.sources = [{\n filePath: nodes[0].sourceSpan.start.file.url,\n startLine: nodes[0].sourceSpan.start.line + 1,\n startCol: nodes[0].sourceSpan.start.col + 1,\n endLine: nodes[nodes.length - 1].sourceSpan.end.line + 1,\n endCol: nodes[0].sourceSpan.start.col + 1\n }];\n }\n else {\n this.sources = [];\n }\n }\n}\nclass Text$2 {\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitText(this, context);\n }\n}\n// TODO(vicb): do we really need this node (vs an array) ?\nclass Container {\n constructor(children, sourceSpan) {\n this.children = children;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitContainer(this, context);\n }\n}\nclass Icu {\n constructor(expression, type, cases, sourceSpan) {\n this.expression = expression;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitIcu(this, context);\n }\n}\nclass TagPlaceholder {\n constructor(tag, attrs, startName, closeName, children, isVoid, \n // TODO sourceSpan should cover all (we need a startSourceSpan and endSourceSpan)\n sourceSpan, startSourceSpan, endSourceSpan) {\n this.tag = tag;\n this.attrs = attrs;\n this.startName = startName;\n this.closeName = closeName;\n this.children = children;\n this.isVoid = isVoid;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitTagPlaceholder(this, context);\n }\n}\nclass Placeholder {\n constructor(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitPlaceholder(this, context);\n }\n}\nclass IcuPlaceholder {\n constructor(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitIcuPlaceholder(this, context);\n }\n}\n// Clone the AST\nclass CloneVisitor {\n visitText(text, context) {\n return new Text$2(text.value, text.sourceSpan);\n }\n visitContainer(container, context) {\n const children = container.children.map(n => n.visit(this, context));\n return new Container(children, container.sourceSpan);\n }\n visitIcu(icu, context) {\n const cases = {};\n Object.keys(icu.cases).forEach(key => cases[key] = icu.cases[key].visit(this, context));\n const msg = new Icu(icu.expression, icu.type, cases, icu.sourceSpan);\n msg.expressionPlaceholder = icu.expressionPlaceholder;\n return msg;\n }\n visitTagPlaceholder(ph, context) {\n const children = ph.children.map(n => n.visit(this, context));\n return new TagPlaceholder(ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan, ph.startSourceSpan, ph.endSourceSpan);\n }\n visitPlaceholder(ph, context) {\n return new Placeholder(ph.value, ph.name, ph.sourceSpan);\n }\n visitIcuPlaceholder(ph, context) {\n return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan);\n }\n}\n// Visit all the nodes recursively\nclass RecurseVisitor {\n visitText(text, context) { }\n visitContainer(container, context) {\n container.children.forEach(child => child.visit(this));\n }\n visitIcu(icu, context) {\n Object.keys(icu.cases).forEach(k => {\n icu.cases[k].visit(this);\n });\n }\n visitTagPlaceholder(ph, context) {\n ph.children.forEach(child => child.visit(this));\n }\n visitPlaceholder(ph, context) { }\n visitIcuPlaceholder(ph, context) { }\n}\n/**\n * Serialize the message to the Localize backtick string format that would appear in compiled code.\n */\nfunction serializeMessage(messageNodes) {\n const visitor = new LocalizeMessageStringVisitor();\n const str = messageNodes.map(n => n.visit(visitor)).join('');\n return str;\n}\nclass LocalizeMessageStringVisitor {\n visitText(text) {\n return text.value;\n }\n visitContainer(container) {\n return container.children.map(child => child.visit(this)).join('');\n }\n visitIcu(icu) {\n const strCases = Object.keys(icu.cases).map((k) => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expressionPlaceholder}, ${icu.type}, ${strCases.join(' ')}}`;\n }\n visitTagPlaceholder(ph) {\n const children = ph.children.map(child => child.visit(this)).join('');\n return `{$${ph.startName}}${children}{$${ph.closeName}}`;\n }\n visitPlaceholder(ph) {\n return `{$${ph.name}}`;\n }\n visitIcuPlaceholder(ph) {\n return `{$${ph.name}}`;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass Serializer {\n // Creates a name mapper, see `PlaceholderMapper`\n // Returning `null` means that no name mapping is used.\n createNameMapper(message) {\n return null;\n }\n}\n/**\n * A simple mapper that take a function to transform an internal name to a public name\n */\nclass SimplePlaceholderMapper extends RecurseVisitor {\n // create a mapping from the message\n constructor(message, mapName) {\n super();\n this.mapName = mapName;\n this.internalToPublic = {};\n this.publicToNextId = {};\n this.publicToInternal = {};\n message.nodes.forEach(node => node.visit(this));\n }\n toPublicName(internalName) {\n return this.internalToPublic.hasOwnProperty(internalName) ?\n this.internalToPublic[internalName] :\n null;\n }\n toInternalName(publicName) {\n return this.publicToInternal.hasOwnProperty(publicName) ? this.publicToInternal[publicName] :\n null;\n }\n visitText(text, context) {\n return null;\n }\n visitTagPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.startName);\n super.visitTagPlaceholder(ph, context);\n this.visitPlaceholderName(ph.closeName);\n }\n visitPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.name);\n }\n visitIcuPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.name);\n }\n // XMB placeholders could only contains A-Z, 0-9 and _\n visitPlaceholderName(internalName) {\n if (!internalName || this.internalToPublic.hasOwnProperty(internalName)) {\n return;\n }\n let publicName = this.mapName(internalName);\n if (this.publicToInternal.hasOwnProperty(publicName)) {\n // Create a new XMB when it has already been used\n const nextId = this.publicToNextId[publicName];\n this.publicToNextId[publicName] = nextId + 1;\n publicName = `${publicName}_${nextId}`;\n }\n else {\n this.publicToNextId[publicName] = 1;\n }\n this.internalToPublic[internalName] = publicName;\n this.publicToInternal[publicName] = internalName;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass _Visitor$2 {\n visitTag(tag) {\n const strAttrs = this._serializeAttributes(tag.attrs);\n if (tag.children.length == 0) {\n return `<${tag.name}${strAttrs}/>`;\n }\n const strChildren = tag.children.map(node => node.visit(this));\n return `<${tag.name}${strAttrs}>${strChildren.join('')}`;\n }\n visitText(text) {\n return text.value;\n }\n visitDeclaration(decl) {\n return ``;\n }\n _serializeAttributes(attrs) {\n const strAttrs = Object.keys(attrs).map((name) => `${name}=\"${attrs[name]}\"`).join(' ');\n return strAttrs.length > 0 ? ' ' + strAttrs : '';\n }\n visitDoctype(doctype) {\n return ``;\n }\n}\nconst _visitor = new _Visitor$2();\nfunction serialize(nodes) {\n return nodes.map((node) => node.visit(_visitor)).join('');\n}\nclass Declaration {\n constructor(unescapedAttrs) {\n this.attrs = {};\n Object.keys(unescapedAttrs).forEach((k) => {\n this.attrs[k] = escapeXml(unescapedAttrs[k]);\n });\n }\n visit(visitor) {\n return visitor.visitDeclaration(this);\n }\n}\nclass Doctype {\n constructor(rootTag, dtd) {\n this.rootTag = rootTag;\n this.dtd = dtd;\n }\n visit(visitor) {\n return visitor.visitDoctype(this);\n }\n}\nclass Tag {\n constructor(name, unescapedAttrs = {}, children = []) {\n this.name = name;\n this.children = children;\n this.attrs = {};\n Object.keys(unescapedAttrs).forEach((k) => {\n this.attrs[k] = escapeXml(unescapedAttrs[k]);\n });\n }\n visit(visitor) {\n return visitor.visitTag(this);\n }\n}\nclass Text$1 {\n constructor(unescapedValue) {\n this.value = escapeXml(unescapedValue);\n }\n visit(visitor) {\n return visitor.visitText(this);\n }\n}\nclass CR extends Text$1 {\n constructor(ws = 0) {\n super(`\\n${new Array(ws + 1).join(' ')}`);\n }\n}\nconst _ESCAPED_CHARS = [\n [/&/g, '&'],\n [/\"/g, '"'],\n [/'/g, '''],\n [//g, '>'],\n];\n// Escape `_ESCAPED_CHARS` characters in the given text with encoded entities\nfunction escapeXml(text) {\n return _ESCAPED_CHARS.reduce((text, entry) => text.replace(entry[0], entry[1]), text);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _MESSAGES_TAG = 'messagebundle';\nconst _MESSAGE_TAG = 'msg';\nconst _PLACEHOLDER_TAG$3 = 'ph';\nconst _EXAMPLE_TAG = 'ex';\nconst _SOURCE_TAG$2 = 'source';\nconst _DOCTYPE = `\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\nclass Xmb extends Serializer {\n write(messages, locale) {\n const exampleVisitor = new ExampleVisitor();\n const visitor = new _Visitor$1();\n let rootNode = new Tag(_MESSAGES_TAG);\n messages.forEach(message => {\n const attrs = { id: message.id };\n if (message.description) {\n attrs['desc'] = message.description;\n }\n if (message.meaning) {\n attrs['meaning'] = message.meaning;\n }\n let sourceTags = [];\n message.sources.forEach((source) => {\n sourceTags.push(new Tag(_SOURCE_TAG$2, {}, [new Text$1(`${source.filePath}:${source.startLine}${source.endLine !== source.startLine ? ',' + source.endLine : ''}`)]));\n });\n rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, [...sourceTags, ...visitor.serialize(message.nodes)]));\n });\n rootNode.children.push(new CR());\n return serialize([\n new Declaration({ version: '1.0', encoding: 'UTF-8' }),\n new CR(),\n new Doctype(_MESSAGES_TAG, _DOCTYPE),\n new CR(),\n exampleVisitor.addDefaultExamples(rootNode),\n new CR(),\n ]);\n }\n load(content, url) {\n throw new Error('Unsupported');\n }\n digest(message) {\n return digest(message);\n }\n createNameMapper(message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n }\n}\nclass _Visitor$1 {\n visitText(text, context) {\n return [new Text$1(text.value)];\n }\n visitContainer(container, context) {\n const nodes = [];\n container.children.forEach((node) => nodes.push(...node.visit(this)));\n return nodes;\n }\n visitIcu(icu, context) {\n const nodes = [new Text$1(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach((c) => {\n nodes.push(new Text$1(`${c} {`), ...icu.cases[c].visit(this), new Text$1(`} `));\n });\n nodes.push(new Text$1(`}`));\n return nodes;\n }\n visitTagPlaceholder(ph, context) {\n const startTagAsText = new Text$1(`<${ph.tag}>`);\n const startEx = new Tag(_EXAMPLE_TAG, {}, [startTagAsText]);\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n const startTagPh = new Tag(_PLACEHOLDER_TAG$3, { name: ph.startName }, [startEx, startTagAsText]);\n if (ph.isVoid) {\n // void tags have no children nor closing tags\n return [startTagPh];\n }\n const closeTagAsText = new Text$1(``);\n const closeEx = new Tag(_EXAMPLE_TAG, {}, [closeTagAsText]);\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n const closeTagPh = new Tag(_PLACEHOLDER_TAG$3, { name: ph.closeName }, [closeEx, closeTagAsText]);\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n visitPlaceholder(ph, context) {\n const interpolationAsText = new Text$1(`{{${ph.value}}}`);\n // Example tag needs to be not-empty for TC.\n const exTag = new Tag(_EXAMPLE_TAG, {}, [interpolationAsText]);\n return [\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n new Tag(_PLACEHOLDER_TAG$3, { name: ph.name }, [exTag, interpolationAsText])\n ];\n }\n visitIcuPlaceholder(ph, context) {\n const icuExpression = ph.value.expression;\n const icuType = ph.value.type;\n const icuCases = Object.keys(ph.value.cases).map((value) => value + ' {...}').join(' ');\n const icuAsText = new Text$1(`{${icuExpression}, ${icuType}, ${icuCases}}`);\n const exTag = new Tag(_EXAMPLE_TAG, {}, [icuAsText]);\n return [\n // TC requires PH to have a non empty EX, and uses the text node to show the \"original\" value.\n new Tag(_PLACEHOLDER_TAG$3, { name: ph.name }, [exTag, icuAsText])\n ];\n }\n serialize(nodes) {\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n}\nfunction digest(message) {\n return decimalDigest(message);\n}\n// TC requires at least one non-empty example on placeholders\nclass ExampleVisitor {\n addDefaultExamples(node) {\n node.visit(this);\n return node;\n }\n visitTag(tag) {\n if (tag.name === _PLACEHOLDER_TAG$3) {\n if (!tag.children || tag.children.length == 0) {\n const exText = new Text$1(tag.attrs['name'] || '...');\n tag.children = [new Tag(_EXAMPLE_TAG, {}, [exText])];\n }\n }\n else if (tag.children) {\n tag.children.forEach(node => node.visit(this));\n }\n }\n visitText(text) { }\n visitDeclaration(decl) { }\n visitDoctype(doctype) { }\n}\n// XMB/XTB placeholders can only contain A-Z, 0-9 and _\nfunction toPublicName(internalName) {\n return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/* Closure variables holding messages must be named `MSG_[A-Z0-9]+` */\nconst CLOSURE_TRANSLATION_VAR_PREFIX = 'MSG_';\n/**\n * Prefix for non-`goog.getMsg` i18n-related vars.\n * Note: the prefix uses lowercase characters intentionally due to a Closure behavior that\n * considers variables like `I18N_0` as constants and throws an error when their value changes.\n */\nconst TRANSLATION_VAR_PREFIX = 'i18n_';\n/** Name of the i18n attributes **/\nconst I18N_ATTR = 'i18n';\nconst I18N_ATTR_PREFIX = 'i18n-';\n/** Prefix of var expressions used in ICUs */\nconst I18N_ICU_VAR_PREFIX = 'VAR_';\n/** Prefix of ICU expressions for post processing */\nconst I18N_ICU_MAPPING_PREFIX = 'I18N_EXP_';\n/** Placeholder wrapper for i18n expressions **/\nconst I18N_PLACEHOLDER_SYMBOL = '�';\nfunction isI18nAttribute(name) {\n return name === I18N_ATTR || name.startsWith(I18N_ATTR_PREFIX);\n}\nfunction isI18nRootNode(meta) {\n return meta instanceof Message;\n}\nfunction isSingleI18nIcu(meta) {\n return isI18nRootNode(meta) && meta.nodes.length === 1 && meta.nodes[0] instanceof Icu;\n}\nfunction hasI18nMeta(node) {\n return !!node.i18n;\n}\nfunction hasI18nAttrs(element) {\n return element.attrs.some((attr) => isI18nAttribute(attr.name));\n}\nfunction icuFromI18nMessage(message) {\n return message.nodes[0];\n}\nfunction wrapI18nPlaceholder(content, contextId = 0) {\n const blockId = contextId > 0 ? `:${contextId}` : '';\n return `${I18N_PLACEHOLDER_SYMBOL}${content}${blockId}${I18N_PLACEHOLDER_SYMBOL}`;\n}\nfunction assembleI18nBoundString(strings, bindingStartIndex = 0, contextId = 0) {\n if (!strings.length)\n return '';\n let acc = '';\n const lastIdx = strings.length - 1;\n for (let i = 0; i < lastIdx; i++) {\n acc += `${strings[i]}${wrapI18nPlaceholder(bindingStartIndex + i, contextId)}`;\n }\n acc += strings[lastIdx];\n return acc;\n}\nfunction getSeqNumberGenerator(startsAt = 0) {\n let current = startsAt;\n return () => current++;\n}\nfunction placeholdersToParams(placeholders) {\n const params = {};\n placeholders.forEach((values, key) => {\n params[key] = literal(values.length > 1 ? `[${values.join('|')}]` : values[0]);\n });\n return params;\n}\nfunction updatePlaceholderMap(map, name, ...values) {\n const current = map.get(name) || [];\n current.push(...values);\n map.set(name, current);\n}\nfunction assembleBoundTextPlaceholders(meta, bindingStartIndex = 0, contextId = 0) {\n const startIdx = bindingStartIndex;\n const placeholders = new Map();\n const node = meta instanceof Message ? meta.nodes.find(node => node instanceof Container) : meta;\n if (node) {\n node\n .children\n .filter((child) => child instanceof Placeholder)\n .forEach((child, idx) => {\n const content = wrapI18nPlaceholder(startIdx + idx, contextId);\n updatePlaceholderMap(placeholders, child.name, content);\n });\n }\n return placeholders;\n}\n/**\n * Format the placeholder names in a map of placeholders to expressions.\n *\n * The placeholder names are converted from \"internal\" format (e.g. `START_TAG_DIV_1`) to \"external\"\n * format (e.g. `startTagDiv_1`).\n *\n * @param params A map of placeholder names to expressions.\n * @param useCamelCase whether to camelCase the placeholder name when formatting.\n * @returns A new map of formatted placeholder names to expressions.\n */\nfunction formatI18nPlaceholderNamesInMap(params = {}, useCamelCase) {\n const _params = {};\n if (params && Object.keys(params).length) {\n Object.keys(params).forEach(key => _params[formatI18nPlaceholderName(key, useCamelCase)] = params[key]);\n }\n return _params;\n}\n/**\n * Converts internal placeholder names to public-facing format\n * (for example to use in goog.getMsg call).\n * Example: `START_TAG_DIV_1` is converted to `startTagDiv_1`.\n *\n * @param name The placeholder name that should be formatted\n * @returns Formatted placeholder name\n */\nfunction formatI18nPlaceholderName(name, useCamelCase = true) {\n const publicName = toPublicName(name);\n if (!useCamelCase) {\n return publicName;\n }\n const chunks = publicName.split('_');\n if (chunks.length === 1) {\n // if no \"_\" found - just lowercase the value\n return name.toLowerCase();\n }\n let postfix;\n // eject last element if it's a number\n if (/^\\d+$/.test(chunks[chunks.length - 1])) {\n postfix = chunks.pop();\n }\n let raw = chunks.shift().toLowerCase();\n if (chunks.length) {\n raw += chunks.map(c => c.charAt(0).toUpperCase() + c.slice(1).toLowerCase()).join('');\n }\n return postfix ? `${raw}_${postfix}` : raw;\n}\n/**\n * Generates a prefix for translation const name.\n *\n * @param extra Additional local prefix that should be injected into translation var name\n * @returns Complete translation const prefix\n */\nfunction getTranslationConstPrefix(extra) {\n return `${CLOSURE_TRANSLATION_VAR_PREFIX}${extra}`.toUpperCase();\n}\n/**\n * Generate AST to declare a variable. E.g. `var I18N_1;`.\n * @param variable the name of the variable to declare.\n */\nfunction declareI18nVariable(variable) {\n return new DeclareVarStmt(variable.name, undefined, INFERRED_TYPE, undefined, variable.sourceSpan);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Checks whether an object key contains potentially unsafe chars, thus the key should be wrapped in\n * quotes. Note: we do not wrap all keys into quotes, as it may have impact on minification and may\n * bot work in some cases when object keys are mangled by minifier.\n *\n * TODO(FW-1136): this is a temporary solution, we need to come up with a better way of working with\n * inputs that contain potentially unsafe chars.\n */\nconst UNSAFE_OBJECT_KEY_NAME_REGEXP = /[-.]/;\n/** Name of the temporary to use during data binding */\nconst TEMPORARY_NAME = '_t';\n/** Name of the context parameter passed into a template function */\nconst CONTEXT_NAME = 'ctx';\n/** Name of the RenderFlag passed into a template function */\nconst RENDER_FLAGS = 'rf';\n/** The prefix reference variables */\nconst REFERENCE_PREFIX = '_r';\n/** The name of the implicit context reference */\nconst IMPLICIT_REFERENCE = '$implicit';\n/** Non bindable attribute name **/\nconst NON_BINDABLE_ATTR = 'ngNonBindable';\n/** Name for the variable keeping track of the context returned by `ɵɵrestoreView`. */\nconst RESTORED_VIEW_CONTEXT_NAME = 'restoredCtx';\n/**\n * Maximum length of a single instruction chain. Because our output AST uses recursion, we're\n * limited in how many expressions we can nest before we reach the call stack limit. This\n * length is set very conservatively in order to reduce the chance of problems.\n */\nconst MAX_CHAIN_LENGTH = 500;\n/** Instructions that support chaining. */\nconst CHAINABLE_INSTRUCTIONS = new Set([\n Identifiers.element,\n Identifiers.elementStart,\n Identifiers.elementEnd,\n Identifiers.elementContainer,\n Identifiers.elementContainerStart,\n Identifiers.elementContainerEnd,\n Identifiers.i18nExp,\n Identifiers.listener,\n Identifiers.classProp,\n Identifiers.syntheticHostListener,\n Identifiers.hostProperty,\n Identifiers.syntheticHostProperty,\n Identifiers.property,\n Identifiers.propertyInterpolate1,\n Identifiers.propertyInterpolate2,\n Identifiers.propertyInterpolate3,\n Identifiers.propertyInterpolate4,\n Identifiers.propertyInterpolate5,\n Identifiers.propertyInterpolate6,\n Identifiers.propertyInterpolate7,\n Identifiers.propertyInterpolate8,\n Identifiers.propertyInterpolateV,\n Identifiers.attribute,\n Identifiers.attributeInterpolate1,\n Identifiers.attributeInterpolate2,\n Identifiers.attributeInterpolate3,\n Identifiers.attributeInterpolate4,\n Identifiers.attributeInterpolate5,\n Identifiers.attributeInterpolate6,\n Identifiers.attributeInterpolate7,\n Identifiers.attributeInterpolate8,\n Identifiers.attributeInterpolateV,\n Identifiers.styleProp,\n Identifiers.stylePropInterpolate1,\n Identifiers.stylePropInterpolate2,\n Identifiers.stylePropInterpolate3,\n Identifiers.stylePropInterpolate4,\n Identifiers.stylePropInterpolate5,\n Identifiers.stylePropInterpolate6,\n Identifiers.stylePropInterpolate7,\n Identifiers.stylePropInterpolate8,\n Identifiers.stylePropInterpolateV,\n Identifiers.textInterpolate,\n Identifiers.textInterpolate1,\n Identifiers.textInterpolate2,\n Identifiers.textInterpolate3,\n Identifiers.textInterpolate4,\n Identifiers.textInterpolate5,\n Identifiers.textInterpolate6,\n Identifiers.textInterpolate7,\n Identifiers.textInterpolate8,\n Identifiers.textInterpolateV,\n]);\n/** Generates a call to a single instruction. */\nfunction invokeInstruction(span, reference, params) {\n return importExpr(reference, null, span).callFn(params, span);\n}\n/**\n * Creates an allocator for a temporary variable.\n *\n * A variable declaration is added to the statements the first time the allocator is invoked.\n */\nfunction temporaryAllocator(statements, name) {\n let temp = null;\n return () => {\n if (!temp) {\n statements.push(new DeclareVarStmt(TEMPORARY_NAME, undefined, DYNAMIC_TYPE));\n temp = variable(name);\n }\n return temp;\n };\n}\nfunction invalid(arg) {\n throw new Error(`Invalid state: Visitor ${this.constructor.name} doesn't handle ${arg.constructor.name}`);\n}\nfunction asLiteral(value) {\n if (Array.isArray(value)) {\n return literalArr(value.map(asLiteral));\n }\n return literal(value, INFERRED_TYPE);\n}\nfunction conditionallyCreateMapObjectLiteral(keys, keepDeclared) {\n if (Object.getOwnPropertyNames(keys).length > 0) {\n return mapToExpression(keys, keepDeclared);\n }\n return null;\n}\nfunction mapToExpression(map, keepDeclared) {\n return literalMap(Object.getOwnPropertyNames(map).map(key => {\n // canonical syntax: `dirProp: publicProp`\n const value = map[key];\n let declaredName;\n let publicName;\n let minifiedName;\n let needsDeclaredName;\n if (Array.isArray(value)) {\n [publicName, declaredName] = value;\n minifiedName = key;\n needsDeclaredName = publicName !== declaredName;\n }\n else {\n minifiedName = declaredName = key;\n publicName = value;\n needsDeclaredName = false;\n }\n return {\n key: minifiedName,\n // put quotes around keys that contain potentially unsafe characters\n quoted: UNSAFE_OBJECT_KEY_NAME_REGEXP.test(minifiedName),\n value: (keepDeclared && needsDeclaredName) ?\n literalArr([asLiteral(publicName), asLiteral(declaredName)]) :\n asLiteral(publicName)\n };\n }));\n}\n/**\n * Remove trailing null nodes as they are implied.\n */\nfunction trimTrailingNulls(parameters) {\n while (isNull(parameters[parameters.length - 1])) {\n parameters.pop();\n }\n return parameters;\n}\nfunction getQueryPredicate(query, constantPool) {\n if (Array.isArray(query.predicate)) {\n let predicate = [];\n query.predicate.forEach((selector) => {\n // Each item in predicates array may contain strings with comma-separated refs\n // (for ex. 'ref, ref1, ..., refN'), thus we extract individual refs and store them\n // as separate array entities\n const selectors = selector.split(',').map(token => literal(token.trim()));\n predicate.push(...selectors);\n });\n return constantPool.getConstLiteral(literalArr(predicate), true);\n }\n else {\n // The original predicate may have been wrapped in a `forwardRef()` call.\n switch (query.predicate.forwardRef) {\n case 0 /* ForwardRefHandling.None */:\n case 2 /* ForwardRefHandling.Unwrapped */:\n return query.predicate.expression;\n case 1 /* ForwardRefHandling.Wrapped */:\n return importExpr(Identifiers.resolveForwardRef).callFn([query.predicate.expression]);\n }\n }\n}\n/**\n * A representation for an object literal used during codegen of definition objects. The generic\n * type `T` allows to reference a documented type of the generated structure, such that the\n * property names that are set can be resolved to their documented declaration.\n */\nclass DefinitionMap {\n constructor() {\n this.values = [];\n }\n set(key, value) {\n if (value) {\n this.values.push({ key: key, value, quoted: false });\n }\n }\n toLiteralMap() {\n return literalMap(this.values);\n }\n}\n/**\n * Extract a map of properties to values for a given element or template node, which can be used\n * by the directive matching machinery.\n *\n * @param elOrTpl the element or template in question\n * @return an object set up for directive matching. For attributes on the element/template, this\n * object maps a property name to its (static) value. For any bindings, this map simply maps the\n * property name to an empty string.\n */\nfunction getAttrsForDirectiveMatching(elOrTpl) {\n const attributesMap = {};\n if (elOrTpl instanceof Template && elOrTpl.tagName !== 'ng-template') {\n elOrTpl.templateAttrs.forEach(a => attributesMap[a.name] = '');\n }\n else {\n elOrTpl.attributes.forEach(a => {\n if (!isI18nAttribute(a.name)) {\n attributesMap[a.name] = a.value;\n }\n });\n elOrTpl.inputs.forEach(i => {\n attributesMap[i.name] = '';\n });\n elOrTpl.outputs.forEach(o => {\n attributesMap[o.name] = '';\n });\n }\n return attributesMap;\n}\n/**\n * Gets the number of arguments expected to be passed to a generated instruction in the case of\n * interpolation instructions.\n * @param interpolation An interpolation ast\n */\nfunction getInterpolationArgsLength(interpolation) {\n const { expressions, strings } = interpolation;\n if (expressions.length === 1 && strings.length === 2 && strings[0] === '' && strings[1] === '') {\n // If the interpolation has one interpolated value, but the prefix and suffix are both empty\n // strings, we only pass one argument, to a special instruction like `propertyInterpolate` or\n // `textInterpolate`.\n return 1;\n }\n else {\n return expressions.length + strings.length;\n }\n}\n/**\n * Generates the final instruction call statements based on the passed in configuration.\n * Will try to chain instructions as much as possible, if chaining is supported.\n */\nfunction getInstructionStatements(instructions) {\n const statements = [];\n let pendingExpression = null;\n let pendingExpressionType = null;\n let chainLength = 0;\n for (const current of instructions) {\n const resolvedParams = (typeof current.paramsOrFn === 'function' ? current.paramsOrFn() : current.paramsOrFn) ??\n [];\n const params = Array.isArray(resolvedParams) ? resolvedParams : [resolvedParams];\n // If the current instruction is the same as the previous one\n // and it can be chained, add another call to the chain.\n if (chainLength < MAX_CHAIN_LENGTH && pendingExpressionType === current.reference &&\n CHAINABLE_INSTRUCTIONS.has(pendingExpressionType)) {\n // We'll always have a pending expression when there's a pending expression type.\n pendingExpression = pendingExpression.callFn(params, pendingExpression.sourceSpan);\n chainLength++;\n }\n else {\n if (pendingExpression !== null) {\n statements.push(pendingExpression.toStmt());\n }\n pendingExpression = invokeInstruction(current.span, current.reference, params);\n pendingExpressionType = current.reference;\n chainLength = 0;\n }\n }\n // Since the current instruction adds the previous one to the statements,\n // we may be left with the final one at the end that is still pending.\n if (pendingExpression !== null) {\n statements.push(pendingExpression.toStmt());\n }\n return statements;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction compileInjectable(meta, resolveForwardRefs) {\n let result = null;\n const factoryMeta = {\n name: meta.name,\n type: meta.type,\n internalType: meta.internalType,\n typeArgumentCount: meta.typeArgumentCount,\n deps: [],\n target: FactoryTarget$1.Injectable,\n };\n if (meta.useClass !== undefined) {\n // meta.useClass has two modes of operation. Either deps are specified, in which case `new` is\n // used to instantiate the class with dependencies injected, or deps are not specified and\n // the factory of the class is used to instantiate it.\n //\n // A special case exists for useClass: Type where Type is the injectable type itself and no\n // deps are specified, in which case 'useClass' is effectively ignored.\n const useClassOnSelf = meta.useClass.expression.isEquivalent(meta.internalType);\n let deps = undefined;\n if (meta.deps !== undefined) {\n deps = meta.deps;\n }\n if (deps !== undefined) {\n // factory: () => new meta.useClass(...deps)\n result = compileFactoryFunction({\n ...factoryMeta,\n delegate: meta.useClass.expression,\n delegateDeps: deps,\n delegateType: R3FactoryDelegateType.Class,\n });\n }\n else if (useClassOnSelf) {\n result = compileFactoryFunction(factoryMeta);\n }\n else {\n result = {\n statements: [],\n expression: delegateToFactory(meta.type.value, meta.useClass.expression, resolveForwardRefs)\n };\n }\n }\n else if (meta.useFactory !== undefined) {\n if (meta.deps !== undefined) {\n result = compileFactoryFunction({\n ...factoryMeta,\n delegate: meta.useFactory,\n delegateDeps: meta.deps || [],\n delegateType: R3FactoryDelegateType.Function,\n });\n }\n else {\n result = {\n statements: [],\n expression: fn([], [new ReturnStatement(meta.useFactory.callFn([]))])\n };\n }\n }\n else if (meta.useValue !== undefined) {\n // Note: it's safe to use `meta.useValue` instead of the `USE_VALUE in meta` check used for\n // client code because meta.useValue is an Expression which will be defined even if the actual\n // value is undefined.\n result = compileFactoryFunction({\n ...factoryMeta,\n expression: meta.useValue.expression,\n });\n }\n else if (meta.useExisting !== undefined) {\n // useExisting is an `inject` call on the existing token.\n result = compileFactoryFunction({\n ...factoryMeta,\n expression: importExpr(Identifiers.inject).callFn([meta.useExisting.expression]),\n });\n }\n else {\n result = {\n statements: [],\n expression: delegateToFactory(meta.type.value, meta.internalType, resolveForwardRefs)\n };\n }\n const token = meta.internalType;\n const injectableProps = new DefinitionMap();\n injectableProps.set('token', token);\n injectableProps.set('factory', result.expression);\n // Only generate providedIn property if it has a non-null value\n if (meta.providedIn.expression.value !== null) {\n injectableProps.set('providedIn', convertFromMaybeForwardRefExpression(meta.providedIn));\n }\n const expression = importExpr(Identifiers.ɵɵdefineInjectable)\n .callFn([injectableProps.toLiteralMap()], undefined, true);\n return {\n expression,\n type: createInjectableType(meta),\n statements: result.statements,\n };\n}\nfunction createInjectableType(meta) {\n return new ExpressionType(importExpr(Identifiers.InjectableDeclaration, [typeWithParameters(meta.type.type, meta.typeArgumentCount)]));\n}\nfunction delegateToFactory(type, internalType, unwrapForwardRefs) {\n if (type.node === internalType.node) {\n // The types are the same, so we can simply delegate directly to the type's factory.\n // ```\n // factory: type.ɵfac\n // ```\n return internalType.prop('ɵfac');\n }\n if (!unwrapForwardRefs) {\n // The type is not wrapped in a `forwardRef()`, so we create a simple factory function that\n // accepts a sub-type as an argument.\n // ```\n // factory: function(t) { return internalType.ɵfac(t); }\n // ```\n return createFactoryFunction(internalType);\n }\n // The internalType is actually wrapped in a `forwardRef()` so we need to resolve that before\n // calling its factory.\n // ```\n // factory: function(t) { return core.resolveForwardRef(type).ɵfac(t); }\n // ```\n const unwrappedType = importExpr(Identifiers.resolveForwardRef).callFn([internalType]);\n return createFactoryFunction(unwrappedType);\n}\nfunction createFactoryFunction(type) {\n return fn([new FnParam('t', DYNAMIC_TYPE)], [new ReturnStatement(type.prop('ɵfac').callFn([variable('t')]))]);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst UNUSABLE_INTERPOLATION_REGEXPS = [\n /^\\s*$/,\n /[<>]/,\n /^[{}]$/,\n /&(#|[a-z])/i,\n /^\\/\\//, // comment\n];\nfunction assertInterpolationSymbols(identifier, value) {\n if (value != null && !(Array.isArray(value) && value.length == 2)) {\n throw new Error(`Expected '${identifier}' to be an array, [start, end].`);\n }\n else if (value != null) {\n const start = value[0];\n const end = value[1];\n // Check for unusable interpolation symbols\n UNUSABLE_INTERPOLATION_REGEXPS.forEach(regexp => {\n if (regexp.test(start) || regexp.test(end)) {\n throw new Error(`['${start}', '${end}'] contains unusable interpolation symbol.`);\n }\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass InterpolationConfig {\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n static fromArray(markers) {\n if (!markers) {\n return DEFAULT_INTERPOLATION_CONFIG;\n }\n assertInterpolationSymbols('interpolation', markers);\n return new InterpolationConfig(markers[0], markers[1]);\n }\n}\nconst DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst $EOF = 0;\nconst $BSPACE = 8;\nconst $TAB = 9;\nconst $LF = 10;\nconst $VTAB = 11;\nconst $FF = 12;\nconst $CR = 13;\nconst $SPACE = 32;\nconst $BANG = 33;\nconst $DQ = 34;\nconst $HASH = 35;\nconst $$ = 36;\nconst $PERCENT = 37;\nconst $AMPERSAND = 38;\nconst $SQ = 39;\nconst $LPAREN = 40;\nconst $RPAREN = 41;\nconst $STAR = 42;\nconst $PLUS = 43;\nconst $COMMA = 44;\nconst $MINUS = 45;\nconst $PERIOD = 46;\nconst $SLASH = 47;\nconst $COLON = 58;\nconst $SEMICOLON = 59;\nconst $LT = 60;\nconst $EQ = 61;\nconst $GT = 62;\nconst $QUESTION = 63;\nconst $0 = 48;\nconst $7 = 55;\nconst $9 = 57;\nconst $A = 65;\nconst $E = 69;\nconst $F = 70;\nconst $X = 88;\nconst $Z = 90;\nconst $LBRACKET = 91;\nconst $BACKSLASH = 92;\nconst $RBRACKET = 93;\nconst $CARET = 94;\nconst $_ = 95;\nconst $a = 97;\nconst $b = 98;\nconst $e = 101;\nconst $f = 102;\nconst $n = 110;\nconst $r = 114;\nconst $t = 116;\nconst $u = 117;\nconst $v = 118;\nconst $x = 120;\nconst $z = 122;\nconst $LBRACE = 123;\nconst $BAR = 124;\nconst $RBRACE = 125;\nconst $NBSP = 160;\nconst $PIPE = 124;\nconst $TILDA = 126;\nconst $AT = 64;\nconst $BT = 96;\nfunction isWhitespace(code) {\n return (code >= $TAB && code <= $SPACE) || (code == $NBSP);\n}\nfunction isDigit(code) {\n return $0 <= code && code <= $9;\n}\nfunction isAsciiLetter(code) {\n return code >= $a && code <= $z || code >= $A && code <= $Z;\n}\nfunction isAsciiHexDigit(code) {\n return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);\n}\nfunction isNewLine(code) {\n return code === $LF || code === $CR;\n}\nfunction isOctalDigit(code) {\n return $0 <= code && code <= $7;\n}\nfunction isQuote(code) {\n return code === $SQ || code === $DQ || code === $BT;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ParseLocation {\n constructor(file, offset, line, col) {\n this.file = file;\n this.offset = offset;\n this.line = line;\n this.col = col;\n }\n toString() {\n return this.offset != null ? `${this.file.url}@${this.line}:${this.col}` : this.file.url;\n }\n moveBy(delta) {\n const source = this.file.content;\n const len = source.length;\n let offset = this.offset;\n let line = this.line;\n let col = this.col;\n while (offset > 0 && delta < 0) {\n offset--;\n delta++;\n const ch = source.charCodeAt(offset);\n if (ch == $LF) {\n line--;\n const priorLine = source.substring(0, offset - 1).lastIndexOf(String.fromCharCode($LF));\n col = priorLine > 0 ? offset - priorLine : offset;\n }\n else {\n col--;\n }\n }\n while (offset < len && delta > 0) {\n const ch = source.charCodeAt(offset);\n offset++;\n delta--;\n if (ch == $LF) {\n line++;\n col = 0;\n }\n else {\n col++;\n }\n }\n return new ParseLocation(this.file, offset, line, col);\n }\n // Return the source around the location\n // Up to `maxChars` or `maxLines` on each side of the location\n getContext(maxChars, maxLines) {\n const content = this.file.content;\n let startOffset = this.offset;\n if (startOffset != null) {\n if (startOffset > content.length - 1) {\n startOffset = content.length - 1;\n }\n let endOffset = startOffset;\n let ctxChars = 0;\n let ctxLines = 0;\n while (ctxChars < maxChars && startOffset > 0) {\n startOffset--;\n ctxChars++;\n if (content[startOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n ctxChars = 0;\n ctxLines = 0;\n while (ctxChars < maxChars && endOffset < content.length - 1) {\n endOffset++;\n ctxChars++;\n if (content[endOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n return {\n before: content.substring(startOffset, this.offset),\n after: content.substring(this.offset, endOffset + 1),\n };\n }\n return null;\n }\n}\nclass ParseSourceFile {\n constructor(content, url) {\n this.content = content;\n this.url = url;\n }\n}\nclass ParseSourceSpan {\n /**\n * Create an object that holds information about spans of tokens/nodes captured during\n * lexing/parsing of text.\n *\n * @param start\n * The location of the start of the span (having skipped leading trivia).\n * Skipping leading trivia makes source-spans more \"user friendly\", since things like HTML\n * elements will appear to begin at the start of the opening tag, rather than at the start of any\n * leading trivia, which could include newlines.\n *\n * @param end\n * The location of the end of the span.\n *\n * @param fullStart\n * The start of the token without skipping the leading trivia.\n * This is used by tooling that splits tokens further, such as extracting Angular interpolations\n * from text tokens. Such tooling creates new source-spans relative to the original token's\n * source-span. If leading trivia characters have been skipped then the new source-spans may be\n * incorrectly offset.\n *\n * @param details\n * Additional information (such as identifier names) that should be associated with the span.\n */\n constructor(start, end, fullStart = start, details = null) {\n this.start = start;\n this.end = end;\n this.fullStart = fullStart;\n this.details = details;\n }\n toString() {\n return this.start.file.content.substring(this.start.offset, this.end.offset);\n }\n}\nvar ParseErrorLevel;\n(function (ParseErrorLevel) {\n ParseErrorLevel[ParseErrorLevel[\"WARNING\"] = 0] = \"WARNING\";\n ParseErrorLevel[ParseErrorLevel[\"ERROR\"] = 1] = \"ERROR\";\n})(ParseErrorLevel || (ParseErrorLevel = {}));\nclass ParseError {\n constructor(span, msg, level = ParseErrorLevel.ERROR) {\n this.span = span;\n this.msg = msg;\n this.level = level;\n }\n contextualMessage() {\n const ctx = this.span.start.getContext(100, 3);\n return ctx ? `${this.msg} (\"${ctx.before}[${ParseErrorLevel[this.level]} ->]${ctx.after}\")` :\n this.msg;\n }\n toString() {\n const details = this.span.details ? `, ${this.span.details}` : '';\n return `${this.contextualMessage()}: ${this.span.start}${details}`;\n }\n}\n/**\n * Generates Source Span object for a given R3 Type for JIT mode.\n *\n * @param kind Component or Directive.\n * @param typeName name of the Component or Directive.\n * @param sourceUrl reference to Component or Directive source.\n * @returns instance of ParseSourceSpan that represent a given Component or Directive.\n */\nfunction r3JitTypeSourceSpan(kind, typeName, sourceUrl) {\n const sourceFileName = `in ${kind} ${typeName} in ${sourceUrl}`;\n const sourceFile = new ParseSourceFile('', sourceFileName);\n return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1));\n}\nlet _anonymousTypeIndex = 0;\nfunction identifierName(compileIdentifier) {\n if (!compileIdentifier || !compileIdentifier.reference) {\n return null;\n }\n const ref = compileIdentifier.reference;\n if (ref['__anonymousType']) {\n return ref['__anonymousType'];\n }\n if (ref['__forward_ref__']) {\n // We do not want to try to stringify a `forwardRef()` function because that would cause the\n // inner function to be evaluated too early, defeating the whole point of the `forwardRef`.\n return '__forward_ref__';\n }\n let identifier = stringify(ref);\n if (identifier.indexOf('(') >= 0) {\n // case: anonymous functions!\n identifier = `anonymous_${_anonymousTypeIndex++}`;\n ref['__anonymousType'] = identifier;\n }\n else {\n identifier = sanitizeIdentifier(identifier);\n }\n return identifier;\n}\nfunction sanitizeIdentifier(name) {\n return name.replace(/\\W/g, '_');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * In TypeScript, tagged template functions expect a \"template object\", which is an array of\n * \"cooked\" strings plus a `raw` property that contains an array of \"raw\" strings. This is\n * typically constructed with a function called `__makeTemplateObject(cooked, raw)`, but it may not\n * be available in all environments.\n *\n * This is a JavaScript polyfill that uses __makeTemplateObject when it's available, but otherwise\n * creates an inline helper with the same functionality.\n *\n * In the inline function, if `Object.defineProperty` is available we use that to attach the `raw`\n * array.\n */\nconst makeTemplateObjectPolyfill = '(this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e})';\nclass AbstractJsEmitterVisitor extends AbstractEmitterVisitor {\n constructor() {\n super(false);\n }\n visitWrappedNodeExpr(ast, ctx) {\n throw new Error('Cannot emit a WrappedNodeExpr in Javascript.');\n }\n visitDeclareVarStmt(stmt, ctx) {\n ctx.print(stmt, `var ${stmt.name}`);\n if (stmt.value) {\n ctx.print(stmt, ' = ');\n stmt.value.visitExpression(this, ctx);\n }\n ctx.println(stmt, `;`);\n return null;\n }\n visitTaggedTemplateExpr(ast, ctx) {\n // The following convoluted piece of code is effectively the downlevelled equivalent of\n // ```\n // tag`...`\n // ```\n // which is effectively like:\n // ```\n // tag(__makeTemplateObject(cooked, raw), expression1, expression2, ...);\n // ```\n const elements = ast.template.elements;\n ast.tag.visitExpression(this, ctx);\n ctx.print(ast, `(${makeTemplateObjectPolyfill}(`);\n ctx.print(ast, `[${elements.map(part => escapeIdentifier(part.text, false)).join(', ')}], `);\n ctx.print(ast, `[${elements.map(part => escapeIdentifier(part.rawText, false)).join(', ')}])`);\n ast.template.expressions.forEach(expression => {\n ctx.print(ast, ', ');\n expression.visitExpression(this, ctx);\n });\n ctx.print(ast, ')');\n return null;\n }\n visitFunctionExpr(ast, ctx) {\n ctx.print(ast, `function${ast.name ? ' ' + ast.name : ''}(`);\n this._visitParams(ast.params, ctx);\n ctx.println(ast, `) {`);\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, `}`);\n return null;\n }\n visitDeclareFunctionStmt(stmt, ctx) {\n ctx.print(stmt, `function ${stmt.name}(`);\n this._visitParams(stmt.params, ctx);\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n visitLocalizedString(ast, ctx) {\n // The following convoluted piece of code is effectively the downlevelled equivalent of\n // ```\n // $localize `...`\n // ```\n // which is effectively like:\n // ```\n // $localize(__makeTemplateObject(cooked, raw), expression1, expression2, ...);\n // ```\n ctx.print(ast, `$localize(${makeTemplateObjectPolyfill}(`);\n const parts = [ast.serializeI18nHead()];\n for (let i = 1; i < ast.messageParts.length; i++) {\n parts.push(ast.serializeI18nTemplatePart(i));\n }\n ctx.print(ast, `[${parts.map(part => escapeIdentifier(part.cooked, false)).join(', ')}], `);\n ctx.print(ast, `[${parts.map(part => escapeIdentifier(part.raw, false)).join(', ')}])`);\n ast.expressions.forEach(expression => {\n ctx.print(ast, ', ');\n expression.visitExpression(this, ctx);\n });\n ctx.print(ast, ')');\n return null;\n }\n _visitParams(params, ctx) {\n this.visitAllObjects(param => ctx.print(null, param.name), params, ctx, ',');\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy;\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy() {\n if (policy === undefined) {\n policy = null;\n if (_global.trustedTypes) {\n try {\n policy =\n _global.trustedTypes.createPolicy('angular#unsafe-jit', {\n createScript: (s) => s,\n });\n }\n catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security In particular, it must be assured that the provided string will\n * never cause an XSS vulnerability if used in a context that will be\n * interpreted and executed as a script by a browser, e.g. when calling eval.\n */\nfunction trustedScriptFromString(script) {\n return getPolicy()?.createScript(script) || script;\n}\n/**\n * Unsafely call the Function constructor with the given string arguments.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only called from the JIT compiler, as use in other code can lead to XSS\n * vulnerabilities.\n */\nfunction newTrustedFunctionForJIT(...args) {\n if (!_global.trustedTypes) {\n // In environments that don't support Trusted Types, fall back to the most\n // straightforward implementation:\n return new Function(...args);\n }\n // Chrome currently does not support passing TrustedScript to the Function\n // constructor. The following implements the workaround proposed on the page\n // below, where the Chromium bug is also referenced:\n // https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor\n const fnArgs = args.slice(0, -1).join(',');\n const fnBody = args[args.length - 1];\n const body = `(function anonymous(${fnArgs}\n) { ${fnBody}\n})`;\n // Using eval directly confuses the compiler and prevents this module from\n // being stripped out of JS binaries even if not used. The global['eval']\n // indirection fixes that.\n const fn = _global['eval'](trustedScriptFromString(body));\n if (fn.bind === undefined) {\n // Workaround for a browser bug that only exists in Chrome 83, where passing\n // a TrustedScript to eval just returns the TrustedScript back without\n // evaluating it. In that case, fall back to the most straightforward\n // implementation:\n return new Function(...args);\n }\n // To completely mimic the behavior of calling \"new Function\", two more\n // things need to happen:\n // 1. Stringifying the resulting function should return its source code\n fn.toString = () => body;\n // 2. When calling the resulting function, `this` should refer to `global`\n return fn.bind(_global);\n // When Trusted Types support in Function constructors is widely available,\n // the implementation of this function can be simplified to:\n // return new Function(...args.map(a => trustedScriptFromString(a)));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A helper class to manage the evaluation of JIT generated code.\n */\nclass JitEvaluator {\n /**\n *\n * @param sourceUrl The URL of the generated code.\n * @param statements An array of Angular statement AST nodes to be evaluated.\n * @param refResolver Resolves `o.ExternalReference`s into values.\n * @param createSourceMaps If true then create a source-map for the generated code and include it\n * inline as a source-map comment.\n * @returns A map of all the variables in the generated code.\n */\n evaluateStatements(sourceUrl, statements, refResolver, createSourceMaps) {\n const converter = new JitEmitterVisitor(refResolver);\n const ctx = EmitterVisitorContext.createRoot();\n // Ensure generated code is in strict mode\n if (statements.length > 0 && !isUseStrictStatement(statements[0])) {\n statements = [\n literal('use strict').toStmt(),\n ...statements,\n ];\n }\n converter.visitAllStatements(statements, ctx);\n converter.createReturnStmt(ctx);\n return this.evaluateCode(sourceUrl, ctx, converter.getArgs(), createSourceMaps);\n }\n /**\n * Evaluate a piece of JIT generated code.\n * @param sourceUrl The URL of this generated code.\n * @param ctx A context object that contains an AST of the code to be evaluated.\n * @param vars A map containing the names and values of variables that the evaluated code might\n * reference.\n * @param createSourceMap If true then create a source-map for the generated code and include it\n * inline as a source-map comment.\n * @returns The result of evaluating the code.\n */\n evaluateCode(sourceUrl, ctx, vars, createSourceMap) {\n let fnBody = `\"use strict\";${ctx.toSource()}\\n//# sourceURL=${sourceUrl}`;\n const fnArgNames = [];\n const fnArgValues = [];\n for (const argName in vars) {\n fnArgValues.push(vars[argName]);\n fnArgNames.push(argName);\n }\n if (createSourceMap) {\n // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise\n // E.g. ```\n // function anonymous(a,b,c\n // /**/) { ... }```\n // We don't want to hard code this fact, so we auto detect it via an empty function first.\n const emptyFn = newTrustedFunctionForJIT(...fnArgNames.concat('return null;')).toString();\n const headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\\n').length - 1;\n fnBody += `\\n${ctx.toSourceMapGenerator(sourceUrl, headerLines).toJsComment()}`;\n }\n const fn = newTrustedFunctionForJIT(...fnArgNames.concat(fnBody));\n return this.executeFunction(fn, fnArgValues);\n }\n /**\n * Execute a JIT generated function by calling it.\n *\n * This method can be overridden in tests to capture the functions that are generated\n * by this `JitEvaluator` class.\n *\n * @param fn A function to execute.\n * @param args The arguments to pass to the function being executed.\n * @returns The return value of the executed function.\n */\n executeFunction(fn, args) {\n return fn(...args);\n }\n}\n/**\n * An Angular AST visitor that converts AST nodes into executable JavaScript code.\n */\nclass JitEmitterVisitor extends AbstractJsEmitterVisitor {\n constructor(refResolver) {\n super();\n this.refResolver = refResolver;\n this._evalArgNames = [];\n this._evalArgValues = [];\n this._evalExportedVars = [];\n }\n createReturnStmt(ctx) {\n const stmt = new ReturnStatement(new LiteralMapExpr(this._evalExportedVars.map(resultVar => new LiteralMapEntry(resultVar, variable(resultVar), false))));\n stmt.visitStatement(this, ctx);\n }\n getArgs() {\n const result = {};\n for (let i = 0; i < this._evalArgNames.length; i++) {\n result[this._evalArgNames[i]] = this._evalArgValues[i];\n }\n return result;\n }\n visitExternalExpr(ast, ctx) {\n this._emitReferenceToExternal(ast, this.refResolver.resolveExternalReference(ast.value), ctx);\n return null;\n }\n visitWrappedNodeExpr(ast, ctx) {\n this._emitReferenceToExternal(ast, ast.node, ctx);\n return null;\n }\n visitDeclareVarStmt(stmt, ctx) {\n if (stmt.hasModifier(StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareVarStmt(stmt, ctx);\n }\n visitDeclareFunctionStmt(stmt, ctx) {\n if (stmt.hasModifier(StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareFunctionStmt(stmt, ctx);\n }\n _emitReferenceToExternal(ast, value, ctx) {\n let id = this._evalArgValues.indexOf(value);\n if (id === -1) {\n id = this._evalArgValues.length;\n this._evalArgValues.push(value);\n const name = identifierName({ reference: value }) || 'val';\n this._evalArgNames.push(`jit_${name}_${id}`);\n }\n ctx.print(ast, this._evalArgNames[id]);\n }\n}\nfunction isUseStrictStatement(statement) {\n return statement.isEquivalent(literal('use strict').toStmt());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction compileInjector(meta) {\n const definitionMap = new DefinitionMap();\n if (meta.providers !== null) {\n definitionMap.set('providers', meta.providers);\n }\n if (meta.imports.length > 0) {\n definitionMap.set('imports', literalArr(meta.imports));\n }\n const expression = importExpr(Identifiers.defineInjector).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createInjectorType(meta);\n return { expression, type, statements: [] };\n}\nfunction createInjectorType(meta) {\n return new ExpressionType(importExpr(Identifiers.InjectorDeclaration, [new ExpressionType(meta.type.type)]));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Implementation of `CompileReflector` which resolves references to @angular/core\n * symbols at runtime, according to a consumer-provided mapping.\n *\n * Only supports `resolveExternalReference`, all other methods throw.\n */\nclass R3JitReflector {\n constructor(context) {\n this.context = context;\n }\n resolveExternalReference(ref) {\n // This reflector only handles @angular/core imports.\n if (ref.moduleName !== '@angular/core') {\n throw new Error(`Cannot resolve external reference to ${ref.moduleName}, only references to @angular/core are supported.`);\n }\n if (!this.context.hasOwnProperty(ref.name)) {\n throw new Error(`No value provided for @angular/core symbol '${ref.name}'.`);\n }\n return this.context[ref.name];\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * How the selector scope of an NgModule (its declarations, imports, and exports) should be emitted\n * as a part of the NgModule definition.\n */\nvar R3SelectorScopeMode;\n(function (R3SelectorScopeMode) {\n /**\n * Emit the declarations inline into the module definition.\n *\n * This option is useful in certain contexts where it's known that JIT support is required. The\n * tradeoff here is that this emit style prevents directives and pipes from being tree-shaken if\n * they are unused, but the NgModule is used.\n */\n R3SelectorScopeMode[R3SelectorScopeMode[\"Inline\"] = 0] = \"Inline\";\n /**\n * Emit the declarations using a side effectful function call, `ɵɵsetNgModuleScope`, that is\n * guarded with the `ngJitMode` flag.\n *\n * This form of emit supports JIT and can be optimized away if the `ngJitMode` flag is set to\n * false, which allows unused directives and pipes to be tree-shaken.\n */\n R3SelectorScopeMode[R3SelectorScopeMode[\"SideEffect\"] = 1] = \"SideEffect\";\n /**\n * Don't generate selector scopes at all.\n *\n * This is useful for contexts where JIT support is known to be unnecessary.\n */\n R3SelectorScopeMode[R3SelectorScopeMode[\"Omit\"] = 2] = \"Omit\";\n})(R3SelectorScopeMode || (R3SelectorScopeMode = {}));\n/**\n * Construct an `R3NgModuleDef` for the given `R3NgModuleMetadata`.\n */\nfunction compileNgModule(meta) {\n const { adjacentType, internalType, bootstrap, declarations, imports, exports, schemas, containsForwardDecls, selectorScopeMode, id } = meta;\n const statements = [];\n const definitionMap = new DefinitionMap();\n definitionMap.set('type', internalType);\n if (bootstrap.length > 0) {\n definitionMap.set('bootstrap', refsToArray(bootstrap, containsForwardDecls));\n }\n if (selectorScopeMode === R3SelectorScopeMode.Inline) {\n // If requested to emit scope information inline, pass the `declarations`, `imports` and\n // `exports` to the `ɵɵdefineNgModule()` call directly.\n if (declarations.length > 0) {\n definitionMap.set('declarations', refsToArray(declarations, containsForwardDecls));\n }\n if (imports.length > 0) {\n definitionMap.set('imports', refsToArray(imports, containsForwardDecls));\n }\n if (exports.length > 0) {\n definitionMap.set('exports', refsToArray(exports, containsForwardDecls));\n }\n }\n else if (selectorScopeMode === R3SelectorScopeMode.SideEffect) {\n // In this mode, scope information is not passed into `ɵɵdefineNgModule` as it\n // would prevent tree-shaking of the declarations, imports and exports references. Instead, it's\n // patched onto the NgModule definition with a `ɵɵsetNgModuleScope` call that's guarded by the\n // `ngJitMode` flag.\n const setNgModuleScopeCall = generateSetNgModuleScopeCall(meta);\n if (setNgModuleScopeCall !== null) {\n statements.push(setNgModuleScopeCall);\n }\n }\n else {\n // Selector scope emit was not requested, so skip it.\n }\n if (schemas !== null && schemas.length > 0) {\n definitionMap.set('schemas', literalArr(schemas.map(ref => ref.value)));\n }\n if (id !== null) {\n definitionMap.set('id', id);\n // Generate a side-effectful call to register this NgModule by its id, as per the semantics of\n // NgModule ids.\n statements.push(importExpr(Identifiers.registerNgModuleType).callFn([adjacentType, id]).toStmt());\n }\n const expression = importExpr(Identifiers.defineNgModule).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createNgModuleType(meta);\n return { expression, type, statements };\n}\n/**\n * This function is used in JIT mode to generate the call to `ɵɵdefineNgModule()` from a call to\n * `ɵɵngDeclareNgModule()`.\n */\nfunction compileNgModuleDeclarationExpression(meta) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('type', new WrappedNodeExpr(meta.type));\n if (meta.bootstrap !== undefined) {\n definitionMap.set('bootstrap', new WrappedNodeExpr(meta.bootstrap));\n }\n if (meta.declarations !== undefined) {\n definitionMap.set('declarations', new WrappedNodeExpr(meta.declarations));\n }\n if (meta.imports !== undefined) {\n definitionMap.set('imports', new WrappedNodeExpr(meta.imports));\n }\n if (meta.exports !== undefined) {\n definitionMap.set('exports', new WrappedNodeExpr(meta.exports));\n }\n if (meta.schemas !== undefined) {\n definitionMap.set('schemas', new WrappedNodeExpr(meta.schemas));\n }\n if (meta.id !== undefined) {\n definitionMap.set('id', new WrappedNodeExpr(meta.id));\n }\n return importExpr(Identifiers.defineNgModule).callFn([definitionMap.toLiteralMap()]);\n}\nfunction createNgModuleType({ type: moduleType, declarations, exports, imports, includeImportTypes, publicDeclarationTypes }) {\n return new ExpressionType(importExpr(Identifiers.NgModuleDeclaration, [\n new ExpressionType(moduleType.type),\n publicDeclarationTypes === null ? tupleTypeOf(declarations) :\n tupleOfTypes(publicDeclarationTypes),\n includeImportTypes ? tupleTypeOf(imports) : NONE_TYPE,\n tupleTypeOf(exports),\n ]));\n}\n/**\n * Generates a function call to `ɵɵsetNgModuleScope` with all necessary information so that the\n * transitive module scope can be computed during runtime in JIT mode. This call is marked pure\n * such that the references to declarations, imports and exports may be elided causing these\n * symbols to become tree-shakeable.\n */\nfunction generateSetNgModuleScopeCall(meta) {\n const { adjacentType: moduleType, declarations, imports, exports, containsForwardDecls } = meta;\n const scopeMap = new DefinitionMap();\n if (declarations.length > 0) {\n scopeMap.set('declarations', refsToArray(declarations, containsForwardDecls));\n }\n if (imports.length > 0) {\n scopeMap.set('imports', refsToArray(imports, containsForwardDecls));\n }\n if (exports.length > 0) {\n scopeMap.set('exports', refsToArray(exports, containsForwardDecls));\n }\n if (Object.keys(scopeMap.values).length === 0) {\n return null;\n }\n // setNgModuleScope(...)\n const fnCall = new InvokeFunctionExpr(\n /* fn */ importExpr(Identifiers.setNgModuleScope), \n /* args */ [moduleType, scopeMap.toLiteralMap()]);\n // (ngJitMode guard) && setNgModuleScope(...)\n const guardedCall = jitOnlyGuardedExpression(fnCall);\n // function() { (ngJitMode guard) && setNgModuleScope(...); }\n const iife = new FunctionExpr(\n /* params */ [], \n /* statements */ [guardedCall.toStmt()]);\n // (function() { (ngJitMode guard) && setNgModuleScope(...); })()\n const iifeCall = new InvokeFunctionExpr(\n /* fn */ iife, \n /* args */ []);\n return iifeCall.toStmt();\n}\nfunction tupleTypeOf(exp) {\n const types = exp.map(ref => typeofExpr(ref.type));\n return exp.length > 0 ? expressionType(literalArr(types)) : NONE_TYPE;\n}\nfunction tupleOfTypes(types) {\n const typeofTypes = types.map(type => typeofExpr(type));\n return types.length > 0 ? expressionType(literalArr(typeofTypes)) : NONE_TYPE;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction compilePipeFromMetadata(metadata) {\n const definitionMapValues = [];\n // e.g. `name: 'myPipe'`\n definitionMapValues.push({ key: 'name', value: literal(metadata.pipeName), quoted: false });\n // e.g. `type: MyPipe`\n definitionMapValues.push({ key: 'type', value: metadata.type.value, quoted: false });\n // e.g. `pure: true`\n definitionMapValues.push({ key: 'pure', value: literal(metadata.pure), quoted: false });\n if (metadata.isStandalone) {\n definitionMapValues.push({ key: 'standalone', value: literal(true), quoted: false });\n }\n const expression = importExpr(Identifiers.definePipe).callFn([literalMap(definitionMapValues)], undefined, true);\n const type = createPipeType(metadata);\n return { expression, type, statements: [] };\n}\nfunction createPipeType(metadata) {\n return new ExpressionType(importExpr(Identifiers.PipeDeclaration, [\n typeWithParameters(metadata.type.type, metadata.typeArgumentCount),\n new ExpressionType(new LiteralExpr(metadata.pipeName)),\n new ExpressionType(new LiteralExpr(metadata.isStandalone)),\n ]));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar R3TemplateDependencyKind;\n(function (R3TemplateDependencyKind) {\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Directive\"] = 0] = \"Directive\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Pipe\"] = 1] = \"Pipe\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"NgModule\"] = 2] = \"NgModule\";\n})(R3TemplateDependencyKind || (R3TemplateDependencyKind = {}));\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ParserError {\n constructor(message, input, errLocation, ctxLocation) {\n this.input = input;\n this.errLocation = errLocation;\n this.ctxLocation = ctxLocation;\n this.message = `Parser Error: ${message} ${errLocation} [${input}] in ${ctxLocation}`;\n }\n}\nclass ParseSpan {\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n toAbsolute(absoluteOffset) {\n return new AbsoluteSourceSpan(absoluteOffset + this.start, absoluteOffset + this.end);\n }\n}\nclass AST {\n constructor(span, \n /**\n * Absolute location of the expression AST in a source code file.\n */\n sourceSpan) {\n this.span = span;\n this.sourceSpan = sourceSpan;\n }\n toString() {\n return 'AST';\n }\n}\nclass ASTWithName extends AST {\n constructor(span, sourceSpan, nameSpan) {\n super(span, sourceSpan);\n this.nameSpan = nameSpan;\n }\n}\nclass EmptyExpr extends AST {\n visit(visitor, context = null) {\n // do nothing\n }\n}\nclass ImplicitReceiver extends AST {\n visit(visitor, context = null) {\n return visitor.visitImplicitReceiver(this, context);\n }\n}\n/**\n * Receiver when something is accessed through `this` (e.g. `this.foo`). Note that this class\n * inherits from `ImplicitReceiver`, because accessing something through `this` is treated the\n * same as accessing it implicitly inside of an Angular template (e.g. `[attr.title]=\"this.title\"`\n * is the same as `[attr.title]=\"title\"`.). Inheriting allows for the `this` accesses to be treated\n * the same as implicit ones, except for a couple of exceptions like `$event` and `$any`.\n * TODO: we should find a way for this class not to extend from `ImplicitReceiver` in the future.\n */\nclass ThisReceiver extends ImplicitReceiver {\n visit(visitor, context = null) {\n return visitor.visitThisReceiver?.(this, context);\n }\n}\n/**\n * Multiple expressions separated by a semicolon.\n */\nclass Chain extends AST {\n constructor(span, sourceSpan, expressions) {\n super(span, sourceSpan);\n this.expressions = expressions;\n }\n visit(visitor, context = null) {\n return visitor.visitChain(this, context);\n }\n}\nclass Conditional extends AST {\n constructor(span, sourceSpan, condition, trueExp, falseExp) {\n super(span, sourceSpan);\n this.condition = condition;\n this.trueExp = trueExp;\n this.falseExp = falseExp;\n }\n visit(visitor, context = null) {\n return visitor.visitConditional(this, context);\n }\n}\nclass PropertyRead extends ASTWithName {\n constructor(span, sourceSpan, nameSpan, receiver, name) {\n super(span, sourceSpan, nameSpan);\n this.receiver = receiver;\n this.name = name;\n }\n visit(visitor, context = null) {\n return visitor.visitPropertyRead(this, context);\n }\n}\nclass PropertyWrite extends ASTWithName {\n constructor(span, sourceSpan, nameSpan, receiver, name, value) {\n super(span, sourceSpan, nameSpan);\n this.receiver = receiver;\n this.name = name;\n this.value = value;\n }\n visit(visitor, context = null) {\n return visitor.visitPropertyWrite(this, context);\n }\n}\nclass SafePropertyRead extends ASTWithName {\n constructor(span, sourceSpan, nameSpan, receiver, name) {\n super(span, sourceSpan, nameSpan);\n this.receiver = receiver;\n this.name = name;\n }\n visit(visitor, context = null) {\n return visitor.visitSafePropertyRead(this, context);\n }\n}\nclass KeyedRead extends AST {\n constructor(span, sourceSpan, receiver, key) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.key = key;\n }\n visit(visitor, context = null) {\n return visitor.visitKeyedRead(this, context);\n }\n}\nclass SafeKeyedRead extends AST {\n constructor(span, sourceSpan, receiver, key) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.key = key;\n }\n visit(visitor, context = null) {\n return visitor.visitSafeKeyedRead(this, context);\n }\n}\nclass KeyedWrite extends AST {\n constructor(span, sourceSpan, receiver, key, value) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.key = key;\n this.value = value;\n }\n visit(visitor, context = null) {\n return visitor.visitKeyedWrite(this, context);\n }\n}\nclass BindingPipe extends ASTWithName {\n constructor(span, sourceSpan, exp, name, args, nameSpan) {\n super(span, sourceSpan, nameSpan);\n this.exp = exp;\n this.name = name;\n this.args = args;\n }\n visit(visitor, context = null) {\n return visitor.visitPipe(this, context);\n }\n}\nclass LiteralPrimitive extends AST {\n constructor(span, sourceSpan, value) {\n super(span, sourceSpan);\n this.value = value;\n }\n visit(visitor, context = null) {\n return visitor.visitLiteralPrimitive(this, context);\n }\n}\nclass LiteralArray extends AST {\n constructor(span, sourceSpan, expressions) {\n super(span, sourceSpan);\n this.expressions = expressions;\n }\n visit(visitor, context = null) {\n return visitor.visitLiteralArray(this, context);\n }\n}\nclass LiteralMap extends AST {\n constructor(span, sourceSpan, keys, values) {\n super(span, sourceSpan);\n this.keys = keys;\n this.values = values;\n }\n visit(visitor, context = null) {\n return visitor.visitLiteralMap(this, context);\n }\n}\nclass Interpolation extends AST {\n constructor(span, sourceSpan, strings, expressions) {\n super(span, sourceSpan);\n this.strings = strings;\n this.expressions = expressions;\n }\n visit(visitor, context = null) {\n return visitor.visitInterpolation(this, context);\n }\n}\nclass Binary extends AST {\n constructor(span, sourceSpan, operation, left, right) {\n super(span, sourceSpan);\n this.operation = operation;\n this.left = left;\n this.right = right;\n }\n visit(visitor, context = null) {\n return visitor.visitBinary(this, context);\n }\n}\n/**\n * For backwards compatibility reasons, `Unary` inherits from `Binary` and mimics the binary AST\n * node that was originally used. This inheritance relation can be deleted in some future major,\n * after consumers have been given a chance to fully support Unary.\n */\nclass Unary extends Binary {\n /**\n * During the deprecation period this constructor is private, to avoid consumers from creating\n * a `Unary` with the fallback properties for `Binary`.\n */\n constructor(span, sourceSpan, operator, expr, binaryOp, binaryLeft, binaryRight) {\n super(span, sourceSpan, binaryOp, binaryLeft, binaryRight);\n this.operator = operator;\n this.expr = expr;\n // Redeclare the properties that are inherited from `Binary` as `never`, as consumers should not\n // depend on these fields when operating on `Unary`.\n this.left = null;\n this.right = null;\n this.operation = null;\n }\n /**\n * Creates a unary minus expression \"-x\", represented as `Binary` using \"0 - x\".\n */\n static createMinus(span, sourceSpan, expr) {\n return new Unary(span, sourceSpan, '-', expr, '-', new LiteralPrimitive(span, sourceSpan, 0), expr);\n }\n /**\n * Creates a unary plus expression \"+x\", represented as `Binary` using \"x - 0\".\n */\n static createPlus(span, sourceSpan, expr) {\n return new Unary(span, sourceSpan, '+', expr, '-', expr, new LiteralPrimitive(span, sourceSpan, 0));\n }\n visit(visitor, context = null) {\n if (visitor.visitUnary !== undefined) {\n return visitor.visitUnary(this, context);\n }\n return visitor.visitBinary(this, context);\n }\n}\nclass PrefixNot extends AST {\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitPrefixNot(this, context);\n }\n}\nclass NonNullAssert extends AST {\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitNonNullAssert(this, context);\n }\n}\nclass Call extends AST {\n constructor(span, sourceSpan, receiver, args, argumentSpan) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.args = args;\n this.argumentSpan = argumentSpan;\n }\n visit(visitor, context = null) {\n return visitor.visitCall(this, context);\n }\n}\nclass SafeCall extends AST {\n constructor(span, sourceSpan, receiver, args, argumentSpan) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.args = args;\n this.argumentSpan = argumentSpan;\n }\n visit(visitor, context = null) {\n return visitor.visitSafeCall(this, context);\n }\n}\n/**\n * Records the absolute position of a text span in a source file, where `start` and `end` are the\n * starting and ending byte offsets, respectively, of the text span in a source file.\n */\nclass AbsoluteSourceSpan {\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n}\nclass ASTWithSource extends AST {\n constructor(ast, source, location, absoluteOffset, errors) {\n super(new ParseSpan(0, source === null ? 0 : source.length), new AbsoluteSourceSpan(absoluteOffset, source === null ? absoluteOffset : absoluteOffset + source.length));\n this.ast = ast;\n this.source = source;\n this.location = location;\n this.errors = errors;\n }\n visit(visitor, context = null) {\n if (visitor.visitASTWithSource) {\n return visitor.visitASTWithSource(this, context);\n }\n return this.ast.visit(visitor, context);\n }\n toString() {\n return `${this.source} in ${this.location}`;\n }\n}\nclass VariableBinding {\n /**\n * @param sourceSpan entire span of the binding.\n * @param key name of the LHS along with its span.\n * @param value optional value for the RHS along with its span.\n */\n constructor(sourceSpan, key, value) {\n this.sourceSpan = sourceSpan;\n this.key = key;\n this.value = value;\n }\n}\nclass ExpressionBinding {\n /**\n * @param sourceSpan entire span of the binding.\n * @param key binding name, like ngForOf, ngForTrackBy, ngIf, along with its\n * span. Note that the length of the span may not be the same as\n * `key.source.length`. For example,\n * 1. key.source = ngFor, key.span is for \"ngFor\"\n * 2. key.source = ngForOf, key.span is for \"of\"\n * 3. key.source = ngForTrackBy, key.span is for \"trackBy\"\n * @param value optional expression for the RHS.\n */\n constructor(sourceSpan, key, value) {\n this.sourceSpan = sourceSpan;\n this.key = key;\n this.value = value;\n }\n}\nclass RecursiveAstVisitor {\n visit(ast, context) {\n // The default implementation just visits every node.\n // Classes that extend RecursiveAstVisitor should override this function\n // to selectively visit the specified node.\n ast.visit(this, context);\n }\n visitUnary(ast, context) {\n this.visit(ast.expr, context);\n }\n visitBinary(ast, context) {\n this.visit(ast.left, context);\n this.visit(ast.right, context);\n }\n visitChain(ast, context) {\n this.visitAll(ast.expressions, context);\n }\n visitConditional(ast, context) {\n this.visit(ast.condition, context);\n this.visit(ast.trueExp, context);\n this.visit(ast.falseExp, context);\n }\n visitPipe(ast, context) {\n this.visit(ast.exp, context);\n this.visitAll(ast.args, context);\n }\n visitImplicitReceiver(ast, context) { }\n visitThisReceiver(ast, context) { }\n visitInterpolation(ast, context) {\n this.visitAll(ast.expressions, context);\n }\n visitKeyedRead(ast, context) {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n }\n visitKeyedWrite(ast, context) {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n this.visit(ast.value, context);\n }\n visitLiteralArray(ast, context) {\n this.visitAll(ast.expressions, context);\n }\n visitLiteralMap(ast, context) {\n this.visitAll(ast.values, context);\n }\n visitLiteralPrimitive(ast, context) { }\n visitPrefixNot(ast, context) {\n this.visit(ast.expression, context);\n }\n visitNonNullAssert(ast, context) {\n this.visit(ast.expression, context);\n }\n visitPropertyRead(ast, context) {\n this.visit(ast.receiver, context);\n }\n visitPropertyWrite(ast, context) {\n this.visit(ast.receiver, context);\n this.visit(ast.value, context);\n }\n visitSafePropertyRead(ast, context) {\n this.visit(ast.receiver, context);\n }\n visitSafeKeyedRead(ast, context) {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n }\n visitCall(ast, context) {\n this.visit(ast.receiver, context);\n this.visitAll(ast.args, context);\n }\n visitSafeCall(ast, context) {\n this.visit(ast.receiver, context);\n this.visitAll(ast.args, context);\n }\n // This is not part of the AstVisitor interface, just a helper method\n visitAll(asts, context) {\n for (const ast of asts) {\n this.visit(ast, context);\n }\n }\n}\nclass AstTransformer {\n visitImplicitReceiver(ast, context) {\n return ast;\n }\n visitThisReceiver(ast, context) {\n return ast;\n }\n visitInterpolation(ast, context) {\n return new Interpolation(ast.span, ast.sourceSpan, ast.strings, this.visitAll(ast.expressions));\n }\n visitLiteralPrimitive(ast, context) {\n return new LiteralPrimitive(ast.span, ast.sourceSpan, ast.value);\n }\n visitPropertyRead(ast, context) {\n return new PropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name);\n }\n visitPropertyWrite(ast, context) {\n return new PropertyWrite(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name, ast.value.visit(this));\n }\n visitSafePropertyRead(ast, context) {\n return new SafePropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name);\n }\n visitLiteralArray(ast, context) {\n return new LiteralArray(ast.span, ast.sourceSpan, this.visitAll(ast.expressions));\n }\n visitLiteralMap(ast, context) {\n return new LiteralMap(ast.span, ast.sourceSpan, ast.keys, this.visitAll(ast.values));\n }\n visitUnary(ast, context) {\n switch (ast.operator) {\n case '+':\n return Unary.createPlus(ast.span, ast.sourceSpan, ast.expr.visit(this));\n case '-':\n return Unary.createMinus(ast.span, ast.sourceSpan, ast.expr.visit(this));\n default:\n throw new Error(`Unknown unary operator ${ast.operator}`);\n }\n }\n visitBinary(ast, context) {\n return new Binary(ast.span, ast.sourceSpan, ast.operation, ast.left.visit(this), ast.right.visit(this));\n }\n visitPrefixNot(ast, context) {\n return new PrefixNot(ast.span, ast.sourceSpan, ast.expression.visit(this));\n }\n visitNonNullAssert(ast, context) {\n return new NonNullAssert(ast.span, ast.sourceSpan, ast.expression.visit(this));\n }\n visitConditional(ast, context) {\n return new Conditional(ast.span, ast.sourceSpan, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));\n }\n visitPipe(ast, context) {\n return new BindingPipe(ast.span, ast.sourceSpan, ast.exp.visit(this), ast.name, this.visitAll(ast.args), ast.nameSpan);\n }\n visitKeyedRead(ast, context) {\n return new KeyedRead(ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this));\n }\n visitKeyedWrite(ast, context) {\n return new KeyedWrite(ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this), ast.value.visit(this));\n }\n visitCall(ast, context) {\n return new Call(ast.span, ast.sourceSpan, ast.receiver.visit(this), this.visitAll(ast.args), ast.argumentSpan);\n }\n visitSafeCall(ast, context) {\n return new SafeCall(ast.span, ast.sourceSpan, ast.receiver.visit(this), this.visitAll(ast.args), ast.argumentSpan);\n }\n visitAll(asts) {\n const res = [];\n for (let i = 0; i < asts.length; ++i) {\n res[i] = asts[i].visit(this);\n }\n return res;\n }\n visitChain(ast, context) {\n return new Chain(ast.span, ast.sourceSpan, this.visitAll(ast.expressions));\n }\n visitSafeKeyedRead(ast, context) {\n return new SafeKeyedRead(ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this));\n }\n}\n// A transformer that only creates new nodes if the transformer makes a change or\n// a change is made a child node.\nclass AstMemoryEfficientTransformer {\n visitImplicitReceiver(ast, context) {\n return ast;\n }\n visitThisReceiver(ast, context) {\n return ast;\n }\n visitInterpolation(ast, context) {\n const expressions = this.visitAll(ast.expressions);\n if (expressions !== ast.expressions)\n return new Interpolation(ast.span, ast.sourceSpan, ast.strings, expressions);\n return ast;\n }\n visitLiteralPrimitive(ast, context) {\n return ast;\n }\n visitPropertyRead(ast, context) {\n const receiver = ast.receiver.visit(this);\n if (receiver !== ast.receiver) {\n return new PropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name);\n }\n return ast;\n }\n visitPropertyWrite(ast, context) {\n const receiver = ast.receiver.visit(this);\n const value = ast.value.visit(this);\n if (receiver !== ast.receiver || value !== ast.value) {\n return new PropertyWrite(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, value);\n }\n return ast;\n }\n visitSafePropertyRead(ast, context) {\n const receiver = ast.receiver.visit(this);\n if (receiver !== ast.receiver) {\n return new SafePropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name);\n }\n return ast;\n }\n visitLiteralArray(ast, context) {\n const expressions = this.visitAll(ast.expressions);\n if (expressions !== ast.expressions) {\n return new LiteralArray(ast.span, ast.sourceSpan, expressions);\n }\n return ast;\n }\n visitLiteralMap(ast, context) {\n const values = this.visitAll(ast.values);\n if (values !== ast.values) {\n return new LiteralMap(ast.span, ast.sourceSpan, ast.keys, values);\n }\n return ast;\n }\n visitUnary(ast, context) {\n const expr = ast.expr.visit(this);\n if (expr !== ast.expr) {\n switch (ast.operator) {\n case '+':\n return Unary.createPlus(ast.span, ast.sourceSpan, expr);\n case '-':\n return Unary.createMinus(ast.span, ast.sourceSpan, expr);\n default:\n throw new Error(`Unknown unary operator ${ast.operator}`);\n }\n }\n return ast;\n }\n visitBinary(ast, context) {\n const left = ast.left.visit(this);\n const right = ast.right.visit(this);\n if (left !== ast.left || right !== ast.right) {\n return new Binary(ast.span, ast.sourceSpan, ast.operation, left, right);\n }\n return ast;\n }\n visitPrefixNot(ast, context) {\n const expression = ast.expression.visit(this);\n if (expression !== ast.expression) {\n return new PrefixNot(ast.span, ast.sourceSpan, expression);\n }\n return ast;\n }\n visitNonNullAssert(ast, context) {\n const expression = ast.expression.visit(this);\n if (expression !== ast.expression) {\n return new NonNullAssert(ast.span, ast.sourceSpan, expression);\n }\n return ast;\n }\n visitConditional(ast, context) {\n const condition = ast.condition.visit(this);\n const trueExp = ast.trueExp.visit(this);\n const falseExp = ast.falseExp.visit(this);\n if (condition !== ast.condition || trueExp !== ast.trueExp || falseExp !== ast.falseExp) {\n return new Conditional(ast.span, ast.sourceSpan, condition, trueExp, falseExp);\n }\n return ast;\n }\n visitPipe(ast, context) {\n const exp = ast.exp.visit(this);\n const args = this.visitAll(ast.args);\n if (exp !== ast.exp || args !== ast.args) {\n return new BindingPipe(ast.span, ast.sourceSpan, exp, ast.name, args, ast.nameSpan);\n }\n return ast;\n }\n visitKeyedRead(ast, context) {\n const obj = ast.receiver.visit(this);\n const key = ast.key.visit(this);\n if (obj !== ast.receiver || key !== ast.key) {\n return new KeyedRead(ast.span, ast.sourceSpan, obj, key);\n }\n return ast;\n }\n visitKeyedWrite(ast, context) {\n const obj = ast.receiver.visit(this);\n const key = ast.key.visit(this);\n const value = ast.value.visit(this);\n if (obj !== ast.receiver || key !== ast.key || value !== ast.value) {\n return new KeyedWrite(ast.span, ast.sourceSpan, obj, key, value);\n }\n return ast;\n }\n visitAll(asts) {\n const res = [];\n let modified = false;\n for (let i = 0; i < asts.length; ++i) {\n const original = asts[i];\n const value = original.visit(this);\n res[i] = value;\n modified = modified || value !== original;\n }\n return modified ? res : asts;\n }\n visitChain(ast, context) {\n const expressions = this.visitAll(ast.expressions);\n if (expressions !== ast.expressions) {\n return new Chain(ast.span, ast.sourceSpan, expressions);\n }\n return ast;\n }\n visitCall(ast, context) {\n const receiver = ast.receiver.visit(this);\n const args = this.visitAll(ast.args);\n if (receiver !== ast.receiver || args !== ast.args) {\n return new Call(ast.span, ast.sourceSpan, receiver, args, ast.argumentSpan);\n }\n return ast;\n }\n visitSafeCall(ast, context) {\n const receiver = ast.receiver.visit(this);\n const args = this.visitAll(ast.args);\n if (receiver !== ast.receiver || args !== ast.args) {\n return new SafeCall(ast.span, ast.sourceSpan, receiver, args, ast.argumentSpan);\n }\n return ast;\n }\n visitSafeKeyedRead(ast, context) {\n const obj = ast.receiver.visit(this);\n const key = ast.key.visit(this);\n if (obj !== ast.receiver || key !== ast.key) {\n return new SafeKeyedRead(ast.span, ast.sourceSpan, obj, key);\n }\n return ast;\n }\n}\n// Bindings\nclass ParsedProperty {\n constructor(name, expression, type, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.expression = expression;\n this.type = type;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.isLiteral = this.type === ParsedPropertyType.LITERAL_ATTR;\n this.isAnimation = this.type === ParsedPropertyType.ANIMATION;\n }\n}\nvar ParsedPropertyType;\n(function (ParsedPropertyType) {\n ParsedPropertyType[ParsedPropertyType[\"DEFAULT\"] = 0] = \"DEFAULT\";\n ParsedPropertyType[ParsedPropertyType[\"LITERAL_ATTR\"] = 1] = \"LITERAL_ATTR\";\n ParsedPropertyType[ParsedPropertyType[\"ANIMATION\"] = 2] = \"ANIMATION\";\n})(ParsedPropertyType || (ParsedPropertyType = {}));\nclass ParsedEvent {\n // Regular events have a target\n // Animation events have a phase\n constructor(name, targetOrPhase, type, handler, sourceSpan, handlerSpan, keySpan) {\n this.name = name;\n this.targetOrPhase = targetOrPhase;\n this.type = type;\n this.handler = handler;\n this.sourceSpan = sourceSpan;\n this.handlerSpan = handlerSpan;\n this.keySpan = keySpan;\n }\n}\n/**\n * ParsedVariable represents a variable declaration in a microsyntax expression.\n */\nclass ParsedVariable {\n constructor(name, value, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n}\nclass BoundElementProperty {\n constructor(name, type, securityContext, value, unit, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass EventHandlerVars {\n}\nEventHandlerVars.event = variable('$event');\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression is\n * used in an action binding (e.g. an event handler).\n */\nfunction convertActionBinding(localResolver, implicitReceiver, action, bindingId, baseSourceSpan, implicitReceiverAccesses, globals) {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver(globals);\n }\n const actionWithoutBuiltins = convertPropertyBindingBuiltins({\n createLiteralArrayConverter: (argCount) => {\n // Note: no caching for literal arrays in actions.\n return (args) => literalArr(args);\n },\n createLiteralMapConverter: (keys) => {\n // Note: no caching for literal maps in actions.\n return (values) => {\n const entries = keys.map((k, i) => ({\n key: k.key,\n value: values[i],\n quoted: k.quoted,\n }));\n return literalMap(entries);\n };\n },\n createPipeConverter: (name) => {\n throw new Error(`Illegal State: Actions are not allowed to contain pipes. Pipe: ${name}`);\n }\n }, action);\n const visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId, /* supportsInterpolation */ false, baseSourceSpan, implicitReceiverAccesses);\n const actionStmts = [];\n flattenStatements(actionWithoutBuiltins.visit(visitor, _Mode.Statement), actionStmts);\n prependTemporaryDecls(visitor.temporaryCount, bindingId, actionStmts);\n if (visitor.usesImplicitReceiver) {\n localResolver.notifyImplicitReceiverUse();\n }\n const lastIndex = actionStmts.length - 1;\n if (lastIndex >= 0) {\n const lastStatement = actionStmts[lastIndex];\n // Ensure that the value of the last expression statement is returned\n if (lastStatement instanceof ExpressionStatement) {\n actionStmts[lastIndex] = new ReturnStatement(lastStatement.expr);\n }\n }\n return actionStmts;\n}\nfunction convertPropertyBindingBuiltins(converterFactory, ast) {\n return convertBuiltins(converterFactory, ast);\n}\nclass ConvertPropertyBindingResult {\n constructor(stmts, currValExpr) {\n this.stmts = stmts;\n this.currValExpr = currValExpr;\n }\n}\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression\n * is used in property binding. The expression has to be preprocessed via\n * `convertPropertyBindingBuiltins`.\n */\nfunction convertPropertyBinding(localResolver, implicitReceiver, expressionWithoutBuiltins, bindingId) {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver();\n }\n const visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId, /* supportsInterpolation */ false);\n const outputExpr = expressionWithoutBuiltins.visit(visitor, _Mode.Expression);\n const stmts = getStatementsFromVisitor(visitor, bindingId);\n if (visitor.usesImplicitReceiver) {\n localResolver.notifyImplicitReceiverUse();\n }\n return new ConvertPropertyBindingResult(stmts, outputExpr);\n}\n/**\n * Given some expression, such as a binding or interpolation expression, and a context expression to\n * look values up on, visit each facet of the given expression resolving values from the context\n * expression such that a list of arguments can be derived from the found values that can be used as\n * arguments to an external update instruction.\n *\n * @param localResolver The resolver to use to look up expressions by name appropriately\n * @param contextVariableExpression The expression representing the context variable used to create\n * the final argument expressions\n * @param expressionWithArgumentsToExtract The expression to visit to figure out what values need to\n * be resolved and what arguments list to build.\n * @param bindingId A name prefix used to create temporary variable names if they're needed for the\n * arguments generated\n * @returns An array of expressions that can be passed as arguments to instruction expressions like\n * `o.importExpr(R3.propertyInterpolate).callFn(result)`\n */\nfunction convertUpdateArguments(localResolver, contextVariableExpression, expressionWithArgumentsToExtract, bindingId) {\n const visitor = new _AstToIrVisitor(localResolver, contextVariableExpression, bindingId, /* supportsInterpolation */ true);\n const outputExpr = visitor.visitInterpolation(expressionWithArgumentsToExtract, _Mode.Expression);\n if (visitor.usesImplicitReceiver) {\n localResolver.notifyImplicitReceiverUse();\n }\n const stmts = getStatementsFromVisitor(visitor, bindingId);\n const args = outputExpr.args;\n return { stmts, args };\n}\nfunction getStatementsFromVisitor(visitor, bindingId) {\n const stmts = [];\n for (let i = 0; i < visitor.temporaryCount; i++) {\n stmts.push(temporaryDeclaration(bindingId, i));\n }\n return stmts;\n}\nfunction convertBuiltins(converterFactory, ast) {\n const visitor = new _BuiltinAstConverter(converterFactory);\n return ast.visit(visitor);\n}\nfunction temporaryName(bindingId, temporaryNumber) {\n return `tmp_${bindingId}_${temporaryNumber}`;\n}\nfunction temporaryDeclaration(bindingId, temporaryNumber) {\n return new DeclareVarStmt(temporaryName(bindingId, temporaryNumber));\n}\nfunction prependTemporaryDecls(temporaryCount, bindingId, statements) {\n for (let i = temporaryCount - 1; i >= 0; i--) {\n statements.unshift(temporaryDeclaration(bindingId, i));\n }\n}\nvar _Mode;\n(function (_Mode) {\n _Mode[_Mode[\"Statement\"] = 0] = \"Statement\";\n _Mode[_Mode[\"Expression\"] = 1] = \"Expression\";\n})(_Mode || (_Mode = {}));\nfunction ensureStatementMode(mode, ast) {\n if (mode !== _Mode.Statement) {\n throw new Error(`Expected a statement, but saw ${ast}`);\n }\n}\nfunction ensureExpressionMode(mode, ast) {\n if (mode !== _Mode.Expression) {\n throw new Error(`Expected an expression, but saw ${ast}`);\n }\n}\nfunction convertToStatementIfNeeded(mode, expr) {\n if (mode === _Mode.Statement) {\n return expr.toStmt();\n }\n else {\n return expr;\n }\n}\nclass _BuiltinAstConverter extends AstTransformer {\n constructor(_converterFactory) {\n super();\n this._converterFactory = _converterFactory;\n }\n visitPipe(ast, context) {\n const args = [ast.exp, ...ast.args].map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(ast.span, ast.sourceSpan, args, this._converterFactory.createPipeConverter(ast.name, args.length));\n }\n visitLiteralArray(ast, context) {\n const args = ast.expressions.map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(ast.span, ast.sourceSpan, args, this._converterFactory.createLiteralArrayConverter(ast.expressions.length));\n }\n visitLiteralMap(ast, context) {\n const args = ast.values.map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(ast.span, ast.sourceSpan, args, this._converterFactory.createLiteralMapConverter(ast.keys));\n }\n}\nclass _AstToIrVisitor {\n constructor(_localResolver, _implicitReceiver, bindingId, supportsInterpolation, baseSourceSpan, implicitReceiverAccesses) {\n this._localResolver = _localResolver;\n this._implicitReceiver = _implicitReceiver;\n this.bindingId = bindingId;\n this.supportsInterpolation = supportsInterpolation;\n this.baseSourceSpan = baseSourceSpan;\n this.implicitReceiverAccesses = implicitReceiverAccesses;\n this._nodeMap = new Map();\n this._resultMap = new Map();\n this._currentTemporary = 0;\n this.temporaryCount = 0;\n this.usesImplicitReceiver = false;\n }\n visitUnary(ast, mode) {\n let op;\n switch (ast.operator) {\n case '+':\n op = UnaryOperator.Plus;\n break;\n case '-':\n op = UnaryOperator.Minus;\n break;\n default:\n throw new Error(`Unsupported operator ${ast.operator}`);\n }\n return convertToStatementIfNeeded(mode, new UnaryOperatorExpr(op, this._visit(ast.expr, _Mode.Expression), undefined, this.convertSourceSpan(ast.span)));\n }\n visitBinary(ast, mode) {\n let op;\n switch (ast.operation) {\n case '+':\n op = BinaryOperator.Plus;\n break;\n case '-':\n op = BinaryOperator.Minus;\n break;\n case '*':\n op = BinaryOperator.Multiply;\n break;\n case '/':\n op = BinaryOperator.Divide;\n break;\n case '%':\n op = BinaryOperator.Modulo;\n break;\n case '&&':\n op = BinaryOperator.And;\n break;\n case '||':\n op = BinaryOperator.Or;\n break;\n case '==':\n op = BinaryOperator.Equals;\n break;\n case '!=':\n op = BinaryOperator.NotEquals;\n break;\n case '===':\n op = BinaryOperator.Identical;\n break;\n case '!==':\n op = BinaryOperator.NotIdentical;\n break;\n case '<':\n op = BinaryOperator.Lower;\n break;\n case '>':\n op = BinaryOperator.Bigger;\n break;\n case '<=':\n op = BinaryOperator.LowerEquals;\n break;\n case '>=':\n op = BinaryOperator.BiggerEquals;\n break;\n case '??':\n return this.convertNullishCoalesce(ast, mode);\n default:\n throw new Error(`Unsupported operation ${ast.operation}`);\n }\n return convertToStatementIfNeeded(mode, new BinaryOperatorExpr(op, this._visit(ast.left, _Mode.Expression), this._visit(ast.right, _Mode.Expression), undefined, this.convertSourceSpan(ast.span)));\n }\n visitChain(ast, mode) {\n ensureStatementMode(mode, ast);\n return this.visitAll(ast.expressions, mode);\n }\n visitConditional(ast, mode) {\n const value = this._visit(ast.condition, _Mode.Expression);\n return convertToStatementIfNeeded(mode, value.conditional(this._visit(ast.trueExp, _Mode.Expression), this._visit(ast.falseExp, _Mode.Expression), this.convertSourceSpan(ast.span)));\n }\n visitPipe(ast, mode) {\n throw new Error(`Illegal state: Pipes should have been converted into functions. Pipe: ${ast.name}`);\n }\n visitImplicitReceiver(ast, mode) {\n ensureExpressionMode(mode, ast);\n this.usesImplicitReceiver = true;\n return this._implicitReceiver;\n }\n visitThisReceiver(ast, mode) {\n return this.visitImplicitReceiver(ast, mode);\n }\n visitInterpolation(ast, mode) {\n if (!this.supportsInterpolation) {\n throw new Error('Unexpected interpolation');\n }\n ensureExpressionMode(mode, ast);\n let args = [];\n for (let i = 0; i < ast.strings.length - 1; i++) {\n args.push(literal(ast.strings[i]));\n args.push(this._visit(ast.expressions[i], _Mode.Expression));\n }\n args.push(literal(ast.strings[ast.strings.length - 1]));\n // If we're dealing with an interpolation of 1 value with an empty prefix and suffix, reduce the\n // args returned to just the value, because we're going to pass it to a special instruction.\n const strings = ast.strings;\n if (strings.length === 2 && strings[0] === '' && strings[1] === '') {\n // Single argument interpolate instructions.\n args = [args[1]];\n }\n else if (ast.expressions.length >= 9) {\n // 9 or more arguments must be passed to the `interpolateV`-style instructions, which accept\n // an array of arguments\n args = [literalArr(args)];\n }\n return new InterpolationExpression(args);\n }\n visitKeyedRead(ast, mode) {\n const leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n return convertToStatementIfNeeded(mode, this._visit(ast.receiver, _Mode.Expression).key(this._visit(ast.key, _Mode.Expression)));\n }\n }\n visitKeyedWrite(ast, mode) {\n const obj = this._visit(ast.receiver, _Mode.Expression);\n const key = this._visit(ast.key, _Mode.Expression);\n const value = this._visit(ast.value, _Mode.Expression);\n if (obj === this._implicitReceiver) {\n this._localResolver.maybeRestoreView();\n }\n return convertToStatementIfNeeded(mode, obj.key(key).set(value));\n }\n visitLiteralArray(ast, mode) {\n throw new Error(`Illegal State: literal arrays should have been converted into functions`);\n }\n visitLiteralMap(ast, mode) {\n throw new Error(`Illegal State: literal maps should have been converted into functions`);\n }\n visitLiteralPrimitive(ast, mode) {\n // For literal values of null, undefined, true, or false allow type interference\n // to infer the type.\n const type = ast.value === null || ast.value === undefined || ast.value === true || ast.value === true ?\n INFERRED_TYPE :\n undefined;\n return convertToStatementIfNeeded(mode, literal(ast.value, type, this.convertSourceSpan(ast.span)));\n }\n _getLocal(name, receiver) {\n if (this._localResolver.globals?.has(name) && receiver instanceof ThisReceiver) {\n return null;\n }\n return this._localResolver.getLocal(name);\n }\n visitPrefixNot(ast, mode) {\n return convertToStatementIfNeeded(mode, not(this._visit(ast.expression, _Mode.Expression)));\n }\n visitNonNullAssert(ast, mode) {\n return convertToStatementIfNeeded(mode, this._visit(ast.expression, _Mode.Expression));\n }\n visitPropertyRead(ast, mode) {\n const leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n let result = null;\n const prevUsesImplicitReceiver = this.usesImplicitReceiver;\n const receiver = this._visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n result = this._getLocal(ast.name, ast.receiver);\n if (result) {\n // Restore the previous \"usesImplicitReceiver\" state since the implicit\n // receiver has been replaced with a resolved local expression.\n this.usesImplicitReceiver = prevUsesImplicitReceiver;\n this.addImplicitReceiverAccess(ast.name);\n }\n }\n if (result == null) {\n result = receiver.prop(ast.name, this.convertSourceSpan(ast.span));\n }\n return convertToStatementIfNeeded(mode, result);\n }\n }\n visitPropertyWrite(ast, mode) {\n const receiver = this._visit(ast.receiver, _Mode.Expression);\n const prevUsesImplicitReceiver = this.usesImplicitReceiver;\n let varExpr = null;\n if (receiver === this._implicitReceiver) {\n const localExpr = this._getLocal(ast.name, ast.receiver);\n if (localExpr) {\n if (localExpr instanceof ReadPropExpr) {\n // If the local variable is a property read expression, it's a reference\n // to a 'context.property' value and will be used as the target of the\n // write expression.\n varExpr = localExpr;\n // Restore the previous \"usesImplicitReceiver\" state since the implicit\n // receiver has been replaced with a resolved local expression.\n this.usesImplicitReceiver = prevUsesImplicitReceiver;\n this.addImplicitReceiverAccess(ast.name);\n }\n else {\n // Otherwise it's an error.\n const receiver = ast.name;\n const value = (ast.value instanceof PropertyRead) ? ast.value.name : undefined;\n throw new Error(`Cannot assign value \"${value}\" to template variable \"${receiver}\". Template variables are read-only.`);\n }\n }\n }\n // If no local expression could be produced, use the original receiver's\n // property as the target.\n if (varExpr === null) {\n varExpr = receiver.prop(ast.name, this.convertSourceSpan(ast.span));\n }\n return convertToStatementIfNeeded(mode, varExpr.set(this._visit(ast.value, _Mode.Expression)));\n }\n visitSafePropertyRead(ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n visitSafeKeyedRead(ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n visitAll(asts, mode) {\n return asts.map(ast => this._visit(ast, mode));\n }\n visitCall(ast, mode) {\n const leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n const convertedArgs = this.visitAll(ast.args, _Mode.Expression);\n if (ast instanceof BuiltinFunctionCall) {\n return convertToStatementIfNeeded(mode, ast.converter(convertedArgs));\n }\n const receiver = ast.receiver;\n if (receiver instanceof PropertyRead &&\n receiver.receiver instanceof ImplicitReceiver &&\n !(receiver.receiver instanceof ThisReceiver) && receiver.name === '$any') {\n if (convertedArgs.length !== 1) {\n throw new Error(`Invalid call to $any, expected 1 argument but received ${convertedArgs.length || 'none'}`);\n }\n return convertToStatementIfNeeded(mode, convertedArgs[0]);\n }\n const call = this._visit(receiver, _Mode.Expression)\n .callFn(convertedArgs, this.convertSourceSpan(ast.span));\n return convertToStatementIfNeeded(mode, call);\n }\n visitSafeCall(ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n _visit(ast, mode) {\n const result = this._resultMap.get(ast);\n if (result)\n return result;\n return (this._nodeMap.get(ast) || ast).visit(this, mode);\n }\n convertSafeAccess(ast, leftMostSafe, mode) {\n // If the expression contains a safe access node on the left it needs to be converted to\n // an expression that guards the access to the member by checking the receiver for blank. As\n // execution proceeds from left to right, the left most part of the expression must be guarded\n // first but, because member access is left associative, the right side of the expression is at\n // the top of the AST. The desired result requires lifting a copy of the left part of the\n // expression up to test it for blank before generating the unguarded version.\n // Consider, for example the following expression: a?.b.c?.d.e\n // This results in the ast:\n // .\n // / \\\n // ?. e\n // / \\\n // . d\n // / \\\n // ?. c\n // / \\\n // a b\n // The following tree should be generated:\n //\n // /---- ? ----\\\n // / | \\\n // a /--- ? ---\\ null\n // / | \\\n // . . null\n // / \\ / \\\n // . c . e\n // / \\ / \\\n // a b . d\n // / \\\n // . c\n // / \\\n // a b\n //\n // Notice that the first guard condition is the left hand of the left most safe access node\n // which comes in as leftMostSafe to this routine.\n let guardedExpression = this._visit(leftMostSafe.receiver, _Mode.Expression);\n let temporary = undefined;\n if (this.needsTemporaryInSafeAccess(leftMostSafe.receiver)) {\n // If the expression has method calls or pipes then we need to save the result into a\n // temporary variable to avoid calling stateful or impure code more than once.\n temporary = this.allocateTemporary();\n // Preserve the result in the temporary variable\n guardedExpression = temporary.set(guardedExpression);\n // Ensure all further references to the guarded expression refer to the temporary instead.\n this._resultMap.set(leftMostSafe.receiver, temporary);\n }\n const condition = guardedExpression.isBlank();\n // Convert the ast to an unguarded access to the receiver's member. The map will substitute\n // leftMostNode with its unguarded version in the call to `this.visit()`.\n if (leftMostSafe instanceof SafeCall) {\n this._nodeMap.set(leftMostSafe, new Call(leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.receiver, leftMostSafe.args, leftMostSafe.argumentSpan));\n }\n else if (leftMostSafe instanceof SafeKeyedRead) {\n this._nodeMap.set(leftMostSafe, new KeyedRead(leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.receiver, leftMostSafe.key));\n }\n else {\n this._nodeMap.set(leftMostSafe, new PropertyRead(leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.nameSpan, leftMostSafe.receiver, leftMostSafe.name));\n }\n // Recursively convert the node now without the guarded member access.\n const access = this._visit(ast, _Mode.Expression);\n // Remove the mapping. This is not strictly required as the converter only traverses each node\n // once but is safer if the conversion is changed to traverse the nodes more than once.\n this._nodeMap.delete(leftMostSafe);\n // If we allocated a temporary, release it.\n if (temporary) {\n this.releaseTemporary(temporary);\n }\n // Produce the conditional\n return convertToStatementIfNeeded(mode, condition.conditional(NULL_EXPR, access));\n }\n convertNullishCoalesce(ast, mode) {\n const left = this._visit(ast.left, _Mode.Expression);\n const right = this._visit(ast.right, _Mode.Expression);\n const temporary = this.allocateTemporary();\n this.releaseTemporary(temporary);\n // Generate the following expression. It is identical to how TS\n // transpiles binary expressions with a nullish coalescing operator.\n // let temp;\n // (temp = a) !== null && temp !== undefined ? temp : b;\n return convertToStatementIfNeeded(mode, temporary.set(left)\n .notIdentical(NULL_EXPR)\n .and(temporary.notIdentical(literal(undefined)))\n .conditional(temporary, right));\n }\n // Given an expression of the form a?.b.c?.d.e then the left most safe node is\n // the (a?.b). The . and ?. are left associative thus can be rewritten as:\n // ((((a?.c).b).c)?.d).e. This returns the most deeply nested safe read or\n // safe method call as this needs to be transformed initially to:\n // a == null ? null : a.c.b.c?.d.e\n // then to:\n // a == null ? null : a.b.c == null ? null : a.b.c.d.e\n leftMostSafeNode(ast) {\n const visit = (visitor, ast) => {\n return (this._nodeMap.get(ast) || ast).visit(visitor);\n };\n return ast.visit({\n visitUnary(ast) {\n return null;\n },\n visitBinary(ast) {\n return null;\n },\n visitChain(ast) {\n return null;\n },\n visitConditional(ast) {\n return null;\n },\n visitCall(ast) {\n return visit(this, ast.receiver);\n },\n visitSafeCall(ast) {\n return visit(this, ast.receiver) || ast;\n },\n visitImplicitReceiver(ast) {\n return null;\n },\n visitThisReceiver(ast) {\n return null;\n },\n visitInterpolation(ast) {\n return null;\n },\n visitKeyedRead(ast) {\n return visit(this, ast.receiver);\n },\n visitKeyedWrite(ast) {\n return null;\n },\n visitLiteralArray(ast) {\n return null;\n },\n visitLiteralMap(ast) {\n return null;\n },\n visitLiteralPrimitive(ast) {\n return null;\n },\n visitPipe(ast) {\n return null;\n },\n visitPrefixNot(ast) {\n return null;\n },\n visitNonNullAssert(ast) {\n return null;\n },\n visitPropertyRead(ast) {\n return visit(this, ast.receiver);\n },\n visitPropertyWrite(ast) {\n return null;\n },\n visitSafePropertyRead(ast) {\n return visit(this, ast.receiver) || ast;\n },\n visitSafeKeyedRead(ast) {\n return visit(this, ast.receiver) || ast;\n }\n });\n }\n // Returns true of the AST includes a method or a pipe indicating that, if the\n // expression is used as the target of a safe property or method access then\n // the expression should be stored into a temporary variable.\n needsTemporaryInSafeAccess(ast) {\n const visit = (visitor, ast) => {\n return ast && (this._nodeMap.get(ast) || ast).visit(visitor);\n };\n const visitSome = (visitor, ast) => {\n return ast.some(ast => visit(visitor, ast));\n };\n return ast.visit({\n visitUnary(ast) {\n return visit(this, ast.expr);\n },\n visitBinary(ast) {\n return visit(this, ast.left) || visit(this, ast.right);\n },\n visitChain(ast) {\n return false;\n },\n visitConditional(ast) {\n return visit(this, ast.condition) || visit(this, ast.trueExp) || visit(this, ast.falseExp);\n },\n visitCall(ast) {\n return true;\n },\n visitSafeCall(ast) {\n return true;\n },\n visitImplicitReceiver(ast) {\n return false;\n },\n visitThisReceiver(ast) {\n return false;\n },\n visitInterpolation(ast) {\n return visitSome(this, ast.expressions);\n },\n visitKeyedRead(ast) {\n return false;\n },\n visitKeyedWrite(ast) {\n return false;\n },\n visitLiteralArray(ast) {\n return true;\n },\n visitLiteralMap(ast) {\n return true;\n },\n visitLiteralPrimitive(ast) {\n return false;\n },\n visitPipe(ast) {\n return true;\n },\n visitPrefixNot(ast) {\n return visit(this, ast.expression);\n },\n visitNonNullAssert(ast) {\n return visit(this, ast.expression);\n },\n visitPropertyRead(ast) {\n return false;\n },\n visitPropertyWrite(ast) {\n return false;\n },\n visitSafePropertyRead(ast) {\n return false;\n },\n visitSafeKeyedRead(ast) {\n return false;\n }\n });\n }\n allocateTemporary() {\n const tempNumber = this._currentTemporary++;\n this.temporaryCount = Math.max(this._currentTemporary, this.temporaryCount);\n return new ReadVarExpr(temporaryName(this.bindingId, tempNumber));\n }\n releaseTemporary(temporary) {\n this._currentTemporary--;\n if (temporary.name != temporaryName(this.bindingId, this._currentTemporary)) {\n throw new Error(`Temporary ${temporary.name} released out of order`);\n }\n }\n /**\n * Creates an absolute `ParseSourceSpan` from the relative `ParseSpan`.\n *\n * `ParseSpan` objects are relative to the start of the expression.\n * This method converts these to full `ParseSourceSpan` objects that\n * show where the span is within the overall source file.\n *\n * @param span the relative span to convert.\n * @returns a `ParseSourceSpan` for the given span or null if no\n * `baseSourceSpan` was provided to this class.\n */\n convertSourceSpan(span) {\n if (this.baseSourceSpan) {\n const start = this.baseSourceSpan.start.moveBy(span.start);\n const end = this.baseSourceSpan.start.moveBy(span.end);\n const fullStart = this.baseSourceSpan.fullStart.moveBy(span.start);\n return new ParseSourceSpan(start, end, fullStart);\n }\n else {\n return null;\n }\n }\n /** Adds the name of an AST to the list of implicit receiver accesses. */\n addImplicitReceiverAccess(name) {\n if (this.implicitReceiverAccesses) {\n this.implicitReceiverAccesses.add(name);\n }\n }\n}\nfunction flattenStatements(arg, output) {\n if (Array.isArray(arg)) {\n arg.forEach((entry) => flattenStatements(entry, output));\n }\n else {\n output.push(arg);\n }\n}\nfunction unsupported() {\n throw new Error('Unsupported operation');\n}\nclass InterpolationExpression extends Expression {\n constructor(args) {\n super(null, null);\n this.args = args;\n this.isConstant = unsupported;\n this.isEquivalent = unsupported;\n this.visitExpression = unsupported;\n }\n}\nclass DefaultLocalResolver {\n constructor(globals) {\n this.globals = globals;\n }\n notifyImplicitReceiverUse() { }\n maybeRestoreView() { }\n getLocal(name) {\n if (name === EventHandlerVars.event.name) {\n return EventHandlerVars.event;\n }\n return null;\n }\n}\nclass BuiltinFunctionCall extends Call {\n constructor(span, sourceSpan, args, converter) {\n super(span, sourceSpan, new EmptyExpr(span, sourceSpan), args, null);\n this.converter = converter;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// =================================================================================================\n// =================================================================================================\n// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P ===========\n// =================================================================================================\n// =================================================================================================\n//\n// DO NOT EDIT THIS LIST OF SECURITY SENSITIVE PROPERTIES WITHOUT A SECURITY REVIEW!\n// Reach out to mprobst for details.\n//\n// =================================================================================================\n/** Map from tagName|propertyName to SecurityContext. Properties applying to all tags use '*'. */\nlet _SECURITY_SCHEMA;\nfunction SECURITY_SCHEMA() {\n if (!_SECURITY_SCHEMA) {\n _SECURITY_SCHEMA = {};\n // Case is insignificant below, all element and attribute names are lower-cased for lookup.\n registerContext(SecurityContext.HTML, [\n 'iframe|srcdoc',\n '*|innerHTML',\n '*|outerHTML',\n ]);\n registerContext(SecurityContext.STYLE, ['*|style']);\n // NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them.\n registerContext(SecurityContext.URL, [\n '*|formAction',\n 'area|href',\n 'area|ping',\n 'audio|src',\n 'a|href',\n 'a|ping',\n 'blockquote|cite',\n 'body|background',\n 'del|cite',\n 'form|action',\n 'img|src',\n 'input|src',\n 'ins|cite',\n 'q|cite',\n 'source|src',\n 'track|src',\n 'video|poster',\n 'video|src',\n ]);\n registerContext(SecurityContext.RESOURCE_URL, [\n 'applet|code',\n 'applet|codebase',\n 'base|href',\n 'embed|src',\n 'frame|src',\n 'head|profile',\n 'html|manifest',\n 'iframe|src',\n 'link|href',\n 'media|src',\n 'object|codebase',\n 'object|data',\n 'script|src',\n ]);\n }\n return _SECURITY_SCHEMA;\n}\nfunction registerContext(ctx, specs) {\n for (const spec of specs)\n _SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n}\n/**\n * The set of security-sensitive attributes of an `