function execModule(sModuleName, bAsync) {

		var oModule = mModules[sModuleName],
			bLoggable = log.isLoggable(),
			sOldPrefix, sScript, oMatch, bOldForceSyncDefines, oOldQueue;

		if ( oModule && oModule.state === LOADED && typeof oModule.data !== "undefined" ) {

			bOldForceSyncDefines = bForceSyncDefines;
			oOldQueue = queue;

			try {

				bForceSyncDefines = !bAsync;
				queue = new ModuleDefinitionQueue();

				if ( bLoggable ) {
					if ( typeof oModule.data === "string" ) {
						log.warning(sLogPrefix + "executing '" + sModuleName + "' (using eval)");
					} else {
						log.debug(sLogPrefix + "executing '" + sModuleName + "'");
					}
					sOldPrefix = sLogPrefix;
					sLogPrefix = sLogPrefix + ": ";
				}

				// execute the script in the __global context
				oModule.state = EXECUTING;
				_execStack.push({
					name: sModuleName,
					used: false
				});
				if ( typeof oModule.data === "function" ) {
					oModule.data.call(__global);
				} else if ( Array.isArray(oModule.data) ) {
					ui5Define.apply(null, oModule.data);
				} else {

					sScript = oModule.data;

					// sourceURL: Firebug, Chrome and Safari debugging help, appending the string seems to cost ZERO performance
					// Note: make URL absolute so Chrome displays the file tree correctly
					// Note: do not append if there is already a sourceURL / sourceMappingURL
					// Note: Safari fails, if sourceURL is the same as an existing XHR URL
					// Note: Chrome ignores debug files when the same URL has already been load via sourcemap of the bootstrap file (sap-ui-core)
					// Note: sourcemap annotations URLs in eval'ed sources are resolved relative to the page, not relative to the source
					if (sScript ) {
						oMatch = /\/\/[#@] source(Mapping)?URL=(.*)$/.exec(sScript);
						if ( oMatch && oMatch[1] && /^[^/]+\.js\.map$/.test(oMatch[2]) ) {
							// found a sourcemap annotation with a typical UI5 generated relative URL
							sScript = sScript.slice(0, oMatch.index) + oMatch[0].slice(0, -oMatch[2].length) + resolveURL(oMatch[2], oModule.url);
						}
						// @evo-todo use only sourceMappingURL, sourceURL or both?
						if ( !oMatch || oMatch[1] ) {
							// write sourceURL if no annotation was there or when it was a sourceMappingURL
							sScript += "\n//# sourceURL=" + resolveURL(oModule.url) + "?eval";
						}
					}

					// framework internal hook to intercept the loaded script and modify
					// it before executing the script - e.g. useful for client side coverage
					if (typeof translate === "function") {
						sScript = translate(sScript, sModuleName);
					}

					// eval the source in the global context (preventing access to the closure of this function)
					__global.eval(sScript);
				}
				queue.process(oModule, "after eval");

			} catch (err) {
				oModule.data = undefined;
				if (isModuleError(err)) {
					// don't wrap a ModuleError again
					oModule.fail(err);
				} else {
					if (err instanceof SyntaxError && sScript) {
						// Module execution failed with a syntax error.
						// If in debug mode, load the script code again via script tag for better error reporting
						// (but without reacting to load/error events)
						if (fnIgnorePreload) {
							oModule.url = URL.createObjectURL(new Blob([sScript], {type: 'text/javascript'}));
							loadScript(oModule);
						} else {
							log.error("A syntax error occurred while evaluating '" + sModuleName + "'"
								+ ", restarting the app with sap-ui-debug=x might reveal the error location");
						}
					}
					oModule.failWith("Failed to execute {id}", err);
				}
			} finally {

				_execStack.pop();

				if ( bLoggable ) {
					sLogPrefix = sOldPrefix;
					log.debug(sLogPrefix + "finished executing '" + sModuleName + "'");
				}

				queue = oOldQueue;
				bForceSyncDefines = bOldForceSyncDefines;
			}
		}
	}
// sModuleName must be a normalized resource name of type .js
sModuleName must be a normalized resource name of type .js
sModuleName must be a normalized resource name of type . js
function execModule(sModuleName, bAsync) {
		var oModule = mModules[sModuleName],
			bLoggable = log.isLoggable(),
			sOldPrefix, sScript, oMatch, bOldForceSyncDefines, oOldQueue;
		if ( oModule && oModule.state === LOADED && typeof oModule.data !== "undefined" ) {
			bOldForceSyncDefines = bForceSyncDefines;
			oOldQueue = queue;
			try {
				bForceSyncDefines = !bAsync;
				queue = new ModuleDefinitionQueue();
				if ( bLoggable ) {
					if ( typeof oModule.data === "string" ) {
						log.warning(sLogPrefix + "executing '" + sModuleName + "' (using eval)");
					} else {
						log.debug(sLogPrefix + "executing '" + sModuleName + "'");
					}
					sOldPrefix = sLogPrefix;
					sLogPrefix = sLogPrefix + ": ";
				}
				oModule.state = EXECUTING;
				_execStack.push({
					name: sModuleName,
					used: false
				});
				if ( typeof oModule.data === "function" ) {
					oModule.data.call(__global);
				} else if ( Array.isArray(oModule.data) ) {
					ui5Define.apply(null, oModule.data);
				} else {
					sScript = oModule.data;
					if (sScript ) {
						oMatch = /\/\/[#@] source(Mapping)?URL=(.*)$/.exec(sScript);
						if ( oMatch && oMatch[1] && /^[^/]+\.js\.map$/.test(oMatch[2]) ) {
							sScript = sScript.slice(0, oMatch.index) + oMatch[0].slice(0, -oMatch[2].length) + resolveURL(oMatch[2], oModule.url);
						}
						if ( !oMatch || oMatch[1] ) {
							sScript += "\n//# sourceURL=" + resolveURL(oModule.url) + "?eval";
						}
					}
					if (typeof translate === "function") {
						sScript = translate(sScript, sModuleName);
					}
					__global.eval(sScript);
				}
				queue.process(oModule, "after eval");
			} catch (err) {
				oModule.data = undefined;
				if (isModuleError(err)) {
					oModule.fail(err);
				} else {
					if (err instanceof SyntaxError && sScript) {
						if (fnIgnorePreload) {
							oModule.url = URL.createObjectURL(new Blob([sScript], {type: 'text/javascript'}));
							loadScript(oModule);
						} else {
							log.error("A syntax error occurred while evaluating '" + sModuleName + "'"
								+ ", restarting the app with sap-ui-debug=x might reveal the error location");
						}
					}
					oModule.failWith("Failed to execute {id}", err);
				}
			} finally {
				_execStack.pop();
				if ( bLoggable ) {
					sLogPrefix = sOldPrefix;
					log.debug(sLogPrefix + "finished executing '" + sModuleName + "'");
				}
				queue = oOldQueue;
				bForceSyncDefines = bOldForceSyncDefines;
			}
		}
	}
function execModule ( sModuleName , bAsync ) { var oModule = mModules [ sModuleName ] , bLoggable = log . isLoggable ( ) , sOldPrefix , sScript , oMatch , bOldForceSyncDefines , oOldQueue ; if ( oModule && oModule . state === LOADED && typeof oModule . data !== "undefined" ) { bOldForceSyncDefines = bForceSyncDefines ; oOldQueue = queue ; try { bForceSyncDefines = ! bAsync ; queue = new ModuleDefinitionQueue ( ) ; if ( bLoggable ) { if ( typeof oModule . data === "string" ) { log . warning ( sLogPrefix + "executing '" + sModuleName + "' (using eval)" ) ; } else { log . debug ( sLogPrefix + "executing '" + sModuleName + "'" ) ; } sOldPrefix = sLogPrefix ; sLogPrefix = sLogPrefix + ": " ; } oModule . state = EXECUTING ; _execStack . push ( { name : sModuleName , used : false } ) ; if ( typeof oModule . data === "function" ) { oModule . data . call ( __global ) ; } else if ( Array . isArray ( oModule . data ) ) { ui5Define . apply ( null , oModule . data ) ; } else { sScript = oModule . data ; if ( sScript ) { oMatch = / \/\/[#@] source(Mapping)?URL=(.*)$ / . exec ( sScript ) ; if ( oMatch && oMatch [ 1 ] && / ^[^/]+\.js\.map$ / . test ( oMatch [ 2 ] ) ) { sScript = sScript . slice ( 0 , oMatch . index ) + oMatch [ 0 ] . slice ( 0 , - oMatch [ 2 ] . length ) + resolveURL ( oMatch [ 2 ] , oModule . url ) ; } if ( ! oMatch || oMatch [ 1 ] ) { sScript += "\n//# sourceURL=" + resolveURL ( oModule . url ) + "?eval" ; } } if ( typeof translate === "function" ) { sScript = translate ( sScript , sModuleName ) ; } __global . eval ( sScript ) ; } queue . process ( oModule , "after eval" ) ; } catch ( err ) { oModule . data = undefined ; if ( isModuleError ( err ) ) { oModule . fail ( err ) ; } else { if ( err instanceof SyntaxError && sScript ) { if ( fnIgnorePreload ) { oModule . url = URL . createObjectURL ( new Blob ( [ sScript ] , { type : 'text/javascript' } ) ) ; loadScript ( oModule ) ; } else { log . error ( "A syntax error occurred while evaluating '" + sModuleName + "'" + ", restarting the app with sap-ui-debug=x might reveal the error location" ) ; } } oModule . failWith ( "Failed to execute {id}" , err ) ; } } finally { _execStack . pop ( ) ; if ( bLoggable ) { sLogPrefix = sOldPrefix ; log . debug ( sLogPrefix + "finished executing '" + sModuleName + "'" ) ; } queue = oOldQueue ; bForceSyncDefines = bOldForceSyncDefines ; } } }
sModuleName must be a normalized resource name of type .js
sModuleName must be a normalized resource name of type . js
// execute the script in the __global context // sourceURL: Firebug, Chrome and Safari debugging help, appending the string seems to cost ZERO performance // Note: make URL absolute so Chrome displays the file tree correctly // Note: do not append if there is already a sourceURL / sourceMappingURL // Note: Safari fails, if sourceURL is the same as an existing XHR URL // Note: Chrome ignores debug files when the same URL has already been load via sourcemap of the bootstrap file (sap-ui-core) // Note: sourcemap annotations URLs in eval'ed sources are resolved relative to the page, not relative to the source // found a sourcemap annotation with a typical UI5 generated relative URL // @evo-todo use only sourceMappingURL, sourceURL or both? // write sourceURL if no annotation was there or when it was a sourceMappingURL // framework internal hook to intercept the loaded script and modify // it before executing the script - e.g. useful for client side coverage // eval the source in the global context (preventing access to the closure of this function) // don't wrap a ModuleError again // Module execution failed with a syntax error. // If in debug mode, load the script code again via script tag for better error reporting // (but without reacting to load/error events)