shell.js 191 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. const _loadedScripts={};(function(){const baseUrl=self.location?self.location.origin+self.location.pathname:'';self._importScriptPathPrefix=baseUrl.substring(0,baseUrl.lastIndexOf('/')+1);})();const REMOTE_MODULE_FALLBACK_REVISION='@010ddcfda246975d194964ccf20038ebbdec6084';class Runtime{constructor(descriptors){this._modules=[];this._modulesMap={};this._extensions=[];this._cachedTypeClasses={};this._descriptorsMap={};for(let i=0;i<descriptors.length;++i){this._registerModule(descriptors[i]);}}
  2. static _loadResourcePromise(url,asBinary){return new Promise(load);function load(fulfill,reject){const xhr=new XMLHttpRequest();xhr.open('GET',url,true);if(asBinary){xhr.responseType='arraybuffer';}
  3. xhr.onreadystatechange=onreadystatechange;function onreadystatechange(e){if(xhr.readyState!==XMLHttpRequest.DONE){return;}
  4. const{response}=e.target;const text=asBinary?new TextDecoder().decode(response):response;const status=/^HTTP\/1.1 404/.test(text)?404:xhr.status;if([0,200,304].indexOf(status)===-1)
  5. {reject(new Error('While loading from url '+url+' server responded with a status of '+status));}else{fulfill(response);}}
  6. xhr.send(null);}}
  7. static loadResourcePromise(url){return Runtime._loadResourcePromise(url,false);}
  8. static loadBinaryResourcePromise(url){return Runtime._loadResourcePromise(url,true);}
  9. static loadResourcePromiseWithFallback(url){return Runtime.loadResourcePromise(url).catch(err=>{const urlWithFallbackVersion=url.replace(/@[0-9a-f]{40}/,REMOTE_MODULE_FALLBACK_REVISION);if(urlWithFallbackVersion===url||!url.includes('audits_worker_module')){throw err;}
  10. return Runtime.loadResourcePromise(urlWithFallbackVersion);});}
  11. static normalizePath(path){if(path.indexOf('..')===-1&&path.indexOf('.')===-1){return path;}
  12. const normalizedSegments=[];const segments=path.split('/');for(let i=0;i<segments.length;i++){const segment=segments[i];if(segment==='.'){continue;}else if(segment==='..'){normalizedSegments.pop();}else if(segment){normalizedSegments.push(segment);}}
  13. let normalizedPath=normalizedSegments.join('/');if(normalizedPath[normalizedPath.length-1]==='/'){return normalizedPath;}
  14. if(path[0]==='/'&&normalizedPath){normalizedPath='/'+normalizedPath;}
  15. if((path[path.length-1]==='/')||(segments[segments.length-1]==='.')||(segments[segments.length-1]==='..')){normalizedPath=normalizedPath+'/';}
  16. return normalizedPath;}
  17. static getResourceURL(scriptName,base){const sourceURL=(base||self._importScriptPathPrefix)+scriptName;const schemaIndex=sourceURL.indexOf('://')+3;let pathIndex=sourceURL.indexOf('/',schemaIndex);if(pathIndex===-1){pathIndex=sourceURL.length;}
  18. return sourceURL.substring(0,pathIndex)+Runtime.normalizePath(sourceURL.substring(pathIndex));}
  19. static _loadScriptsPromise(scriptNames,base){const promises=[];const urls=[];const sources=new Array(scriptNames.length);let scriptToEval=0;for(let i=0;i<scriptNames.length;++i){const scriptName=scriptNames[i];const sourceURL=Runtime.getResourceURL(scriptName,base);if(_loadedScripts[sourceURL]){continue;}
  20. urls.push(sourceURL);const loadResourcePromise=base?Runtime.loadResourcePromiseWithFallback(sourceURL):Runtime.loadResourcePromise(sourceURL);promises.push(loadResourcePromise.then(scriptSourceLoaded.bind(null,i),scriptSourceLoaded.bind(null,i,undefined)));}
  21. return Promise.all(promises).then(undefined);function scriptSourceLoaded(scriptNumber,scriptSource){sources[scriptNumber]=scriptSource||'';while(typeof sources[scriptToEval]!=='undefined'){evaluateScript(urls[scriptToEval],sources[scriptToEval]);++scriptToEval;}}
  22. function evaluateScript(sourceURL,scriptSource){_loadedScripts[sourceURL]=true;if(!scriptSource){console.error('Empty response arrived for script \''+sourceURL+'\'');return;}
  23. self.eval(scriptSource+'\n//# sourceURL='+sourceURL);}}
  24. static _loadResourceIntoCache(url,appendSourceURL){return Runtime.loadResourcePromise(url).then(cacheResource.bind(this,url),cacheResource.bind(this,url,undefined));function cacheResource(path,content){if(!content){console.error('Failed to load resource: '+path);return;}
  25. const sourceURL=appendSourceURL?Runtime.resolveSourceURL(path):'';Runtime.cachedResources[path]=content+sourceURL;}}
  26. static async appStarted(){return Runtime._appStartedPromise;}
  27. static async startApplication(appName){console.timeStamp('Root.Runtime.startApplication');const allDescriptorsByName={};for(let i=0;i<Root.allDescriptors.length;++i){const d=Root.allDescriptors[i];allDescriptorsByName[d['name']]=d;}
  28. if(!Root.applicationDescriptor){let data=await Runtime.loadResourcePromise(appName+'.json');Root.applicationDescriptor=JSON.parse(data);let descriptor=Root.applicationDescriptor;while(descriptor.extends){data=await Runtime.loadResourcePromise(descriptor.extends+'.json');descriptor=JSON.parse(data);Root.applicationDescriptor.modules=descriptor.modules.concat(Root.applicationDescriptor.modules);}}
  29. const configuration=Root.applicationDescriptor.modules;const moduleJSONPromises=[];const coreModuleNames=[];for(let i=0;i<configuration.length;++i){const descriptor=configuration[i];const name=descriptor['name'];const moduleJSON=allDescriptorsByName[name];if(moduleJSON){moduleJSONPromises.push(Promise.resolve(moduleJSON));}else{moduleJSONPromises.push(Runtime.loadResourcePromise(name+'/module.json').then(JSON.parse.bind(JSON)));}
  30. if(descriptor['type']==='autostart'){coreModuleNames.push(name);}}
  31. const moduleDescriptors=await Promise.all(moduleJSONPromises);for(let i=0;i<moduleDescriptors.length;++i){moduleDescriptors[i].name=configuration[i]['name'];moduleDescriptors[i].condition=configuration[i]['condition'];moduleDescriptors[i].remote=configuration[i]['type']==='remote';}
  32. self.runtime=new Runtime(moduleDescriptors);if(coreModuleNames){await self.runtime._loadAutoStartModules(coreModuleNames);}
  33. Runtime._appStartedPromiseCallback();}
  34. static startWorker(appName){return Root.Runtime.startApplication(appName).then(sendWorkerReady);function sendWorkerReady(){self.postMessage('workerReady');}}
  35. static queryParam(name){return Runtime._queryParamsObject.get(name);}
  36. static queryParamsString(){return location.search;}
  37. static _experimentsSetting(){try{return(JSON.parse(self.localStorage&&self.localStorage['experiments']?self.localStorage['experiments']:'{}'));}catch(e){console.error('Failed to parse localStorage[\'experiments\']');return{};}}
  38. static _assert(value,message){if(value){return;}
  39. Runtime._originalAssert.call(Runtime._console,value,message+' '+new Error().stack);}
  40. static setPlatform(platform){Runtime._platform=platform;}
  41. static _isDescriptorEnabled(descriptor){const activatorExperiment=descriptor['experiment'];if(activatorExperiment==='*'){return Runtime.experiments.supportEnabled();}
  42. if(activatorExperiment&&activatorExperiment.startsWith('!')&&Runtime.experiments.isEnabled(activatorExperiment.substring(1))){return false;}
  43. if(activatorExperiment&&!activatorExperiment.startsWith('!')&&!Runtime.experiments.isEnabled(activatorExperiment)){return false;}
  44. const condition=descriptor['condition'];if(condition&&!condition.startsWith('!')&&!Runtime.queryParam(condition)){return false;}
  45. if(condition&&condition.startsWith('!')&&Runtime.queryParam(condition.substring(1))){return false;}
  46. return true;}
  47. static resolveSourceURL(path){let sourceURL=self.location.href;if(self.location.search){sourceURL=sourceURL.replace(self.location.search,'');}
  48. sourceURL=sourceURL.substring(0,sourceURL.lastIndexOf('/')+1)+path;return'\n/*# sourceURL='+sourceURL+' */';}
  49. static setL10nCallback(localizationFunction){Runtime._l10nCallback=localizationFunction;}
  50. useTestBase(){Runtime._remoteBase='http://localhost:8000/inspector-sources/';if(Runtime.queryParam('debugFrontend')){Runtime._remoteBase+='debug/';}}
  51. module(moduleName){return this._modulesMap[moduleName];}
  52. _registerModule(descriptor){const module=new Runtime.Module(this,descriptor);this._modules.push(module);this._modulesMap[descriptor['name']]=module;}
  53. loadModulePromise(moduleName){return this._modulesMap[moduleName]._loadPromise();}
  54. _loadAutoStartModules(moduleNames){const promises=[];for(let i=0;i<moduleNames.length;++i){promises.push(this.loadModulePromise(moduleNames[i]));}
  55. return Promise.all(promises);}
  56. _checkExtensionApplicability(extension,predicate){if(!predicate){return false;}
  57. const contextTypes=extension.descriptor().contextTypes;if(!contextTypes){return true;}
  58. for(let i=0;i<contextTypes.length;++i){const contextType=this._resolve(contextTypes[i]);const isMatching=!!contextType&&predicate(contextType);if(isMatching){return true;}}
  59. return false;}
  60. isExtensionApplicableToContext(extension,context){if(!context){return true;}
  61. return this._checkExtensionApplicability(extension,isInstanceOf);function isInstanceOf(targetType){return context instanceof targetType;}}
  62. isExtensionApplicableToContextTypes(extension,currentContextTypes){if(!extension.descriptor().contextTypes){return true;}
  63. return this._checkExtensionApplicability(extension,currentContextTypes?isContextTypeKnown:null);function isContextTypeKnown(targetType){return currentContextTypes.has(targetType);}}
  64. extensions(type,context,sortByTitle){return this._extensions.filter(filter).sort(sortByTitle?titleComparator:orderComparator);function filter(extension){if(extension._type!==type&&extension._typeClass()!==type){return false;}
  65. if(!extension.enabled()){return false;}
  66. return!context||extension.isApplicable(context);}
  67. function orderComparator(extension1,extension2){const order1=extension1.descriptor()['order']||0;const order2=extension2.descriptor()['order']||0;return order1-order2;}
  68. function titleComparator(extension1,extension2){const title1=extension1.title()||'';const title2=extension2.title()||'';return title1.localeCompare(title2);}}
  69. extension(type,context){return this.extensions(type,context)[0]||null;}
  70. allInstances(type,context){return Promise.all(this.extensions(type,context).map(extension=>extension.instance()));}
  71. _resolve(typeName){if(!this._cachedTypeClasses[typeName]){const path=typeName.split('.');let object=self;for(let i=0;object&&(i<path.length);++i){object=object[path[i]];}
  72. if(object){this._cachedTypeClasses[typeName]=(object);}}
  73. return this._cachedTypeClasses[typeName]||null;}
  74. sharedInstance(constructorFunction){if(Runtime._instanceSymbol in constructorFunction&&Object.getOwnPropertySymbols(constructorFunction).includes(Runtime._instanceSymbol)){return constructorFunction[Runtime._instanceSymbol];}
  75. const instance=new constructorFunction();constructorFunction[Runtime._instanceSymbol]=instance;return instance;}}
  76. Runtime._queryParamsObject=new URLSearchParams(Runtime.queryParamsString());Runtime._instanceSymbol=Symbol('instance');Runtime.cachedResources={__proto__:null};Runtime._console=console;Runtime._originalAssert=console.assert;Runtime._platform='';class ModuleDescriptor{constructor(){this.name;this.extensions;this.dependencies;this.scripts;this.modules;this.condition;this.remote;}}
  77. class RuntimeExtensionDescriptor{constructor(){this.type;this.className;this.factoryName;this.contextTypes;}}
  78. const specialCases={'sdk':'SDK','js_sdk':'JSSDK','browser_sdk':'BrowserSDK','ui':'UI','object_ui':'ObjectUI','javascript_metadata':'JavaScriptMetadata','perf_ui':'PerfUI','har_importer':'HARImporter','sdk_test_runner':'SDKTestRunner','cpu_profiler_test_runner':'CPUProfilerTestRunner'};class Module{constructor(manager,descriptor){this._manager=manager;this._descriptor=descriptor;this._name=descriptor.name;this._extensions=[];this._extensionsByClassName=new Map();const extensions=(descriptor.extensions);for(let i=0;extensions&&i<extensions.length;++i){const extension=new Extension(this,extensions[i]);this._manager._extensions.push(extension);this._extensions.push(extension);}
  79. this._loadedForTest=false;}
  80. name(){return this._name;}
  81. enabled(){return Runtime._isDescriptorEnabled(this._descriptor);}
  82. resource(name){const fullName=this._name+'/'+name;const content=Runtime.cachedResources[fullName];if(!content){throw new Error(fullName+' not preloaded. Check module.json');}
  83. return content;}
  84. _loadPromise(){if(!this.enabled()){return Promise.reject(new Error('Module '+this._name+' is not enabled'));}
  85. if(this._pendingLoadPromise){return this._pendingLoadPromise;}
  86. const dependencies=this._descriptor.dependencies;const dependencyPromises=[];for(let i=0;dependencies&&i<dependencies.length;++i){dependencyPromises.push(this._manager._modulesMap[dependencies[i]]._loadPromise());}
  87. this._pendingLoadPromise=Promise.all(dependencyPromises).then(this._loadResources.bind(this)).then(this._loadModules.bind(this)).then(this._loadScripts.bind(this)).then(()=>this._loadedForTest=true);return this._pendingLoadPromise;}
  88. _loadResources(){const resources=this._descriptor['resources'];if(!resources||!resources.length){return Promise.resolve();}
  89. const promises=[];for(let i=0;i<resources.length;++i){const url=this._modularizeURL(resources[i]);const isHtml=url.endsWith('.html');promises.push(Runtime._loadResourceIntoCache(url,!isHtml));}
  90. return Promise.all(promises).then(undefined);}
  91. _loadModules(){if(!this._descriptor.modules||!this._descriptor.modules.length){return Promise.resolve();}
  92. const namespace=this._computeNamespace();self[namespace]=self[namespace]||{};if(typeof WorkerGlobalScope!=='undefined'&&self instanceof WorkerGlobalScope){return Promise.resolve();}
  93. return eval(`import('./${this._name}/${this._name}.js')`);}
  94. _loadScripts(){if(!this._descriptor.scripts||!this._descriptor.scripts.length){return Promise.resolve();}
  95. const namespace=this._computeNamespace();self[namespace]=self[namespace]||{};return Runtime._loadScriptsPromise(this._descriptor.scripts.map(this._modularizeURL,this),this._remoteBase());}
  96. _computeNamespace(){return specialCases[this._name]||this._name.split('_').map(a=>a.substring(0,1).toUpperCase()+a.substring(1)).join('');}
  97. _modularizeURL(resourceName){return Runtime.normalizePath(this._name+'/'+resourceName);}
  98. _remoteBase(){return!Runtime.queryParam('debugFrontend')&&this._descriptor.remote&&Runtime._remoteBase||undefined;}
  99. fetchResource(resourceName){const base=this._remoteBase();const sourceURL=Runtime.getResourceURL(this._modularizeURL(resourceName),base);return base?Runtime.loadResourcePromiseWithFallback(sourceURL):Runtime.loadResourcePromise(sourceURL);}
  100. substituteURL(value){const base=this._remoteBase()||'';return value.replace(/@url\(([^\)]*?)\)/g,convertURL.bind(this));function convertURL(match,url){return base+this._modularizeURL(url);}}}
  101. class Extension{constructor(module,descriptor){this._module=module;this._descriptor=descriptor;this._type=descriptor.type;this._hasTypeClass=this._type.charAt(0)==='@';this._className=descriptor.className||null;this._factoryName=descriptor.factoryName||null;}
  102. descriptor(){return this._descriptor;}
  103. module(){return this._module;}
  104. enabled(){return this._module.enabled()&&Runtime._isDescriptorEnabled(this.descriptor());}
  105. _typeClass(){if(!this._hasTypeClass){return null;}
  106. return this._module._manager._resolve(this._type.substring(1));}
  107. isApplicable(context){return this._module._manager.isExtensionApplicableToContext(this,context);}
  108. instance(){return this._module._loadPromise().then(this._createInstance.bind(this));}
  109. canInstantiate(){return!!(this._className||this._factoryName);}
  110. _createInstance(){const className=this._className||this._factoryName;if(!className){throw new Error('Could not instantiate extension with no class');}
  111. const constructorFunction=self.eval((className));if(!(constructorFunction instanceof Function)){throw new Error('Could not instantiate: '+className);}
  112. if(this._className){return this._module._manager.sharedInstance(constructorFunction);}
  113. return new constructorFunction(this);}
  114. title(){const title=this._descriptor['title-'+Runtime._platform]||this._descriptor['title'];if(title&&Runtime._l10nCallback){return Runtime._l10nCallback(title);}
  115. return title;}
  116. hasContextType(contextType){const contextTypes=this.descriptor().contextTypes;if(!contextTypes){return false;}
  117. for(let i=0;i<contextTypes.length;++i){if(contextType===this._module._manager._resolve(contextTypes[i])){return true;}}
  118. return false;}}
  119. class ExperimentsSupport{constructor(){this._supportEnabled=Runtime.queryParam('experiments')!==null;this._experiments=[];this._experimentNames={};this._enabledTransiently={};this._serverEnabled=new Set();}
  120. allConfigurableExperiments(){const result=[];for(let i=0;i<this._experiments.length;i++){const experiment=this._experiments[i];if(!this._enabledTransiently[experiment.name]){result.push(experiment);}}
  121. return result;}
  122. supportEnabled(){return this._supportEnabled;}
  123. _setExperimentsSetting(value){if(!self.localStorage){return;}
  124. self.localStorage['experiments']=JSON.stringify(value);}
  125. register(experimentName,experimentTitle,hidden){Runtime._assert(!this._experimentNames[experimentName],'Duplicate registration of experiment '+experimentName);this._experimentNames[experimentName]=true;this._experiments.push(new Runtime.Experiment(this,experimentName,experimentTitle,!!hidden));}
  126. isEnabled(experimentName){this._checkExperiment(experimentName);if(Runtime._experimentsSetting()[experimentName]===false){return false;}
  127. if(this._enabledTransiently[experimentName]){return true;}
  128. if(this._serverEnabled.has(experimentName)){return true;}
  129. if(!this.supportEnabled()){return false;}
  130. return!!Runtime._experimentsSetting()[experimentName];}
  131. setEnabled(experimentName,enabled){this._checkExperiment(experimentName);const experimentsSetting=Runtime._experimentsSetting();experimentsSetting[experimentName]=enabled;this._setExperimentsSetting(experimentsSetting);}
  132. setDefaultExperiments(experimentNames){for(let i=0;i<experimentNames.length;++i){this._checkExperiment(experimentNames[i]);this._enabledTransiently[experimentNames[i]]=true;}}
  133. setServerEnabledExperiments(experimentNames){for(const experiment of experimentNames){this._checkExperiment(experiment);this._serverEnabled.add(experiment);}}
  134. enableForTest(experimentName){this._checkExperiment(experimentName);this._enabledTransiently[experimentName]=true;}
  135. clearForTest(){this._experiments=[];this._experimentNames={};this._enabledTransiently={};this._serverEnabled.clear();}
  136. cleanUpStaleExperiments(){const experimentsSetting=Runtime._experimentsSetting();const cleanedUpExperimentSetting={};for(let i=0;i<this._experiments.length;++i){const experimentName=this._experiments[i].name;if(experimentsSetting[experimentName]){cleanedUpExperimentSetting[experimentName]=true;}}
  137. this._setExperimentsSetting(cleanedUpExperimentSetting);}
  138. _checkExperiment(experimentName){Runtime._assert(this._experimentNames[experimentName],'Unknown experiment '+experimentName);}}
  139. class Experiment{constructor(experiments,name,title,hidden){this.name=name;this.title=title;this.hidden=hidden;this._experiments=experiments;}
  140. isEnabled(){return this._experiments.isEnabled(this.name);}
  141. setEnabled(enabled){this._experiments.setEnabled(this.name,enabled);}}
  142. Runtime.experiments=new ExperimentsSupport();Runtime._appStartedPromiseCallback;Runtime._appStartedPromise=new Promise(fulfil=>Runtime._appStartedPromiseCallback=fulfil);Runtime._l10nCallback;Runtime._remoteBase;(function validateRemoteBase(){if(location.href.startsWith('devtools://devtools/bundled/')&&Runtime.queryParam('remoteBase')){const versionMatch=/\/serve_file\/(@[0-9a-zA-Z]+)\/?$/.exec(Runtime.queryParam('remoteBase'));if(versionMatch){Runtime._remoteBase=`${location.origin}/remote/serve_file/${versionMatch[1]}/`;}}})();self.Root=self.Root||{};Root=Root||{};Root.allDescriptors=[];Root.applicationDescriptor=undefined;Root.Runtime=Runtime;Root.runtime;Root.Runtime.ModuleDescriptor=ModuleDescriptor;Root.Runtime.ExtensionDescriptor=RuntimeExtensionDescriptor;Root.Runtime.Extension=Extension;Root.Runtime.Module=Module;Root.Runtime.ExperimentsSupport=ExperimentsSupport;Root.Runtime.Experiment=Experiment;Root.allDescriptors.push(...[{"dependencies":["ui","platform","common","cm","cm_web_modes"],"extensions":[{"className":"TextEditor.CodeMirrorUtils.TokenizerFactory","type":"@TextUtils.TokenizerFactory"},{"className":"TextEditor.CodeMirrorTextEditorFactory","type":"@UI.TextEditorFactory"}],"name":"text_editor","scripts":["text_editor_module.js"],"modules":["text_editor.js","CodeMirrorUtils.js","TextEditorAutocompleteController.js","CodeMirrorTextEditor.js"]},{"skip_compilation":["../InspectorBackendCommands.js"],"dependencies":["common","host"],"modules":["protocol.js","NodeURL.js","InspectorBackend.js","../InspectorBackendCommands.js"],"name":"protocol","scripts":[]},{"skip_compilation":["codemirror.js","multiplex.js","matchbrackets.js","closebrackets.js","mark-selection.js","comment.js","overlay.js","active-line.js","foldcode.js","foldgutter.js","brace-fold.js"],"modules":["cm.js","codemirror.js","multiplex.js","matchbrackets.js","closebrackets.js","mark-selection.js","comment.js","overlay.js","active-line.js","foldcode.js","foldgutter.js","brace-fold.js"],"name":"cm","scripts":["cm_module.js"]},{"extensions":[{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/x-csrc","text/x-c","text/x-chdr","text/x-c++src","text/x-c++hdr","text/x-java","text/x-csharp","text/x-scala","x-shader/x-vertex","x-shader/x-fragment"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"clike.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/x-coffeescript"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"coffeescript.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/markdown","text/x-markdown"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"markdown.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["application/x-httpd-php","application/x-httpd-php-open","text/x-php"],"dependencies":["clike.js"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"php.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/x-python","text/x-cython"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"python.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/x-sh"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"shell.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/x-livescript"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"livescript.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/x-clojure"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"clojure.js"},{"className":"CmModes.DefaultCodeMirrorMimeMode","mimeTypes":["text/jsx","text/typescript-jsx"],"type":"@TextEditor.CodeMirrorMimeMode","fileName":"jsx.js"}],"dependencies":["text_editor"],"modules":["cm_modes.js","DefaultCodeMirrorMimeMode.js","clike.js","coffeescript.js","php.js","python.js","shell.js","livescript.js","markdown.js","clojure.js","jsx.js"],"name":"cm_modes","skip_compilation":["clike.js","coffeescript.js","php.js","python.js","shell.js","livescript.js","markdown.js","clojure.js","jsx.js"]},{"name":"sources","modules":[],"dependencies":["components","search","source_frame","snippets","extensions","persistence","quick_open","inline_editor","color_picker","event_listeners","object_ui","formatter"],"extensions":[{"title":"Sources","id":"sources","className":"Sources.SourcesPanel","location":"panel","type":"view","order":30},{"className":"Sources.SourcesPanel","contextTypes":["Workspace.UISourceCode","Workspace.UILocation","SDK.RemoteObject","SDK.NetworkRequest","Sources.UISourceCodeFrame"],"type":"@UI.ContextMenu.Provider"},{"category":"Debugger","iconClass":"largeicon-pause","toggledIconClass":"largeicon-resume","className":"Sources.SourcesPanel.RevealingActionDelegate","contextTypes":["Sources.SourcesView","UI.ShortcutRegistry.ForwardedShortcut"],"actionId":"debugger.toggle-pause","toggleable":true,"bindings":[{"platform":"windows,linux","shortcut":"F8 Ctrl+\\"},{"platform":"mac","shortcut":"F8 Meta+\\"}],"type":"action","options":[{"value":true,"title":"Pause script execution"},{"value":false,"title":"Resume script execution"}]},{"category":"Debugger","iconClass":"largeicon-step-over","title":"Step over next function call","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["SDK.DebuggerPausedDetails"],"actionId":"debugger.step-over","bindings":[{"platform":"windows,linux","shortcut":"F10 Ctrl+'"},{"platform":"mac","shortcut":"F10 Meta+'"}],"type":"action"},{"category":"Debugger","iconClass":"largeicon-step-into","title":"Step into next function call","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["SDK.DebuggerPausedDetails"],"actionId":"debugger.step-into","bindings":[{"platform":"windows,linux","shortcut":"F11 Ctrl+;"},{"platform":"mac","shortcut":"F11 Meta+;"}],"type":"action"},{"category":"Debugger","iconClass":"largeicon-step","title":"Step","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["SDK.DebuggerPausedDetails"],"actionId":"debugger.step","bindings":[{"shortcut":"F9"}],"type":"action"},{"category":"Debugger","iconClass":"largeicon-step-out","title":"Step out of current function","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["SDK.DebuggerPausedDetails"],"actionId":"debugger.step-out","bindings":[{"platform":"windows,linux","shortcut":"Shift+F11 Shift+Ctrl+;"},{"platform":"mac","shortcut":"Shift+F11 Shift+Meta+;"}],"type":"action"},{"iconClass":"largeicon-play","title":"Run snippet","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["Sources.SourcesView"],"actionId":"debugger.run-snippet","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Enter"},{"platform":"mac","shortcut":"Meta+Enter"}],"type":"action"},{"category":"Debugger","iconClass":"largeicon-deactivate-breakpoints","toggledIconClass":"largeicon-activate-breakpoints","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["Sources.SourcesView"],"actionId":"debugger.toggle-breakpoints-active","toggleable":true,"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+F8"},{"platform":"mac","shortcut":"Meta+F8"}],"type":"action","options":[{"value":true,"title":"Deactivate breakpoints"},{"value":false,"title":"Activate breakpoints"}]},{"title":"Add selected text to watches","className":"Sources.WatchExpressionsSidebarPane","contextTypes":["Sources.UISourceCodeFrame"],"actionId":"sources.add-to-watch","bindings":[{"shortcut":"Ctrl+Shift+A"}],"type":"action"},{"className":"Sources.WatchExpressionsSidebarPane","contextTypes":["ObjectUI.ObjectPropertyTreeElement"],"type":"@UI.ContextMenu.Provider","actionId":"sources.add-to-watch","title":"Add to watch"},{"className":"Sources.WatchExpressionsSidebarPane","contextTypes":["TextEditor.CodeMirrorTextEditor"],"type":"@UI.ContextMenu.Provider"},{"className":"Sources.GutterDiffPlugin.ContextMenuProvider","contextTypes":["Workspace.UISourceCode"],"type":"@UI.ContextMenu.Provider"},{"title":"Evaluate selected text in console","className":"Sources.SourcesPanel.DebuggingActionDelegate","contextTypes":["Sources.UISourceCodeFrame"],"actionId":"debugger.evaluate-selection","bindings":[{"shortcut":"Ctrl+Shift+E"}],"type":"action"},{"className":"Sources.OpenFileQuickOpen","prefix":"","type":"@QuickOpen.FilteredListWidget.Provider","title":"Open file"},{"className":"Sources.GoToLineQuickOpen","prefix":":","type":"@QuickOpen.FilteredListWidget.Provider","title":"Go to line"},{"className":"Sources.OutlineQuickOpen","prefix":"@","type":"@QuickOpen.FilteredListWidget.Provider","title":"Go to symbol"},{"type":"context-menu-item","location":"navigatorMenu/default","actionId":"quickOpen.show"},{"className":"Sources.SourcesPanel.UILocationRevealer","contextTypes":["Workspace.UILocation"],"destination":"Sources panel","type":"@Common.Revealer"},{"className":"Sources.SourcesPanel.DebuggerLocationRevealer","contextTypes":["SDK.DebuggerModel.Location"],"destination":"Sources panel","type":"@Common.Revealer"},{"className":"Sources.SourcesPanel.UISourceCodeRevealer","contextTypes":["Workspace.UISourceCode"],"destination":"Sources panel","type":"@Common.Revealer"},{"className":"Sources.SourcesPanel.DebuggerPausedDetailsRevealer","contextTypes":["SDK.DebuggerPausedDetails"],"destination":"Sources panel","type":"@Common.Revealer"},{"className":"Sources.InplaceFormatterEditorAction","type":"@Sources.SourcesView.EditorAction"},{"className":"Sources.ScriptFormatterEditorAction","type":"@Sources.SourcesView.EditorAction"},{"title":"Filesystem","id":"navigator-files","className":"Sources.FilesNavigatorView","location":"navigator-view","type":"view","order":3,"persistence":"permanent"},{"title":"Snippets","id":"navigator-snippets","className":"Sources.SnippetsNavigatorView","location":"navigator-view","type":"view","order":6,"persistence":"permanent"},{"title":"Search","id":"sources.search-sources-tab","className":"Sources.SearchSourcesView","location":"drawer-view","type":"view","order":7,"persistence":"closeable"},{"className":"Sources.NetworkNavigatorView","viewId":"navigator-network","type":"@Sources.NavigatorView"},{"className":"Sources.FilesNavigatorView","viewId":"navigator-files","type":"@Sources.NavigatorView"},{"className":"Sources.SnippetsNavigatorView","viewId":"navigator-snippets","type":"@Sources.NavigatorView"},{"className":"Sources.SourcesView.SwitchFileActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"shortcut":"Alt+O"}],"type":"action","actionId":"sources.switch-file"},{"bindings":[{"platform":"windows,linux","shortcut":"F2"},{"platform":"mac","shortcut":"Enter"}],"type":"action","actionId":"sources.rename"},{"defaultValue":"true","type":"setting","settingName":"navigatorGroupByFolder","settingType":"boolean"},{"category":"Sources","title":"Search in anonymous and content scripts","defaultValue":false,"settingName":"searchInAnonymousAndContentScripts","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Search in anonymous and content scripts"},{"value":false,"title":"Do not search in anonymous and content scripts"}]},{"category":"Sources","title":"Automatically reveal files in sidebar","defaultValue":false,"settingName":"autoRevealInNavigator","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Automatically reveal files in sidebar"},{"value":false,"title":"Do not automatically reveal files in sidebar"}]},{"category":"Sources","title":"Enable JavaScript source maps","defaultValue":true,"settingName":"jsSourceMapsEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable JavaScript source maps"},{"value":false,"title":"Disable JavaScript source maps"}]},{"category":"Sources","title":"Enable tab moves focus","defaultValue":false,"settingName":"textEditorTabMovesFocus","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable tab moves focus"},{"value":false,"title":"Disable tab moves focus"}]},{"category":"Sources","title":"Detect indentation","defaultValue":true,"settingName":"textEditorAutoDetectIndent","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Detect indentation"},{"value":false,"title":"Do not detect indentation"}]},{"category":"Sources","title":"Autocompletion","defaultValue":true,"settingName":"textEditorAutocompletion","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable autocompletion"},{"value":false,"title":"Disable autocompletion"}]},{"category":"Sources","title":"Bracket matching","defaultValue":true,"settingName":"textEditorBracketMatching","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable bracket matching"},{"value":false,"title":"Disable bracket matching"}]},{"category":"Sources","title":"Code folding","defaultValue":false,"settingName":"textEditorCodeFolding","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable code folding"},{"value":false,"title":"Disable code folding"}]},{"category":"Sources","title":"Show whitespace characters:","defaultValue":"original","settingName":"showWhitespacesInEditor","settingType":"enum","type":"setting","options":[{"text":"None","value":"none","title":"Do not show whitespace characters"},{"text":"All","value":"all","title":"Show all whitespace characters"},{"text":"Trailing","value":"trailing","title":"Show trailing whitespace characters"}]},{"category":"Sources","title":"Display variable values inline while debugging","defaultValue":true,"settingName":"inlineVariableValues","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Display variable values inline while debugging"},{"value":false,"title":"Do not display variable values inline while debugging"}]},{"category":"Sources","title":"Enable CSS source maps","defaultValue":true,"settingName":"cssSourceMapsEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable CSS source maps"},{"value":false,"title":"Disable CSS source maps"}]},{"title":"Quick source","id":"sources.quick","className":"Sources.SourcesPanel.WrapperView","location":"drawer-view","type":"view","order":1000,"persistence":"closeable"},{"category":"Sources","className":"Sources.SourcesView.ActionDelegate","type":"action","actionId":"sources.close-all","title":"Close All"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"shortcut":"Alt+Minus"}],"type":"action","actionId":"sources.jump-to-previous-location"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"shortcut":"Alt+Plus"}],"type":"action","actionId":"sources.jump-to-next-location"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"shortcut":"Alt+w"}],"type":"action","actionId":"sources.close-editor-tab"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"shortcut":"Ctrl+g"}],"type":"action","actionId":"sources.go-to-line"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Shift+o"},{"platform":"mac","shortcut":"Meta+Shift+o"}],"type":"action","actionId":"sources.go-to-member"},{"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+b"},{"platform":"mac","shortcut":"Meta+b"}],"type":"action","actionId":"debugger.toggle-breakpoint"},{"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Shift+b"},{"platform":"mac","shortcut":"Meta+Shift+b"}],"type":"action","actionId":"debugger.toggle-breakpoint-enabled"},{"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Alt+b"},{"platform":"mac","shortcut":"Meta+Alt+b"}],"type":"action","actionId":"debugger.breakpoint-input-window"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+s"},{"platform":"mac","shortcut":"Meta+s"}],"type":"action","actionId":"sources.save"},{"className":"Sources.SourcesView.ActionDelegate","contextTypes":["Sources.SourcesView"],"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Shift+s"},{"platform":"mac","shortcut":"Meta+Alt+s"}],"type":"action","actionId":"sources.save-all"},{"category":"Sources","className":"Sources.ActionDelegate","type":"action","actionId":"sources.create-snippet","title":"Create new snippet"},{"category":"Sources","iconClass":"largeicon-add","title":"Add folder to workspace","className":"Sources.ActionDelegate","actionId":"sources.add-folder-to-workspace","type":"action","condition":"!sources.hide_add_folder"},{"showLabel":true,"type":"@UI.ToolbarItem.Provider","actionId":"sources.add-folder-to-workspace","condition":"!sources.hide_add_folder","location":"files-navigator-toolbar"},{"category":"Sources","className":"Sources.SourcesPanel","type":"@UI.ViewLocationResolver","name":"navigator-view"},{"category":"Sources","className":"Sources.SourcesPanel","type":"@UI.ViewLocationResolver","name":"sources.sidebar-top"},{"category":"Sources","className":"Sources.SourcesPanel","type":"@UI.ViewLocationResolver","name":"sources.sidebar-bottom"},{"category":"Sources","className":"Sources.SourcesPanel","type":"@UI.ViewLocationResolver","name":"sources.sidebar-tabs"},{"title":"Threads","className":"Sources.ThreadsSidebarPane","persistence":"permanent","type":"view","id":"sources.threads","condition":"!sources.hide_thread_sidebar"},{"className":"Sources.ScopeChainSidebarPane","type":"view","id":"sources.scopeChain","persistence":"permanent","title":"Scope"},{"title":"Watch","className":"Sources.WatchExpressionsSidebarPane","hasToolbar":true,"type":"view","id":"sources.watch","persistence":"permanent"},{"className":"Sources.JavaScriptBreakpointsSidebarPane","type":"view","id":"sources.jsBreakpoints","persistence":"permanent","title":"Breakpoints"},{"className":"Sources.JavaScriptBreakpointsSidebarPane","contextTypes":["SDK.DebuggerPausedDetails"],"type":"@UI.ContextFlavorListener"},{"className":"Sources.CallStackSidebarPane","contextTypes":["SDK.DebuggerPausedDetails"],"type":"@UI.ContextFlavorListener"},{"className":"Sources.ScopeChainSidebarPane","contextTypes":["SDK.DebuggerModel.CallFrame"],"type":"@UI.ContextFlavorListener"},{"category":"Debugger","title":"Previous call frame","className":"Sources.CallStackSidebarPane.ActionDelegate","contextTypes":["SDK.DebuggerPausedDetails"],"actionId":"debugger.previous-call-frame","bindings":[{"shortcut":"Ctrl+,"}],"type":"action"},{"category":"Debugger","title":"Next call frame","className":"Sources.CallStackSidebarPane.ActionDelegate","contextTypes":["SDK.DebuggerPausedDetails"],"actionId":"debugger.next-call-frame","bindings":[{"shortcut":"Ctrl+."}],"type":"action"},{"category":"DevTools","title":"Search","className":"Sources.SearchSourcesView.ActionDelegate","actionId":"sources.search","bindings":[{"platform":"mac","shortcut":"Meta+Alt+F"},{"platform":"windows,linux","shortcut":"Ctrl+Shift+F"}],"type":"action"},{"type":"context-menu-item","location":"mainMenu/default","actionId":"sources.search"}],"scripts":["sources_module.js"]},{"extensions":[{"category":"Network","title":"Preserve log","defaultValue":false,"tags":"preserve, clear, reset","settingName":"network_log.preserve-log","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Do not preserve log on page reload / navigation"},{"value":false,"title":"Preserve log on page reload / navigation"}]}],"dependencies":["sdk"],"modules":["browser_sdk.js","LogManager.js"],"name":"browser_sdk","scripts":[]},{"dependencies":["common","platform"],"modules":["host.js","InspectorFrontendHostAPI.js","InspectorFrontendHost.js","Platform.js","ResourceLoader.js","UserMetrics.js"],"name":"host","scripts":[]},{"skip_compilation":["diff_match_patch.js"],"dependencies":["common"],"modules":["diff.js","DiffWrapper.js","diff_match_patch.js"],"name":"diff","scripts":[]},{"dependencies":["sdk","platform","services","workspace"],"modules":["bindings.js","LiveLocation.js","ResourceMapping.js","CompilerScriptMapping.js","ResourceScriptMapping.js","SASSSourceMapping.js","StylesSourceMapping.js","CSSWorkspaceBinding.js","DebuggerWorkspaceBinding.js","BreakpointManager.js","ContentProviderBasedProject.js","DefaultScriptMapping.js","FileUtils.js","BlackboxManager.js","NetworkProject.js","PresentationConsoleMessageHelper.js","ResourceUtils.js","TempFile.js"],"name":"bindings","scripts":[]},{"extensions":[{"className":"Snippets.SnippetsQuickOpen","prefix":"!","type":"@QuickOpen.FilteredListWidget.Provider","title":"Run snippet"}],"dependencies":["bindings","quick_open","persistence"],"modules":["snippets.js","ScriptSnippetFileSystem.js","SnippetsQuickOpen.js"],"name":"snippets","scripts":[]},{"dependencies":[],"modules":["heap_snapshot_model.js","HeapSnapshotModel.js"],"name":"heap_snapshot_model","scripts":[]},{"dependencies":["components","data_grid","object_ui","sdk","formatter"],"extensions":[{"title":"Console","id":"console","className":"Console.ConsolePanel","location":"panel","type":"view","order":20},{"title":"Console","id":"console-view","className":"Console.ConsolePanel.WrapperView","location":"drawer-view","type":"view","order":0,"persistence":"permanent"},{"className":"Console.ConsolePanel.ConsoleRevealer","contextTypes":["Common.Console"],"type":"@Common.Revealer"},{"className":"Console.ConsoleView.ActionDelegate","bindings":[{"shortcut":"Ctrl+`"}],"type":"action","actionId":"console.show"},{"category":"Console","iconClass":"largeicon-clear","title":"Clear console","className":"Console.ConsoleView.ActionDelegate","contextTypes":["Console.ConsoleView"],"actionId":"console.clear","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+L"},{"platform":"mac","shortcut":"Ctrl+L Meta+K"}],"type":"action"},{"category":"Console","className":"Console.ConsoleView.ActionDelegate","type":"action","actionId":"console.clear.history","title":"Clear console history"},{"category":"Console","iconClass":"largeicon-visibility","title":"Create live expression","className":"Console.ConsoleView.ActionDelegate","actionId":"console.create-pin","type":"action"},{"category":"Console","title":"Hide network messages","defaultValue":false,"settingName":"hideNetworkMessages","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Hide network messages"},{"value":false,"title":"Show network messages"}]},{"category":"Console","title":"Selected context only","storageType":"session","defaultValue":false,"settingName":"selectedContextFilterEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Only show messages from the current context (top, iframe, worker, extension)"},{"value":false,"title":"Show messages from all contexts"}]},{"category":"Console","title":"Log XMLHttpRequests","defaultValue":false,"settingName":"monitoringXHREnabled","settingType":"boolean","type":"setting"},{"category":"Console","title":"Show timestamps","defaultValue":false,"settingName":"consoleTimestampsEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show timestamps"},{"value":false,"title":"Hide timestamps"}]},{"category":"Console","title":"Autocomplete from history","defaultValue":true,"settingName":"consoleHistoryAutocomplete","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Autocomplete from history"},{"value":false,"title":"Do not autocomplete from history"}]},{"category":"Console","title":"Group similar","defaultValue":true,"settingName":"consoleGroupSimilar","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Group similar messages in console"},{"value":false,"title":"Do not group similar messages in console"}]},{"category":"Console","title":"Eager evaluation","defaultValue":true,"settingName":"consoleEagerEval","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Eagerly evaluate console prompt text"},{"value":false,"title":"Do not eagerly evaluate console prompt text"}]},{"category":"Console","title":"Evaluate triggers user activation","defaultValue":true,"settingName":"consoleUserActivationEval","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Treat evaluation as user activation"},{"value":false,"title":"Do not treat evaluation as user activation"}]}],"name":"console","scripts":["console_module.js"],"modules":["ConsoleContextSelector.js","ConsoleFilter.js","ConsolePinPane.js","ConsoleSidebar.js","ConsoleViewport.js","ConsoleViewMessage.js","ConsolePrompt.js","ConsoleView.js","ConsolePanel.js"]},{"dependencies":["platform","ui","host","components","data_grid","source_frame"],"extensions":[{"title":"Protocol monitor","id":"protocol-monitor","className":"ProtocolMonitor.ProtocolMonitor","experiment":"protocolMonitor","location":"drawer-view","type":"view","order":100,"persistence":"closeable"}],"name":"protocol_monitor","scripts":["protocol_monitor_module.js"],"modules":["protocol_monitor.js","ProtocolMonitor.js"]},{"dependencies":["workspace","diff","persistence"],"modules":["workspace_diff.js","WorkspaceDiff.js"],"name":"workspace_diff","scripts":[]},{"name":"perf_ui","modules":[],"dependencies":["ui","sdk","bindings","source_frame","text_editor"],"extensions":[{"className":"PerfUI.LiveHeapProfile","experiment":"liveHeapProfile","type":"late-initialization","setting":"memoryLiveHeapProfile"},{"className":"PerfUI.LineLevelProfile.LineDecorator","decoratorType":"performance","type":"@SourceFrame.LineDecorator"},{"className":"PerfUI.LineLevelProfile.LineDecorator","decoratorType":"memory","type":"@SourceFrame.LineDecorator"},{"category":"Performance","title":"Flamechart mouse wheel action:","defaultValue":"zoom","settingName":"flamechartMouseWheelAction","settingType":"enum","type":"setting","options":[{"text":"Scroll","value":"scroll","title":"Scroll"},{"text":"Zoom","value":"zoom","title":"Zoom"}]},{"category":"Memory","title":"Live memory allocation annotations","defaultValue":false,"experiment":"liveHeapProfile","settingName":"memoryLiveHeapProfile","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show live memory allocation annotations"},{"value":false,"title":"Hide live memory allocation annotations"}]},{"iconClass":"largeicon-trash-bin","className":"PerfUI.GCActionDelegate","type":"action","actionId":"components.collect-garbage","title":"Collect garbage"}],"scripts":["perf_ui_module.js"]},{"dependencies":[],"modules":["platform.js","utilities.js"],"name":"platform","scripts":[]},{"dependencies":["text_editor","ui","platform","persistence","formatter","object_ui","workspace_diff"],"extensions":[{"category":"Sources","title":"Default indentation:","defaultValue":" ","settingName":"textEditorIndent","settingType":"enum","type":"setting","options":[{"text":"2 spaces","value":" ","title":"Set indentation to 2 spaces"},{"text":"4 spaces","value":" ","title":"Set indentation to 4 spaces"},{"text":"8 spaces","value":" ","title":"Set indentation to 8 spaces"},{"text":"Tab character","value":"\t","title":"Set indentation to tab character"}]}],"name":"source_frame","scripts":["source_frame_module.js"],"modules":["source_frame.js","BinaryResourceViewFactory.js","SourcesTextEditor.js","FontView.js","ImageView.js","SourceFrame.js","ResourceSourceFrame.js","JSONView.js","XMLView.js","PreviewFactory.js","SourceCodeDiff.js"]},{"dependencies":["extensions","host","platform","sdk","persistence"],"extensions":[{"className":"Main.SimpleAppProvider","type":"@Common.AppProvider","order":10},{"className":"Components.Linkifier.ContentProviderContextMenuProvider","contextTypes":["Workspace.UISourceCode","SDK.Resource","SDK.NetworkRequest"],"type":"@UI.ContextMenu.Provider"},{"className":"UI.XLink.ContextMenuProvider","contextTypes":["Node"],"type":"@UI.ContextMenu.Provider"},{"className":"Components.Linkifier.LinkContextMenuProvider","contextTypes":["Node"],"type":"@UI.ContextMenu.Provider"},{"category":"Drawer","title":"Focus debuggee","className":"InspectorMain.FocusDebuggeeActionDelegate","actionId":"inspector_main.focus-debuggee","type":"action","order":100},{"category":"Drawer","title":"Toggle drawer","className":"UI.InspectorView.ActionDelegate","actionId":"main.toggle-drawer","bindings":[{"shortcut":"Esc"}],"type":"action","order":101},{"className":"UI.InspectorView.ActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+]"},{"platform":"mac","shortcut":"Meta+]"}],"type":"action","actionId":"main.next-tab"},{"className":"UI.InspectorView.ActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+["},{"platform":"mac","shortcut":"Meta+["}],"type":"action","actionId":"main.previous-tab"},{"className":"Main.ReloadActionDelegate","bindings":[{"shortcut":"Alt+R"}],"type":"action","actionId":"main.debug-reload"},{"category":"DevTools","title":"Restore last dock position","className":"Components.DockController.ToggleDockActionDelegate","actionId":"main.toggle-dock","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Shift+D"},{"platform":"mac","shortcut":"Meta+Shift+D"}],"type":"action"},{"className":"Main.Main.ZoomActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Plus Ctrl+Shift+Plus Ctrl+NumpadPlus Ctrl+Shift+NumpadPlus"},{"platform":"mac","shortcut":"Meta+Plus Meta+Shift+Plus Meta+NumpadPlus Meta+Shift+NumpadPlus"}],"type":"action","actionId":"main.zoom-in"},{"className":"Main.Main.ZoomActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Minus Ctrl+Shift+Minus Ctrl+NumpadMinus Ctrl+Shift+NumpadMinus"},{"platform":"mac","shortcut":"Meta+Minus Meta+Shift+Minus Meta+NumpadMinus Meta+Shift+NumpadMinus"}],"type":"action","actionId":"main.zoom-out"},{"className":"Main.Main.ZoomActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+0 Ctrl+Numpad0"},{"platform":"mac","shortcut":"Meta+0 Meta+Numpad0"}],"type":"action","actionId":"main.zoom-reset"},{"className":"Main.Main.SearchActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+F"},{"platform":"mac","shortcut":"Meta+F F3"}],"type":"action","actionId":"main.search-in-panel.find"},{"className":"Main.Main.SearchActionDelegate","bindings":[{"shortcut":"Esc"}],"type":"action","actionId":"main.search-in-panel.cancel","order":10},{"className":"Main.Main.SearchActionDelegate","bindings":[{"platform":"mac","shortcut":"Meta+G"},{"platform":"windows,linux","shortcut":"Ctrl+G"},{"platform":"windows,linux","shortcut":"F3"}],"type":"action","actionId":"main.search-in-panel.find-next"},{"className":"Main.Main.SearchActionDelegate","bindings":[{"platform":"mac","shortcut":"Meta+Shift+G"},{"platform":"windows,linux","shortcut":"Ctrl+Shift+G"},{"platform":"windows,linux","shortcut":"Shift+F3"}],"type":"action","actionId":"main.search-in-panel.find-previous"},{"separator":true,"type":"@UI.ToolbarItem.Provider","location":"main-toolbar-left","order":100},{"separator":true,"type":"@UI.ToolbarItem.Provider","order":98,"location":"main-toolbar-right"},{"className":"Main.Main.MainMenuItem","type":"@UI.ToolbarItem.Provider","order":99,"location":"main-toolbar-right"},{"className":"Components.DockController.CloseButtonProvider","type":"@UI.ToolbarItem.Provider","order":100,"location":"main-toolbar-right"},{"category":"Appearance","title":"Theme:","defaultValue":"systemPreferred","tags":"dark, light","settingName":"uiTheme","settingType":"enum","type":"setting","options":[{"text":"System preference","value":"systemPreferred","title":"Switch to system preferred color theme"},{"text":"Light","value":"default","title":"Switch to light theme"},{"text":"Dark","value":"dark","title":"Switch to dark theme"}]},{"category":"Appearance","title":"Panel layout:","defaultValue":"auto","settingName":"sidebarPosition","settingType":"enum","type":"setting","options":[{"text":"horizontal","value":"bottom","title":"Use horizontal panel layout"},{"text":"vertical","value":"right","title":"Use vertical panel layout"},{"text":"auto","value":"auto","title":"Use automatic panel layout"}]},{"category":"Appearance","title":"Color format:","defaultValue":"original","settingName":"colorFormat","settingType":"enum","type":"setting","options":[{"text":"As authored","value":"original","title":"Set color format as authored"},{"raw":true,"text":"HEX: #dac0de","value":"hex","title":"Set color format to HEX"},{"raw":true,"text":"RGB: rgb(128, 255, 255)","value":"rgb","title":"Set color format to RGB"},{"raw":true,"text":"HSL: hsl(300, 80%, 90%)","value":"hsl","title":"Set color format to HSL"}]},{"category":"Appearance","title-mac":"Enable \u2318 + 1-9 shortcut to switch panels","title":"Enable Ctrl + 1-9 shortcut to switch panels","defaultValue":false,"settingName":"shortcutPanelSwitch","settingType":"boolean","type":"setting"},{"category":"Extensions","className":"Components.Linkifier.LinkHandlerSettingUI","type":"@UI.SettingUI"},{"category":"DevTools","defaultValue":"right","settingName":"currentDockState","settingType":"enum","type":"setting","options":[{"text":"Right","value":"right","title":"Dock to right"},{"text":"Bottom","value":"bottom","title":"Dock to bottom"},{"text":"Undocked","value":"undocked","title":"Undock into separate window"}]},{"category":"Drawer","className":"UI.InspectorView","type":"@UI.ViewLocationResolver","name":"drawer-view"},{"category":"Drawer sidebar","className":"UI.InspectorView","type":"@UI.ViewLocationResolver","name":"drawer-sidebar"},{"category":"Panel","className":"UI.InspectorView","type":"@UI.ViewLocationResolver","name":"panel"}],"name":"main"},{"dependencies":["bindings","workspace","components","sdk"],"extensions":[{"title":"Workspace","id":"workspace","className":"Persistence.WorkspaceSettingsTab","location":"settings-view","type":"view","order":1},{"category":"Persistence","title":"Enable Local Overrides","defaultValue":false,"tags":"interception, override, network, rewrite, request","settingName":"persistenceNetworkOverridesEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable override network requests"},{"value":false,"title":"Disable override network requests"}]},{"className":"Persistence.PersistenceActions.ContextMenuProvider","contextTypes":["Workspace.UISourceCode","SDK.Resource","SDK.NetworkRequest"],"type":"@UI.ContextMenu.Provider"}],"name":"persistence","modules":["persistence.js","PlatformFileSystem.js","IsolatedFileSystem.js","IsolatedFileSystemManager.js","FileSystemWorkspaceBinding.js","Automapping.js","NetworkPersistenceManager.js","PersistenceImpl.js","PersistenceActions.js","PersistenceUtils.js","EditFileSystemView.js","WorkspaceSettingsTab.js"]},{"dependencies":["ui"],"modules":["inline_editor.js","BezierEditor.js","BezierUI.js","ColorSwatch.js","CSSShadowEditor.js","SwatchPopoverHelper.js","CSSShadowModel.js"],"name":"inline_editor","scripts":["inline_editor_module.js"]},{"dependencies":["common","ui","sdk"],"extensions":[{"className":"ConsoleCounters.WarningErrorCounter","type":"@UI.ToolbarItem.Provider","order":1,"location":"main-toolbar-right"}],"name":"console_counters","modules":["console_counters.js","WarningErrorCounter.js"]},{"dependencies":["common","host","platform"],"modules":["workspace.js","FileManager.js","UISourceCode.js","WorkspaceImpl.js"],"name":"workspace","scripts":[]},{"dependencies":["ui","diff"],"extensions":[{"className":"QuickOpen.CommandMenuProvider","prefix":">","type":"@QuickOpen.FilteredListWidget.Provider","title":"Run command"},{"className":"QuickOpen.HelpQuickOpen","prefix":"?","type":"@QuickOpen.FilteredListWidget.Provider"},{"className":"QuickOpen.CommandMenu.ShowActionDelegate","bindings":[{"platform":"windows,linux","shortcut":"Ctrl+Shift+P"},{"platform":"mac","shortcut":"Meta+Shift+P"}],"type":"action","actionId":"commandMenu.show","title":"Run command"},{"type":"context-menu-item","location":"mainMenu/default","actionId":"commandMenu.show"},{"title":"Open file","className":"QuickOpen.QuickOpen.ShowActionDelegate","actionId":"quickOpen.show","bindings":[{"platform":"mac","shortcut":"Meta+P Meta+O"},{"platform":"windows,linux","shortcut":"Ctrl+P Ctrl+O"}],"type":"action","order":100},{"type":"context-menu-item","location":"mainMenu/default","actionId":"quickOpen.show"}],"name":"quick_open","scripts":["quick_open_module.js"],"modules":["quick_open.js","FilteredListWidget.js","QuickOpen.js","CommandMenu.js","HelpQuickOpen.js"]},{"skip_compilation":["css.js","javascript.js","xml.js","htmlmixed.js","htmlembedded.js"],"dependencies":[],"modules":["cm_web_modes.js","cm_web_modes_cm.js","cm_web_modes_headless.js","css.js","javascript.js","xml.js","htmlmixed.js","htmlembedded.js"],"name":"cm_web_modes","scripts":[]},{"dependencies":["ui"],"modules":["data_grid.js","DataGrid.js","ViewportDataGrid.js","SortableDataGrid.js","ShowMoreDataGridNode.js"],"name":"data_grid","scripts":["data_grid_module.js"]},{"dependencies":["components","browser_sdk","common"],"modules":["extensions.js","ExtensionAPI.js","ExtensionTraceProvider.js","ExtensionServer.js","ExtensionPanel.js","ExtensionView.js"],"name":"extensions","scripts":[]},{"dependencies":["sdk","ui","source_frame","sources","data_grid"],"extensions":[{"title":"Coverage","order":100,"className":"Coverage.CoverageView","location":"drawer-view","type":"view","id":"coverage","persistence":"closeable"},{"className":"Coverage.CoverageView.LineDecorator","decoratorType":"coverage","type":"@SourceFrame.LineDecorator"},{"iconClass":"largeicon-start-recording","toggledIconClass":"largeicon-stop-recording","className":"Coverage.CoverageView.ActionDelegate","toggleWithRedColor":true,"actionId":"coverage.toggle-recording","toggleable":true,"category":"Performance","type":"action","options":[{"value":true,"title":"Instrument coverage"},{"value":false,"title":"Stop instrumenting coverage and show results"}]},{"iconClass":"largeicon-refresh","category":"Performance","title":"Start instrumenting coverage and reload page","className":"Coverage.CoverageView.ActionDelegate","actionId":"coverage.start-with-reload","type":"action"}],"name":"coverage","scripts":["coverage_module.js"],"modules":["CoverageModel.js","CoverageListView.js","CoverageView.js","CoverageDecorationManager.js"]},{"dependencies":["common","host"],"modules":["services.js","ServiceManager.js"],"name":"services","scripts":[]},{"dependencies":["ui","common","components","sdk","object_ui"],"modules":["event_listeners.js","EventListenersView.js","EventListenersUtils.js"],"name":"event_listeners","scripts":["event_listeners_module.js"]},{"dependencies":["platform"],"modules":["dom_extension.js","DOMExtension.js"],"name":"dom_extension","scripts":[]},{"dependencies":["common","host","platform","protocol"],"extensions":[{"defaultValue":"","type":"setting","settingName":"skipStackFramesPattern","settingType":"regex"},{"defaultValue":false,"type":"setting","settingName":"skipContentScripts","settingType":"boolean"},{"category":"Console","title":"Preserve log upon navigation","defaultValue":false,"settingName":"preserveConsoleLog","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Preserve log upon navigation"},{"value":false,"title":"Do not preserve log upon navigation"}]},{"category":"Debugger","defaultValue":false,"settingName":"pauseOnExceptionEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Pause on exceptions"},{"value":false,"title":"Do not pause on exceptions"}]},{"defaultValue":false,"type":"setting","settingName":"pauseOnCaughtException","settingType":"boolean"},{"category":"Debugger","title":"Disable JavaScript","storageType":"session","defaultValue":false,"options":[{"value":true,"title":"Disable JavaScript"},{"value":false,"title":"Enable JavaScript"}],"settingName":"javaScriptDisabled","settingType":"boolean","type":"setting","order":1},{"category":"Debugger","title":"Disable async stack traces","defaultValue":false,"options":[{"value":true,"title":"Do not capture async stack traces"},{"value":false,"title":"Capture async stack traces"}],"settingName":"disableAsyncStackTraces","settingType":"boolean","type":"setting","order":2},{"category":"Debugger","storageType":"session","defaultValue":true,"settingName":"breakpointsActive","settingType":"boolean","type":"setting"},{"category":"Elements","title":"Show rulers","defaultValue":false,"settingName":"showMetricsRulers","settingType":"boolean","type":"setting"},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showPaintRects","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show paint flashing rectangles"},{"value":false,"title":"Hide paint flashing rectangles"}]},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showLayoutShiftRegions","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show layout shift regions"},{"value":false,"title":"Hide layout shift regions"}]},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showAdHighlights","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Highlight ad frames"},{"value":false,"title":"Do not highlight ad frames"}]},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showDebugBorders","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show layer borders"},{"value":false,"title":"Hide layer borders"}]},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showFPSCounter","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show frames per second (FPS) meter"},{"value":false,"title":"Hide frames per second (FPS) meter"}]},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showScrollBottleneckRects","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show scroll performance bottlenecks"},{"value":false,"title":"Hide scroll performance bottlenecks"}]},{"category":"Rendering","storageType":"session","defaultValue":false,"settingName":"showHitTestBorders","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Show hit-test borders"},{"value":false,"title":"Hide hit-test borders"}]},{"category":"Rendering","tags":"query","storageType":"session","defaultValue":"","title":"Emulate CSS media type","settingName":"emulatedCSSMedia","settingType":"enum","type":"setting","options":[{"text":"No emulation","value":"","title":"Do not emulate CSS media type"},{"text":"print","value":"print","title":"Emulate CSS print media type"},{"text":"screen","value":"screen","title":"Emulate CSS screen media type"}]},{"category":"Rendering","tags":"query","storageType":"session","defaultValue":"","title":"Emulate CSS media feature prefers-color-scheme","settingName":"emulatedCSSMediaFeaturePrefersColorScheme","settingType":"enum","type":"setting","options":[{"text":"No emulation","value":"","title":"Do not emulate CSS prefers-color-scheme"},{"text":"prefers-color-scheme: light","value":"light","title":"Emulate CSS prefers-color-scheme: light"},{"text":"prefers-color-scheme: dark","value":"dark","title":"Emulate CSS prefers-color-scheme: dark"}]},{"category":"Rendering","tags":"query","storageType":"session","defaultValue":"","title":"Emulate CSS media feature prefers-reduced-motion","settingName":"emulatedCSSMediaFeaturePrefersReducedMotion","settingType":"enum","type":"setting","options":[{"text":"No emulation","value":"","title":"Do not emulate CSS prefers-reduced-motion"},{"text":"prefers-reduced-motion: reduce","value":"reduce","title":"Emulate CSS prefers-reduced-motion: reduce"}]},{"category":"Console","title":"Enable custom formatters","defaultValue":false,"settingName":"customFormatters","settingType":"boolean","type":"setting"},{"category":"Network","title":"Enable request blocking","storageType":"session","defaultValue":false,"settingName":"requestBlockingEnabled","settingType":"boolean","type":"setting","options":[{"value":true,"title":"Enable request blocking"},{"value":false,"title":"Disable request blocking"}]},{"category":"Network","title":"Disable cache (while DevTools is open)","defaultValue":false,"options":[{"value":true,"title":"Disable cache (while DevTools is open)"},{"value":false,"title":"Enable cache"}],"userActionCondition":"hasOtherClients","settingName":"cacheDisabled","settingType":"boolean","type":"setting","order":0}],"name":"sdk","scripts":[],"skip_compilation":["../SupportedCSSProperties.js","wasm_source_map/pkg/wasm_source_map.js"],"modules":["sdk.js","SDKModel.js","Target.js","TargetManager.js","Connections.js","CompilerSourceMappingContentProvider.js","CookieModel.js","CookieParser.js","ProfileTreeModel.js","IssuesModel.js","ServerTiming.js","CPUProfileDataModel.js","CPUProfilerModel.js","CSSMatchedStyles.js","CSSMedia.js","CSSMetadata.js","CSSModel.js","CSSProperty.js","CSSRule.js","CSSStyleDeclaration.js","CSSStyleSheetHeader.js","ChildTargetManager.js","DOMDebuggerModel.js","DOMModel.js","DebuggerModel.js","EmulationModel.js","HARLog.js","LayerTreeBase.js","LogModel.js","ServiceWorkerManager.js","TracingManager.js","TracingModel.js","OverlayModel.js","RuntimeModel.js","IsolateManager.js","ScreenCaptureModel.js","Script.js","ServiceWorkerCacheModel.js","RemoteObject.js","Resource.js","ResourceTreeModel.js","SecurityOriginManager.js","SourceMap.js","SourceMapManager.js","NetworkManager.js","NetworkLog.js","NetworkRequest.js","PaintProfiler.js","HeapProfilerModel.js","PerformanceMetricsModel.js","../SupportedCSSProperties.js","FilmStripModel.js","ConsoleModel.js","wasm_source_map/pkg/wasm_source_map.js","wasm_source_map/types.js"]},{"dependencies":["components"],"modules":["search.js","SearchView.js","SearchConfig.js","SearchResultsPane.js"],"name":"search","scripts":["search_module.js"]},{"dependencies":["common"],"modules":["formatter.js","FormatterWorkerPool.js","ScriptFormatter.js"],"name":"formatter","scripts":[]},{"dependencies":["components"],"extensions":[{"category":"Settings","title":"Settings","className":"Settings.SettingsScreen.ActionDelegate","actionId":"settings.show","bindings":[{"shortcut":"F1 Shift+?"}],"type":"action"},{"category":"Settings","className":"Settings.SettingsScreen.ActionDelegate","type":"action","actionId":"settings.documentation","title":"Documentation"},{"category":"Settings","className":"Settings.SettingsScreen.ActionDelegate","type":"action","actionId":"settings.shortcuts","title":"Shortcuts"},{"className":"Settings.SettingsScreen.Revealer","contextTypes":["Common.Setting"],"type":"@Common.Revealer"},{"type":"context-menu-item","location":"mainMenu/footer","actionId":"settings.shortcuts"},{"type":"context-menu-item","location":"mainMenuHelp/default","actionId":"settings.documentation"},{"type":"context-menu-item","location":"mainMenu/footer","actionId":"settings.show"},{"title":"Preferences","id":"preferences","className":"Settings.GenericSettingsTab","location":"settings-view","type":"view","order":0},{"title":"Experiments","id":"experiments","className":"Settings.ExperimentsSettingsTab","experiment":"*","location":"settings-view","type":"view","order":3},{"title":"Blackboxing","id":"blackbox","className":"Settings.FrameworkBlackboxSettingsTab","location":"settings-view","type":"view","order":4},{"category":"Settings","className":"Settings.SettingsScreen","type":"@UI.ViewLocationResolver","name":"settings-view"}],"name":"settings","scripts":["settings_module.js"],"modules":["settings.js","SettingsScreen.js","FrameworkBlackboxSettingsTab.js"]},{"dependencies":["ui","sdk"],"modules":["color_picker.js","ContrastInfo.js","ContrastOverlay.js","ContrastDetails.js","Spectrum.js"],"name":"color_picker","scripts":["color_picker_module.js"]},{"name":"profiler","modules":[],"dependencies":["components","perf_ui","data_grid","heap_snapshot_model","object_ui"],"extensions":[{"title":"Memory","id":"heap_profiler","className":"Profiler.HeapProfilerPanel","location":"panel","type":"view","order":60},{"title":"Live Heap Profile","order":100,"className":"Profiler.LiveHeapProfileView","experiment":"liveHeapProfile","location":"drawer-view","type":"view","id":"live_heap_profile","persistence":"closeable"},{"className":"Profiler.HeapProfilerPanel","contextTypes":["SDK.RemoteObject"],"type":"@UI.ContextMenu.Provider"},{"category":"Performance","title":"High resolution CPU profiling","defaultValue":true,"settingName":"highResolutionCpuProfiling","settingType":"boolean","type":"setting"},{"category":"Performance","title":"Show native functions in JS Profile","defaultValue":true,"settingName":"showNativeFunctionsInJSProfile","settingType":"boolean","type":"setting"},{"iconClass":"largeicon-start-recording","toggledIconClass":"largeicon-stop-recording","className":"Profiler.LiveHeapProfileView.ActionDelegate","toggleWithRedColor":true,"actionId":"live-heap-profile.toggle-recording","toggleable":true,"category":"Performance","type":"action","options":[{"value":true,"title":"Start recording heap allocations"},{"value":false,"title":"Stop recording heap allocations"}]},{"iconClass":"largeicon-refresh","category":"Performance","title":"Start recording heap allocations and reload the page","className":"Profiler.LiveHeapProfileView.ActionDelegate","actionId":"live-heap-profile.start-with-reload","type":"action"},{"iconClass":"largeicon-start-recording","toggledIconClass":"largeicon-stop-recording","className":"Profiler.HeapProfilerPanel","toggleWithRedColor":true,"actionId":"profiler.heap-toggle-recording","toggleable":true,"contextTypes":["Profiler.HeapProfilerPanel"],"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+E"},{"platform":"mac","shortcut":"Meta+E"}],"type":"action"},{"iconClass":"largeicon-start-recording","toggledIconClass":"largeicon-stop-recording","className":"Profiler.JSProfilerPanel","toggleWithRedColor":true,"actionId":"profiler.js-toggle-recording","toggleable":true,"contextTypes":["Profiler.JSProfilerPanel"],"bindings":[{"platform":"windows,linux","shortcut":"Ctrl+E"},{"platform":"mac","shortcut":"Meta+E"}],"type":"action"}],"scripts":["profiler_module.js"]},{"dependencies":["platform","dom_extension","common","host"],"modules":["Action.js","ActionDelegate.js","ARIAUtils.js","ContextFlavorListener.js","ui.js","XElement.js","Widget.js","View.js","ViewManager.js","Treeoutline.js","InspectorView.js","ActionRegistry.js","ShortcutRegistry.js","Context.js","ContextMenu.js","GlassPane.js","Dialog.js","SyntaxHighlighter.js","DropTarget.js","EmptyWidget.js","FilterBar.js","FilterSuggestionBuilder.js","ForwardedInputEventHandler.js","Fragment.js","HistoryInput.js","Icon.js","Infobar.js","InplaceEditor.js","TextEditor.js","KeyboardShortcut.js","ListControl.js","ListModel.js","ListWidget.js","Panel.js","PopoverHelper.js","ProgressIndicator.js","ResizerWidget.js","RemoteDebuggingTerminatedScreen.js","ReportView.js","RootView.js","SearchableView.js","SegmentedButton.js","SettingsUI.js","SoftContextMenu.js","SoftDropDown.js","SplitWidget.js","TargetCrashedScreen.js","TextPrompt.js","ThrottledWidget.js","Toolbar.js","Tooltip.js","SuggestBox.js","TabbedPane.js","UIUtils.js","ZoomManager.js","ShortcutsScreen.js","Geometry.js","XLink.js","XWidget.js"],"name":"ui"},{"dependencies":["text_utils","platform"],"modules":["common.js","common-legacy.js","EventTarget.js","Object.js","Worker.js","TextDictionary.js","Color.js","Console.js","ContentProvider.js","ParsedURL.js","Progress.js","UIString.js","ResourceType.js","Settings.js","StaticContentProvider.js","SegmentedRange.js","Throttler.js","Trie.js","Revealer.js","App.js","AppProvider.js","JavaScriptMetaData.js","Linkifier.js","QueryParamHandler.js","Revealer.js","Runnable.js","StringOutputStream.js","CharacterIdMap.js"],"name":"common","scripts":[]},{"dependencies":["bindings","platform","ui"],"modules":["components.js","JSPresentationUtils.js","DockController.js","ImagePreview.js","Linkifier.js","Reload.js","TargetDetachedDialog.js"],"name":"components"},{"dependencies":["ui","sdk","components","formatter"],"extensions":[{"className":"ObjectUI.ObjectPropertiesSection.Renderer","contextTypes":["SDK.RemoteObject"],"type":"@UI.Renderer"}],"name":"object_ui","scripts":["object_ui_module.js"],"modules":["object_ui.js","CustomPreviewComponent.js","ObjectPopoverHelper.js","ObjectPropertiesSection.js","JavaScriptAutocomplete.js","JavaScriptREPL.js","RemoteObjectPreviewFormatter.js"]},{"extensions":[{"className":"JavaScriptMetadata.JavaScriptMetadata","type":"@Common.JavaScriptMetadata"}],"dependencies":["common"],"modules":["javascript_metadata.js","NativeFunctions.js","JavaScriptMetadata.js"],"name":"javascript_metadata","scripts":[]},{"dependencies":["workspace_diff","text_editor","workspace","diff","bindings","persistence","snippets","ui"],"extensions":[{"title":"Changes","className":"Changes.ChangesView","location":"drawer-view","type":"view","id":"changes.changes","persistence":"closeable"},{"className":"Changes.ChangesView.DiffUILocationRevealer","contextTypes":["WorkspaceDiff.DiffUILocation"],"destination":"Changes drawer","type":"@Common.Revealer"}],"name":"changes","scripts":["changes_module.js"],"modules":["ChangesHighlighter.js","ChangesView.js","ChangesSidebar.js"]},{"dependencies":["platform"],"modules":["text_utils.js","Text.js","TextUtils.js","TextRange.js"],"name":"text_utils","scripts":[]}]);Root.applicationDescriptor={"has_html":false,"modules":[{"name":"text_editor"},{"type":"autostart","name":"protocol"},{"name":"cm"},{"name":"data_grid"},{"name":"perf_ui"},{"name":"sources"},{"type":"autostart","name":"browser_sdk"},{"name":"diff"},{"type":"autostart","name":"bindings"},{"name":"snippets"},{"name":"heap_snapshot_model"},{"type":"autostart","name":"dom_extension"},{"name":"console"},{"name":"protocol_monitor"},{"name":"workspace_diff"},{"name":"cm_modes"},{"type":"autostart","name":"platform"},{"type":"autostart","name":"ui"},{"type":"autostart","name":"main"},{"type":"autostart","name":"persistence"},{"name":"inline_editor"},{"type":"autostart","name":"console_counters"},{"type":"autostart","name":"components"},{"name":"quick_open"},{"name":"search"},{"name":"color_picker"},{"name":"coverage"},{"name":"source_frame"},{"type":"autostart","name":"services"},{"name":"event_listeners"},{"type":"autostart","name":"sdk"},{"name":"cm_web_modes"},{"name":"formatter"},{"name":"settings"},{"type":"autostart","name":"host"},{"name":"profiler"},{"type":"autostart","name":"extensions"},{"type":"autostart","name":"common"},{"type":"autostart","name":"workspace"},{"name":"object_ui"},{"name":"javascript_metadata"},{"name":"changes"},{"type":"autostart","name":"text_utils"}]};self['Platform']=self['Platform']||{};self['DomExtension']=self['DomExtension']||{};self['TextUtils']=self['TextUtils']||{};self['Common']=self['Common']||{};self['Host']=self['Host']||{};self['UI']=self['UI']||{};self['Protocol']=self['Protocol']||{};self['SDK']=self['SDK']||{};self['Services']=self['Services']||{};self['Workspace']=self['Workspace']||{};self['Bindings']=self['Bindings']||{};self['Components']=self['Components']||{};self['Persistence']=self['Persistence']||{};self['BrowserSDK']=self['BrowserSDK']||{};self['Extensions']=self['Extensions']||{};self['Main']=self['Main']||{};Main.SimpleApp=class{presentUI(document){const rootView=new UI.RootView();UI.inspectorView.show(rootView.element);rootView.attachToDocument(document);rootView.focus();}};Main.SimpleAppProvider=class{createApp(){return new Main.SimpleApp();}};;Main.ExecutionContextSelector=class{constructor(targetManager,context){context.addFlavorChangeListener(SDK.ExecutionContext,this._executionContextChanged,this);context.addFlavorChangeListener(SDK.Target,this._targetChanged,this);targetManager.addModelListener(SDK.RuntimeModel,SDK.RuntimeModel.Events.ExecutionContextCreated,this._onExecutionContextCreated,this);targetManager.addModelListener(SDK.RuntimeModel,SDK.RuntimeModel.Events.ExecutionContextDestroyed,this._onExecutionContextDestroyed,this);targetManager.addModelListener(SDK.RuntimeModel,SDK.RuntimeModel.Events.ExecutionContextOrderChanged,this._onExecutionContextOrderChanged,this);this._targetManager=targetManager;this._context=context;targetManager.observeModels(SDK.RuntimeModel,this);}
  143. modelAdded(runtimeModel){setImmediate(deferred.bind(this));function deferred(){if(!this._context.flavor(SDK.Target)){this._context.setFlavor(SDK.Target,runtimeModel.target());}}}
  144. modelRemoved(runtimeModel){const currentExecutionContext=this._context.flavor(SDK.ExecutionContext);if(currentExecutionContext&&currentExecutionContext.runtimeModel===runtimeModel){this._currentExecutionContextGone();}
  145. const models=this._targetManager.models(SDK.RuntimeModel);if(this._context.flavor(SDK.Target)===runtimeModel.target()&&models.length){this._context.setFlavor(SDK.Target,models[0].target());}}
  146. _executionContextChanged(event){const newContext=(event.data);if(newContext){this._context.setFlavor(SDK.Target,newContext.target());if(!this._ignoreContextChanged){this._lastSelectedContextId=this._contextPersistentId(newContext);}}}
  147. _contextPersistentId(executionContext){return executionContext.isDefault?executionContext.target().name()+':'+executionContext.frameId:'';}
  148. _targetChanged(event){const newTarget=(event.data);const currentContext=this._context.flavor(SDK.ExecutionContext);if(!newTarget||(currentContext&&currentContext.target()===newTarget)){return;}
  149. const runtimeModel=newTarget.model(SDK.RuntimeModel);const executionContexts=runtimeModel?runtimeModel.executionContexts():[];if(!executionContexts.length){return;}
  150. let newContext=null;for(let i=0;i<executionContexts.length&&!newContext;++i){if(this._shouldSwitchToContext(executionContexts[i])){newContext=executionContexts[i];}}
  151. for(let i=0;i<executionContexts.length&&!newContext;++i){if(this._isDefaultContext(executionContexts[i])){newContext=executionContexts[i];}}
  152. this._ignoreContextChanged=true;this._context.setFlavor(SDK.ExecutionContext,newContext||executionContexts[0]);this._ignoreContextChanged=false;}
  153. _shouldSwitchToContext(executionContext){if(this._lastSelectedContextId&&this._lastSelectedContextId===this._contextPersistentId(executionContext)){return true;}
  154. if(!this._lastSelectedContextId&&this._isDefaultContext(executionContext)){return true;}
  155. return false;}
  156. _isDefaultContext(executionContext){if(!executionContext.isDefault||!executionContext.frameId){return false;}
  157. if(executionContext.target().parentTarget()){return false;}
  158. const resourceTreeModel=executionContext.target().model(SDK.ResourceTreeModel);const frame=resourceTreeModel&&resourceTreeModel.frameForId(executionContext.frameId);if(frame&&frame.isTopFrame()){return true;}
  159. return false;}
  160. _onExecutionContextCreated(event){this._switchContextIfNecessary((event.data));}
  161. _onExecutionContextDestroyed(event){const executionContext=(event.data);if(this._context.flavor(SDK.ExecutionContext)===executionContext){this._currentExecutionContextGone();}}
  162. _onExecutionContextOrderChanged(event){const runtimeModel=(event.data);const executionContexts=runtimeModel.executionContexts();for(let i=0;i<executionContexts.length;i++){if(this._switchContextIfNecessary(executionContexts[i])){break;}}}
  163. _switchContextIfNecessary(executionContext){if(!this._context.flavor(SDK.ExecutionContext)||this._shouldSwitchToContext(executionContext)){this._ignoreContextChanged=true;this._context.setFlavor(SDK.ExecutionContext,executionContext);this._ignoreContextChanged=false;return true;}
  164. return false;}
  165. _currentExecutionContextGone(){const runtimeModels=this._targetManager.models(SDK.RuntimeModel);let newContext=null;for(let i=0;i<runtimeModels.length&&!newContext;++i){const executionContexts=runtimeModels[i].executionContexts();for(const executionContext of executionContexts){if(this._isDefaultContext(executionContext)){newContext=executionContext;break;}}}
  166. if(!newContext){for(let i=0;i<runtimeModels.length&&!newContext;++i){const executionContexts=runtimeModels[i].executionContexts();if(executionContexts.length){newContext=executionContexts[0];break;}}}
  167. this._ignoreContextChanged=true;this._context.setFlavor(SDK.ExecutionContext,newContext);this._ignoreContextChanged=false;}};;Main.Main=class{constructor(){Main.Main._instanceForTest=this;runOnWindowLoad(this._loaded.bind(this));}
  168. static time(label){if(Host.isUnderTest()){return;}
  169. console.time(label);}
  170. static timeEnd(label){if(Host.isUnderTest()){return;}
  171. console.timeEnd(label);}
  172. async _loaded(){console.timeStamp('Main._loaded');await Root.Runtime.appStarted();Root.Runtime.setPlatform(Host.platform());Root.Runtime.setL10nCallback(ls);Host.InspectorFrontendHost.getPreferences(this._gotPreferences.bind(this));}
  173. _gotPreferences(prefs){console.timeStamp('Main._gotPreferences');if(Host.isUnderTest(prefs)){self.runtime.useTestBase();}
  174. this._createSettings(prefs);this._createAppUI();}
  175. _createSettings(prefs){this._initializeExperiments();let storagePrefix='';if(Host.isCustomDevtoolsFrontend()){storagePrefix='__custom__';}else if(!Root.Runtime.queryParam('can_dock')&&!!Root.Runtime.queryParam('debugFrontend')&&!Host.isUnderTest()){storagePrefix='__bundled__';}
  176. let localStorage;if(!Host.isUnderTest()&&window.localStorage){localStorage=new Common.SettingsStorage(window.localStorage,undefined,undefined,()=>window.localStorage.clear(),storagePrefix);}else{localStorage=new Common.SettingsStorage({},undefined,undefined,undefined,storagePrefix);}
  177. const globalStorage=new Common.SettingsStorage(prefs,Host.InspectorFrontendHost.setPreference,Host.InspectorFrontendHost.removePreference,Host.InspectorFrontendHost.clearPreferences,storagePrefix);Common.settings=new Common.Settings(globalStorage,localStorage);if(!Host.isUnderTest()){new Common.VersionController().updateVersion();}}
  178. _initializeExperiments(){Root.Runtime.experiments.register('applyCustomStylesheet','Allow custom UI themes');Root.Runtime.experiments.register('captureNodeCreationStacks','Capture node creation stacks');Root.Runtime.experiments.register('sourcesPrettyPrint','Automatically pretty print in the Sources Panel');Root.Runtime.experiments.register('backgroundServices','Background web platform feature events',true);Root.Runtime.experiments.register('backgroundServicesNotifications','Background services section for Notifications');Root.Runtime.experiments.register('backgroundServicesPaymentHandler','Background services section for Payment Handler');Root.Runtime.experiments.register('backgroundServicesPushMessaging','Background services section for Push Messaging');Root.Runtime.experiments.register('backgroundServicesPeriodicBackgroundSync','Background services section for Periodic Background Sync');Root.Runtime.experiments.register('blackboxJSFramesOnTimeline','Blackbox JavaScript frames on Timeline',true);Root.Runtime.experiments.register('cssOverview','CSS Overview');Root.Runtime.experiments.register('emptySourceMapAutoStepping','Empty sourcemap auto-stepping');Root.Runtime.experiments.register('handleVisibleSecurityStateChanged','Handle visibleSecurityStateChanged');Root.Runtime.experiments.register('inputEventsOnTimelineOverview','Input events on Timeline overview',true);Root.Runtime.experiments.register('liveHeapProfile','Live heap profile',true);Root.Runtime.experiments.register('mediaInspector','Media Element Inspection');Root.Runtime.experiments.register('nativeHeapProfiler','Native memory sampling heap profiler',true);Root.Runtime.experiments.register('protocolMonitor','Protocol Monitor');Root.Runtime.experiments.register('recordCoverageWithPerformanceTracing','Record coverage while performance tracing');Root.Runtime.experiments.register('samplingHeapProfilerTimeline','Sampling heap profiler timeline',true);Root.Runtime.experiments.register('sourceDiff','Source diff');Root.Runtime.experiments.register('spotlight','Spotlight',true);Root.Runtime.experiments.register('timelineEventInitiators','Timeline: event initiators');Root.Runtime.experiments.register('timelineFlowEvents','Timeline: flow events',true);Root.Runtime.experiments.register('timelineInvalidationTracking','Timeline: invalidation tracking',true);Root.Runtime.experiments.register('timelineShowAllEvents','Timeline: show all events',true);Root.Runtime.experiments.register('timelineV8RuntimeCallStats','Timeline: V8 Runtime Call Stats on Timeline',true);Root.Runtime.experiments.register('timelineWebGL','Timeline: WebGL-based flamechart');Root.Runtime.experiments.cleanUpStaleExperiments();const enabledExperiments=Root.Runtime.queryParam('enabledExperiments');if(enabledExperiments){Root.Runtime.experiments.setServerEnabledExperiments(enabledExperiments.split(';'));}
  179. Root.Runtime.experiments.setDefaultExperiments(['backgroundServices','backgroundServicesNotifications','backgroundServicesPushMessaging','backgroundServicesPaymentHandler',]);if(Host.isUnderTest()&&Root.Runtime.queryParam('test').includes('live-line-level-heap-profile.js')){Root.Runtime.experiments.enableForTest('liveHeapProfile');}}
  180. async _createAppUI(){Main.Main.time('Main._createAppUI');UI.viewManager=new UI.ViewManager();Persistence.isolatedFileSystemManager=new Persistence.IsolatedFileSystemManager();const themeSetting=Common.settings.createSetting('uiTheme','systemPreferred');UI.initializeUIUtils(document,themeSetting);themeSetting.addChangeListener(Components.reload.bind(Components));UI.installComponentRootStyles((document.body));this._addMainEventListeners(document);const canDock=!!Root.Runtime.queryParam('can_dock');UI.zoomManager=new UI.ZoomManager(window,Host.InspectorFrontendHost);UI.inspectorView=UI.InspectorView.instance();UI.ContextMenu.initialize();UI.ContextMenu.installHandler(document);UI.Tooltip.installHandler(document);Components.dockController=new Components.DockController(canDock);SDK.consoleModel=new SDK.ConsoleModel();SDK.multitargetNetworkManager=new SDK.MultitargetNetworkManager();SDK.domDebuggerManager=new SDK.DOMDebuggerManager();SDK.targetManager.addEventListener(SDK.TargetManager.Events.SuspendStateChanged,this._onSuspendStateChanged.bind(this));UI.shortcutsScreen=new UI.ShortcutsScreen();UI.shortcutsScreen.section(Common.UIString('Elements Panel'));UI.shortcutsScreen.section(Common.UIString('Styles Pane'));UI.shortcutsScreen.section(Common.UIString('Debugger'));UI.shortcutsScreen.section(Common.UIString('Console'));Workspace.fileManager=new Workspace.FileManager();Workspace.workspace=new Workspace.Workspace();Bindings.networkProjectManager=new Bindings.NetworkProjectManager();Bindings.resourceMapping=new Bindings.ResourceMapping(SDK.targetManager,Workspace.workspace);new Bindings.PresentationConsoleMessageManager();Bindings.cssWorkspaceBinding=new Bindings.CSSWorkspaceBinding(SDK.targetManager,Workspace.workspace);Bindings.debuggerWorkspaceBinding=new Bindings.DebuggerWorkspaceBinding(SDK.targetManager,Workspace.workspace);Bindings.breakpointManager=new Bindings.BreakpointManager(Workspace.workspace,SDK.targetManager,Bindings.debuggerWorkspaceBinding);Extensions.extensionServer=new Extensions.ExtensionServer();new Persistence.FileSystemWorkspaceBinding(Persistence.isolatedFileSystemManager,Workspace.workspace);Persistence.persistence=new Persistence.Persistence(Workspace.workspace,Bindings.breakpointManager);Persistence.networkPersistenceManager=new Persistence.NetworkPersistenceManager(Workspace.workspace);new Main.ExecutionContextSelector(SDK.targetManager,UI.context);Bindings.blackboxManager=new Bindings.BlackboxManager(Bindings.debuggerWorkspaceBinding);new Main.Main.PauseListener();UI.actionRegistry=new UI.ActionRegistry();UI.shortcutRegistry=new UI.ShortcutRegistry(UI.actionRegistry,document);UI.ShortcutsScreen.registerShortcuts();this._registerForwardedShortcuts();this._registerMessageSinkListener();Main.Main.timeEnd('Main._createAppUI');this._showAppUI(await self.runtime.extension(Common.AppProvider).instance());}
  181. _showAppUI(appProvider){Main.Main.time('Main._showAppUI');const app=(appProvider).createApp();Components.dockController.initialize();app.presentUI(document);const toggleSearchNodeAction=UI.actionRegistry.action('elements.toggle-element-search');if(toggleSearchNodeAction){Host.InspectorFrontendHost.events.addEventListener(Host.InspectorFrontendHostAPI.Events.EnterInspectElementMode,toggleSearchNodeAction.execute.bind(toggleSearchNodeAction),this);}
  182. Host.InspectorFrontendHost.events.addEventListener(Host.InspectorFrontendHostAPI.Events.RevealSourceLine,this._revealSourceLine,this);UI.inspectorView.createToolbars();Host.InspectorFrontendHost.loadCompleted();const extensions=self.runtime.extensions(Common.QueryParamHandler);for(const extension of extensions){const value=Root.Runtime.queryParam(extension.descriptor()['name']);if(value!==null){extension.instance().then(handleQueryParam.bind(null,value));}}
  183. function handleQueryParam(value,handler){handler.handleQueryParam(value);}
  184. setTimeout(this._initializeTarget.bind(this),0);Main.Main.timeEnd('Main._showAppUI');}
  185. async _initializeTarget(){Main.Main.time('Main._initializeTarget');const instances=await Promise.all(self.runtime.extensions('early-initialization').map(extension=>extension.instance()));for(const instance of instances){await(instance).run();}
  186. Host.InspectorFrontendHost.readyForTest();setTimeout(this._lateInitialization.bind(this),100);Main.Main.timeEnd('Main._initializeTarget');}
  187. _lateInitialization(){Main.Main.time('Main._lateInitialization');this._registerShortcuts();Extensions.extensionServer.initializeExtensions();const extensions=self.runtime.extensions('late-initialization');const promises=[];for(const extension of extensions){const setting=extension.descriptor()['setting'];if(!setting||Common.settings.moduleSetting(setting).get()){promises.push(extension.instance().then(instance=>((instance)).run()));continue;}
  188. async function changeListener(event){if(!event.data){return;}
  189. Common.settings.moduleSetting(setting).removeChangeListener(changeListener);((await extension.instance())).run();}
  190. Common.settings.moduleSetting(setting).addChangeListener(changeListener);}
  191. this._lateInitDonePromise=Promise.all(promises);Main.Main.timeEnd('Main._lateInitialization');}
  192. lateInitDonePromiseForTest(){return this._lateInitDonePromise;}
  193. _registerForwardedShortcuts(){const forwardedActions=['main.toggle-dock','debugger.toggle-breakpoints-active','debugger.toggle-pause','commandMenu.show','console.show'];const actionKeys=UI.shortcutRegistry.keysForActions(forwardedActions).map(UI.KeyboardShortcut.keyCodeAndModifiersFromKey);Host.InspectorFrontendHost.setWhitelistedShortcuts(JSON.stringify(actionKeys));}
  194. _registerMessageSinkListener(){Common.console.addEventListener(Common.Console.Events.MessageAdded,messageAdded);function messageAdded(event){const message=(event.data);if(message.show){Common.console.show();}}}
  195. _revealSourceLine(event){const url=(event.data['url']);const lineNumber=(event.data['lineNumber']);const columnNumber=(event.data['columnNumber']);const uiSourceCode=Workspace.workspace.uiSourceCodeForURL(url);if(uiSourceCode){Common.Revealer.reveal(uiSourceCode.uiLocation(lineNumber,columnNumber));return;}
  196. function listener(event){const uiSourceCode=(event.data);if(uiSourceCode.url()===url){Common.Revealer.reveal(uiSourceCode.uiLocation(lineNumber,columnNumber));Workspace.workspace.removeEventListener(Workspace.Workspace.Events.UISourceCodeAdded,listener);}}
  197. Workspace.workspace.addEventListener(Workspace.Workspace.Events.UISourceCodeAdded,listener);}
  198. _registerShortcuts(){const shortcut=UI.KeyboardShortcut;const section=UI.shortcutsScreen.section(Common.UIString('All Panels'));let keys=[shortcut.makeDescriptor('[',shortcut.Modifiers.CtrlOrMeta),shortcut.makeDescriptor(']',shortcut.Modifiers.CtrlOrMeta)];section.addRelatedKeys(keys,Common.UIString('Go to the panel to the left/right'));const toggleConsoleLabel=Common.UIString('Show console');section.addKey(shortcut.makeDescriptor(shortcut.Keys.Tilde,shortcut.Modifiers.Ctrl),toggleConsoleLabel);section.addKey(shortcut.makeDescriptor(shortcut.Keys.Esc),Common.UIString('Toggle drawer'));if(Components.dockController.canDock()){section.addKey(shortcut.makeDescriptor('M',shortcut.Modifiers.CtrlOrMeta|shortcut.Modifiers.Shift),Common.UIString('Toggle device mode'));section.addKey(shortcut.makeDescriptor('D',shortcut.Modifiers.CtrlOrMeta|shortcut.Modifiers.Shift),Common.UIString('Toggle dock side'));}
  199. section.addKey(shortcut.makeDescriptor('f',shortcut.Modifiers.CtrlOrMeta),Common.UIString('Search'));const advancedSearchShortcutModifier=Host.isMac()?UI.KeyboardShortcut.Modifiers.Meta|UI.KeyboardShortcut.Modifiers.Alt:UI.KeyboardShortcut.Modifiers.Ctrl|UI.KeyboardShortcut.Modifiers.Shift;const advancedSearchShortcut=shortcut.makeDescriptor('f',advancedSearchShortcutModifier);section.addKey(advancedSearchShortcut,Common.UIString('Search across all sources'));const inspectElementModeShortcuts=UI.shortcutRegistry.shortcutDescriptorsForAction('elements.toggle-element-search');if(inspectElementModeShortcuts.length){section.addKey(inspectElementModeShortcuts[0],Common.UIString('Select node to inspect'));}
  200. const openResourceShortcut=UI.KeyboardShortcut.makeDescriptor('p',UI.KeyboardShortcut.Modifiers.CtrlOrMeta);section.addKey(openResourceShortcut,Common.UIString('Go to source'));if(Host.isMac()){keys=[shortcut.makeDescriptor('g',shortcut.Modifiers.Meta),shortcut.makeDescriptor('g',shortcut.Modifiers.Meta|shortcut.Modifiers.Shift)];section.addRelatedKeys(keys,Common.UIString('Find next/previous'));}}
  201. _postDocumentKeyDown(event){if(!event.handled){UI.shortcutRegistry.handleShortcut(event);}}
  202. _redispatchClipboardEvent(event){const eventCopy=new CustomEvent('clipboard-'+event.type,{bubbles:true});eventCopy['original']=event;const document=event.target&&event.target.ownerDocument;const target=document?document.deepActiveElement():null;if(target){target.dispatchEvent(eventCopy);}
  203. if(eventCopy.handled){event.preventDefault();}}
  204. _contextMenuEventFired(event){if(event.handled||event.target.classList.contains('popup-glasspane')){event.preventDefault();}}
  205. _addMainEventListeners(document){document.addEventListener('keydown',this._postDocumentKeyDown.bind(this),false);document.addEventListener('beforecopy',this._redispatchClipboardEvent.bind(this),true);document.addEventListener('copy',this._redispatchClipboardEvent.bind(this),false);document.addEventListener('cut',this._redispatchClipboardEvent.bind(this),false);document.addEventListener('paste',this._redispatchClipboardEvent.bind(this),false);document.addEventListener('contextmenu',this._contextMenuEventFired.bind(this),true);}
  206. _onSuspendStateChanged(){const suspended=SDK.targetManager.allTargetsSuspended();UI.inspectorView.onSuspendStateChanged(suspended);}};Main.Main.ZoomActionDelegate=class{handleAction(context,actionId){if(Host.InspectorFrontendHost.isHostedMode()){return false;}
  207. switch(actionId){case'main.zoom-in':Host.InspectorFrontendHost.zoomIn();return true;case'main.zoom-out':Host.InspectorFrontendHost.zoomOut();return true;case'main.zoom-reset':Host.InspectorFrontendHost.resetZoom();return true;}
  208. return false;}};Main.Main.SearchActionDelegate=class{handleAction(context,actionId){const searchableView=UI.SearchableView.fromElement(document.deepActiveElement())||UI.inspectorView.currentPanelDeprecated().searchableView();if(!searchableView){return false;}
  209. switch(actionId){case'main.search-in-panel.find':return searchableView.handleFindShortcut();case'main.search-in-panel.cancel':return searchableView.handleCancelSearchShortcut();case'main.search-in-panel.find-next':return searchableView.handleFindNextShortcut();case'main.search-in-panel.find-previous':return searchableView.handleFindPreviousShortcut();}
  210. return false;}};Main.Main.MainMenuItem=class{constructor(){this._item=new UI.ToolbarMenuButton(this._handleContextMenu.bind(this),true);this._item.setTitle(Common.UIString('Customize and control DevTools'));}
  211. item(){return this._item;}
  212. _handleContextMenu(contextMenu){if(Components.dockController.canDock()){const dockItemElement=createElementWithClass('div','flex-centered flex-auto');dockItemElement.tabIndex=-1;const titleElement=dockItemElement.createChild('span','flex-auto');titleElement.textContent=Common.UIString('Dock side');const toggleDockSideShorcuts=UI.shortcutRegistry.shortcutDescriptorsForAction('main.toggle-dock');titleElement.title=Common.UIString('Placement of DevTools relative to the page. (%s to restore last position)',toggleDockSideShorcuts[0].name);dockItemElement.appendChild(titleElement);const dockItemToolbar=new UI.Toolbar('',dockItemElement);if(Host.isMac()&&!UI.themeSupport.hasTheme()){dockItemToolbar.makeBlueOnHover();}
  213. const undock=new UI.ToolbarToggle(Common.UIString('Undock into separate window'),'largeicon-undock');const bottom=new UI.ToolbarToggle(Common.UIString('Dock to bottom'),'largeicon-dock-to-bottom');const right=new UI.ToolbarToggle(Common.UIString('Dock to right'),'largeicon-dock-to-right');const left=new UI.ToolbarToggle(Common.UIString('Dock to left'),'largeicon-dock-to-left');undock.addEventListener(UI.ToolbarButton.Events.MouseDown,event=>event.data.consume());bottom.addEventListener(UI.ToolbarButton.Events.MouseDown,event=>event.data.consume());right.addEventListener(UI.ToolbarButton.Events.MouseDown,event=>event.data.consume());left.addEventListener(UI.ToolbarButton.Events.MouseDown,event=>event.data.consume());undock.addEventListener(UI.ToolbarButton.Events.Click,setDockSide.bind(null,Components.DockController.State.Undocked));bottom.addEventListener(UI.ToolbarButton.Events.Click,setDockSide.bind(null,Components.DockController.State.DockedToBottom));right.addEventListener(UI.ToolbarButton.Events.Click,setDockSide.bind(null,Components.DockController.State.DockedToRight));left.addEventListener(UI.ToolbarButton.Events.Click,setDockSide.bind(null,Components.DockController.State.DockedToLeft));undock.setToggled(Components.dockController.dockSide()===Components.DockController.State.Undocked);bottom.setToggled(Components.dockController.dockSide()===Components.DockController.State.DockedToBottom);right.setToggled(Components.dockController.dockSide()===Components.DockController.State.DockedToRight);left.setToggled(Components.dockController.dockSide()===Components.DockController.State.DockedToLeft);dockItemToolbar.appendToolbarItem(undock);dockItemToolbar.appendToolbarItem(left);dockItemToolbar.appendToolbarItem(bottom);dockItemToolbar.appendToolbarItem(right);dockItemElement.addEventListener('keydown',event=>{let dir=0;if(event.key==='ArrowLeft'){dir=-1;}else if(event.key==='ArrowRight'){dir=1;}else{return;}
  214. const buttons=[undock,left,bottom,right];let index=buttons.findIndex(button=>button.element.hasFocus());index=Number.constrain(index+dir,0,buttons.length-1);buttons[index].element.focus();event.consume(true);});contextMenu.headerSection().appendCustomItem(dockItemElement);}
  215. const button=this._item.element;function setDockSide(side){const hadKeyboardFocus=document.deepActiveElement().hasAttribute('data-keyboard-focus');Components.dockController.once(Components.DockController.Events.AfterDockSideChanged).then(()=>{button.focus();if(hadKeyboardFocus){UI.markAsFocusedByKeyboard(button);}});Components.dockController.setDockSide(side);contextMenu.discard();}
  216. if(Components.dockController.dockSide()===Components.DockController.State.Undocked&&SDK.targetManager.mainTarget()&&SDK.targetManager.mainTarget().type()===SDK.Target.Type.Frame){contextMenu.defaultSection().appendAction('inspector_main.focus-debuggee',Common.UIString('Focus debuggee'));}
  217. contextMenu.defaultSection().appendAction('main.toggle-drawer',UI.inspectorView.drawerVisible()?Common.UIString('Hide console drawer'):Common.UIString('Show console drawer'));contextMenu.appendItemsAtLocation('mainMenu');const moreTools=contextMenu.defaultSection().appendSubMenuItem(Common.UIString('More tools'));const extensions=self.runtime.extensions('view',undefined,true);for(const extension of extensions){const descriptor=extension.descriptor();if(descriptor['persistence']!=='closeable'){continue;}
  218. if(descriptor['location']!=='drawer-view'&&descriptor['location']!=='panel'){continue;}
  219. moreTools.defaultSection().appendItem(extension.title(),UI.viewManager.showView.bind(UI.viewManager,descriptor['id']));}
  220. const helpSubMenu=contextMenu.footerSection().appendSubMenuItem(Common.UIString('Help'));helpSubMenu.appendItemsAtLocation('mainMenuHelp');}};Main.Main.PauseListener=class{constructor(){SDK.targetManager.addModelListener(SDK.DebuggerModel,SDK.DebuggerModel.Events.DebuggerPaused,this._debuggerPaused,this);}
  221. _debuggerPaused(event){SDK.targetManager.removeModelListener(SDK.DebuggerModel,SDK.DebuggerModel.Events.DebuggerPaused,this._debuggerPaused,this);const debuggerModel=(event.data);const debuggerPausedDetails=debuggerModel.debuggerPausedDetails();UI.context.setFlavor(SDK.Target,debuggerModel.target());Common.Revealer.reveal(debuggerPausedDetails);}};Main.sendOverProtocol=function(method,params){return new Promise((resolve,reject)=>{Protocol.test.sendRawMessage(method,params,(err,...results)=>{if(err){return reject(err);}
  222. return resolve(results);});});};Main.ReloadActionDelegate=class{handleAction(context,actionId){switch(actionId){case'main.debug-reload':Components.reload();return true;}
  223. return false;}};new Main.Main();;self['ConsoleCounters']=self['ConsoleCounters']||{};;Root.Runtime.cachedResources["ui/checkboxTextLabel.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n padding: 0;\n margin: 0;\n display: inline-flex;\n flex-shrink: 0;\n align-items: center !important;\n}\n\ninput {\n height: 12px;\n width: 12px;\n flex-shrink: 0;\n}\n\ninput:focus {\n outline: auto 5px -webkit-focus-ring-color;\n}\n\ninput.dt-checkbox-themed {\n -webkit-appearance: none;\n margin: auto 5px auto 2px;\n border: 1px solid rgb(45, 45, 45);\n border-radius: 3px;\n background-color: rgb(102, 102, 102);\n}\n\ninput.dt-checkbox-themed:after {\n content: '';\n line-height: 10px;\n position: absolute;\n cursor: pointer;\n width: 12px;\n height: 12px;\n background: none;\n}\n\ninput.dt-checkbox-themed:checked:after {\n background-color: #333;\n}\n\ninput.dt-checkbox-themed:after {\n -webkit-mask-image: url(Images/checkboxCheckmark.svg);\n -webkit-mask-size: 11px 11px;\n -webkit-mask-position: 0 0;\n}\n\n:host-context(.-theme-with-dark-background) input:not(.dt-checkbox-themed) {\n filter: invert(80%);\n}\n\n.dt-checkbox-text {\n margin-left: 3px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dt-checkbox-subtitle {\n color: gray;\n}\n\n/*# sourceURL=ui/checkboxTextLabel.css */";Root.Runtime.cachedResources["ui/closeButton.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.close-button {\n width: 14px;\n height: 14px;\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.hover-icon, .active-icon {\n display: none;\n}\n\n.close-button:hover .default-icon, .close-button:active .default-icon {\n display: none;\n}\n\n.close-button:hover .hover-icon {\n display: block;\n}\n\n.close-button[data-keyboard-focus=\"true\"]:focus .default-icon, .close-button:active .default-icon {\n display: none;\n}\n\n.close-button[data-keyboard-focus=\"true\"]:focus .hover-icon {\n display: block;\n}\n\n.close-button:active .hover-icon {\n display: none !important;\n}\n\n.close-button:active .active-icon {\n display: block;\n}\n\n/*# sourceURL=ui/closeButton.css */";Root.Runtime.cachedResources["ui/confirmDialog.css"]="/*\n * Copyright (c) 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.widget {\n padding: 20px;\n}\n\n.message, .button {\n font-size: larger;\n white-space: pre;\n margin: 5px;\n}\n\n.button {\n text-align: center;\n margin-top: 10px;\n}\n\n.button button {\n min-width: 80px;\n}\n\n.reason {\n color: #8b0000;\n}\n\n/*# sourceURL=ui/confirmDialog.css */";Root.Runtime.cachedResources["ui/dialog.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.widget {\n box-shadow: var(--drop-shadow);\n background: white;\n justify-content: flex-start;\n align-items: stretch;\n display: flex;\n}\n\n.dialog-close-button {\n position: absolute;\n right: 9px;\n top: 9px;\n z-index: 1;\n}\n/*# sourceURL=ui/dialog.css */";Root.Runtime.cachedResources["ui/dropTarget.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n background-color: rgba(255,255,255,0.8);\n z-index: 1000;\n}\n\n.drop-target-message {\n flex: auto;\n font-size: 30px;\n color: #999;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 20px;\n border: 4px dashed #ddd;\n pointer-events: none;\n}\n\n/*# sourceURL=ui/dropTarget.css */";Root.Runtime.cachedResources["ui/emptyWidget.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n .empty-bold-text {\n display: block;\n font-size: 1.5em;\n margin: .83em 0 .83em;\n font-weight: bold;\n }\n\n.empty-view {\n color: hsla(0, 0%, 43%, 1);\n padding: 30px;\n display: flex;\n align-items: center;\n flex-direction: column;\n min-width: 70px;\n}\n\n.empty-view-scroller {\n justify-content: center;\n overflow: auto;\n}\n\n.empty-view p {\n white-space: initial;\n line-height: 18px;\n max-width: 300px;\n flex-shrink: 0;\n}\n\n/*# sourceURL=ui/emptyWidget.css */";Root.Runtime.cachedResources["ui/filter.css"]="/*\n * Copyright (C) 2013 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n.filter-bar {\n background-color: var(--toolbar-bg-color);\n flex: none;\n flex-wrap: wrap;\n align-items: center;\n border-bottom: var(--divider-border);\n}\n\n.filter-text-filter {\n display: inline-flex;\n margin-left: 1px;\n margin-right: 2px;\n min-width: 40px;\n max-width: 200px;\n height: 24px;\n align-items: center;\n}\n\n.filter-bitset-filter {\n padding: 2px;\n display: inline-flex;\n overflow: hidden;\n height: 24px;\n position: relative;\n margin: 0;\n}\n\n.filter-bitset-filter span {\n display: inline-block;\n flex: none;\n margin: auto 2px;\n padding: 3px;\n background: transparent;\n text-shadow: rgba(255, 255, 255, 0.5) 0 1px 0;\n border-radius: 6px;\n overflow: hidden;\n}\n\n.filter-bitset-filter span[data-keyboard-focus=\"true\"] {\n outline: -webkit-focus-ring-color auto 5px;\n}\n\n.filter-bitset-filter-divider {\n background-color: #ccc;\n height: 16px;\n width: 1px;\n margin: auto 2px;\n display: inline-block;\n}\n\n.filter-bitset-filter span.selected,\n.filter-bitset-filter span:hover,\n.filter-bitset-filter span:active {\n color: white;\n text-shadow: rgba(0, 0, 0, 0.4) 0 1px 0;\n}\n\n.filter-bitset-filter span:hover {\n background: rgba(0, 0, 0, 0.2);\n}\n\n.filter-bitset-filter span.selected {\n background: rgba(0, 0, 0, 0.3);\n}\n\n.filter-bitset-filter span:active {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.filter-checkbox-filter {\n padding-left: 4px;\n padding-right: 2px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n display: inline-flex;\n vertical-align: middle;\n height: 24px;\n position: relative;\n}\n\n.filter-checkbox-filter > [is=dt-checkbox] {\n display: flex;\n margin: auto 0;\n}\n\n.filter-input-field {\n margin: 0 3px;\n padding-left: 3px;\n width: 163px;\n height: 18px;\n line-height: 20px;\n display: inline-block;\n background: #FFF;\n overflow: hidden;\n white-space: nowrap;\n cursor: auto;\n}\n\n.filter-input-field:hover {\n box-shadow: var(--focus-ring-inactive-shadow);\n}\n\n.filter-input-field:focus,\n.filter-input-field:not(:empty) {\n box-shadow: var(--focus-ring-active-shadow);\n}\n\n/*# sourceURL=ui/filter.css */";Root.Runtime.cachedResources["ui/glassPane.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n position: absolute !important;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n contain: strict;\n background-color: transparent;\n}\n\n:host-context(.dimmed-pane) {\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n:host-context(.no-pointer-events) {\n pointer-events: none;\n}\n\n.widget {\n display: flex;\n background-color: transparent;\n pointer-events: auto;\n flex: none;\n}\n\n.no-pointer-events {\n pointer-events: none;\n}\n\n.arrow-top {\n margin-top: -19px;\n margin-left: -9px;\n}\n\n.arrow-bottom {\n margin-left: -9px;\n}\n\n.arrow-left {\n margin-left: -19px;\n margin-top: -9px;\n}\n\n.arrow-right {\n margin-top: -9px;\n}\n\n.arrow-none {\n display: none;\n}\n\n:host-context(.-theme-with-dark-background) .arrow {\n -webkit-filter: invert(80%);\n}\n\n/*# sourceURL=ui/glassPane.css */";Root.Runtime.cachedResources["ui/infobar.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.infobar {\n color: rgb(34, 34, 34);\n display: flex;\n flex: auto;\n border-bottom: 1px solid rgb(171, 171, 171);\n flex-direction: column;\n align-items: stretch;\n position: relative;\n}\n\n.infobar-warning {\n background-color: rgb(253, 242, 192);\n}\n\n.infobar-info {\n background-color: rgb(255, 255, 255);\n}\n\n.infobar-main-row {\n display: flex;\n flex-direction: row;\n flex: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n justify-content: space-between;\n margin-right: 20px;\n min-height: 25px;\n align-items: center;\n padding-left: 4px;\n}\n\n.infobar-main-row > * {\n flex: none;\n padding: 0 3px;\n}\n\n.infobar-main-title {\n flex: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.infobar-details-rows {\n padding: 5px 5px 0 5px;\n}\n\n.infobar-details-row {\n display: flex;\n flex-direction: column;\n line-height: 18px;\n padding-bottom: 6px;\n}\n\n.close-button {\n position: absolute;\n top: 5px;\n right: 6px;\n}\n\n.infobar-toggle {\n color: hsl(214, 92%, 50%);\n cursor: pointer;\n margin-top: 5px;\n margin-bottom: 5px;\n}\n\n.infobar-toggle:hover {\n color: hsl(214, 92%, 30%);\n}\n\n.info-icon {\n -webkit-mask-image: url(Images/ic_info_black_18dp.svg);\n background-color: hsl(214, 92%, 50%);\n}\n\n.warning-icon {\n -webkit-mask-image: url(Images/ic_warning_black_18dp.svg);\n background-color: hsl(44, 92%, 50%);\n}\n\n.icon {\n -webkit-mask-size: 18px 18px;\n width: 18px;\n height: 19px;\n}\n\n/*# sourceURL=ui/infobar.css */";Root.Runtime.cachedResources["ui/inlineButton.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n display: inline-block;\n border: 1px solid #ddd;\n position: relative;\n top: 7px;\n margin: 2px;\n background-color: var(--toolbar-bg-color);\n}\n\n:host > * {\n position: relative;\n left: -2px;\n width: 28px;\n height: 26px;\n}\n/*# sourceURL=ui/inlineButton.css */";Root.Runtime.cachedResources["ui/inspectorCommon.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n* {\n /* This is required for correct sizing of flex items because we rely\n * on an old version of the flexbox spec.\n * Longer-term we should remove this, see crbug.com/473625 */\n min-width: 0;\n min-height: 0;\n}\n\n:host-context(.platform-mac) .monospace,\n:host-context(.platform-mac) .source-code,\n.platform-mac .monospace,\n.platform-mac .source-code {\n font-size: 11px !important;\n font-family: Menlo, monospace;\n}\n\n:host-context(.platform-windows) .monospace,\n:host-context(.platform-windows) .source-code,\n.platform-windows .monospace,\n.platform-windows .source-code {\n font-size: 12px !important;\n font-family: Consolas, Lucida Console, Courier New, monospace;\n}\n\n:host-context(.platform-linux) .monospace,\n:host-context(.platform-linux) .source-code,\n.platform-linux .monospace,\n.platform-linux .source-code {\n font-size: 11px !important;\n font-family: dejavu sans mono, monospace;\n}\n\n.source-code {\n font-family: monospace;\n font-size: 11px !important;\n white-space: pre-wrap;\n}\n\n* {\n box-sizing: border-box;\n}\n\n:focus {\n outline-width: 0;\n}\n\ninput[type=radio]:focus {\n outline: auto 5px -webkit-focus-ring-color;\n}\n\nimg {\n -webkit-user-drag: none;\n}\n\niframe,\na img {\n border: none;\n}\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\niframe.fill {\n width: 100%;\n height: 100%;\n}\n\n.widget {\n position: relative;\n flex: auto;\n contain: style;\n}\n\n.hbox {\n display: flex;\n flex-direction: row !important;\n position: relative;\n}\n\n.vbox {\n display: flex;\n flex-direction: column !important;\n position: relative;\n}\n\n.view-container > .toolbar {\n border-bottom: 1px solid #eee;\n}\n\n.flex-auto {\n flex: auto;\n}\n\n.flex-none {\n flex: none;\n}\n\n.flex-centered {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\niframe.widget {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n}\n\n.hidden {\n display: none !important;\n}\n\n.monospace {\n font-size: 10px !important;\n font-family: monospace;\n}\n\n.highlighted-search-result {\n border-radius: 1px;\n background-color: rgba(255, 255, 0, 0.8);\n outline: 1px solid rgba(255, 255, 0, 0.8);\n}\n\n.-theme-with-dark-background .highlighted-search-result,\n:host-context(.-theme-with-dark-background) .highlighted-search-result {\n background-color: hsl(133, 100%, 30%);\n color: #333;\n}\n\n.link {\n cursor: pointer;\n text-decoration: underline;\n color: rgb(17, 85, 204);\n}\n\nbutton,\ninput,\nselect {\n /* Form elements do not automatically inherit font style from ancestors. */\n font-family: inherit;\n font-size: inherit;\n}\n\ninput {\n background-color: white;\n color: inherit;\n}\n\ninput::placeholder {\n color: rgba(0, 0, 0, 0.54);\n}\n\n:host-context(.-theme-with-dark-background) input[type=\"checkbox\"]:not(.-theme-preserve) {\n -webkit-filter: invert(80%);\n}\n\n.harmony-input:not([type]),\n.harmony-input[type=number],\n.harmony-input[type=text] {\n padding: 3px 6px;\n height: 24px;\n border: none;\n}\n\n.harmony-input:not([type]):not(.error-input):not(:invalid):hover,\n.harmony-input[type=number]:not(.error-input):not(:invalid):hover,\n.harmony-input[type=text]:not(.error-input):not(:invalid):hover {\n box-shadow: var(--focus-ring-inactive-shadow);\n}\n\n.harmony-input:not([type]):not(.error-input):not(:invalid):focus,\n.harmony-input[type=number]:not(.error-input):not(:invalid):focus,\n.harmony-input[type=text]:not(.error-input):not(:invalid):focus {\n box-shadow: var(--focus-ring-active-shadow);\n}\n\n.highlighted-search-result.current-search-result {\n border-radius: 1px;\n padding: 1px;\n margin: -1px;\n background-color: rgba(255, 127, 0, 0.8);\n}\n\n.dimmed {\n opacity: 0.6;\n}\n\n.editing {\n box-shadow: var(--drop-shadow);\n background-color: white;\n text-overflow: clip !important;\n padding-left: 2px;\n margin-left: -2px;\n padding-right: 2px;\n margin-right: -2px;\n margin-bottom: -1px;\n padding-bottom: 1px;\n opacity: 1.0 !important;\n}\n\n.editing,\n.editing * {\n color: #222 !important;\n text-decoration: none !important;\n}\n\n.harmony-input:not([type]).error-input,\n.harmony-input[type=number].error-input,\n.harmony-input[type=text].error-input,\n.harmony-input:not([type]):invalid,\n.harmony-input[type=number]:invalid,\n.harmony-input[type=text]:invalid {\n box-shadow: 0 0 0 1px #ff1a00;\n}\n\n.chrome-select {\n -webkit-appearance: none;\n -webkit-user-select: none;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 2px;\n color: #333;\n font: inherit;\n margin: 0;\n outline: none;\n padding-right: 20px;\n padding-left: 6px;\n background-image: -webkit-image-set(url(Images/chromeSelect.png) 1x, url(Images/chromeSelect_2x.png) 2x);\n background-color: hsl(0, 0%, 98%);\n background-position: right center;\n background-repeat: no-repeat;\n min-height: 24px;\n min-width: 80px;\n background-size: 15px;\n}\n\n.chrome-select:enabled:active,\n.chrome-select:enabled:focus,\n.chrome-select:enabled:hover {\n background-color: hsl(0, 0%, 96%);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.chrome-select:enabled:active {\n background-color: #f2f2f2;\n}\n\n.chrome-select:enabled:focus {\n border-color: transparent;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 0 2px rgba(66, 133, 244, 0.4);\n}\n\n.chrome-select:disabled {\n opacity: 0.38;\n}\n\n.chrome-select-label {\n margin: 0px 22px;\n flex: none;\n}\n\n.chrome-select-label p {\n margin-top: 0;\n color: gray;\n}\n\n.chrome-select optgroup,\n.chrome-select option {\n background-color: #EEEEEE;\n color: #222;\n}\n\n:not(.platform-mac).-theme-with-dark-background ::-webkit-scrollbar,\n:host-context(:not(.platform-mac).-theme-with-dark-background) ::-webkit-scrollbar {\n width: 14px;\n height: 14px;\n}\n\n:not(.platform-mac).-theme-with-dark-background ::-webkit-scrollbar-track,\n:host-context(:not(.platform-mac).-theme-with-dark-background) ::-webkit-scrollbar-track {\n -webkit-box-shadow: inset 0 0 1px rgba(255,255,255,0.3);\n}\n\n:not(.platform-mac).-theme-with-dark-background ::-webkit-scrollbar-thumb,\n:host-context(:not(.platform-mac).-theme-with-dark-background) ::-webkit-scrollbar-thumb {\n border-radius: 2px;\n background-color: #333;\n -webkit-box-shadow: inset 0 0 1px rgba(255,255,255,0.5);\n}\n\n:not(.platform-mac).-theme-with-dark-background ::-webkit-scrollbar-corner,\n:host-context(:not(.platform-mac).-theme-with-dark-background) ::-webkit-scrollbar-corner {\n background-color: #242424;\n}\n\n.gray-info-message {\n text-align: center;\n font-style: italic;\n padding: 6px;\n color: #888;\n white-space: nowrap;\n}\n\nspan[is=dt-icon-label] {\n flex: none;\n}\n\n.full-widget-dimmed-banner a {\n color: inherit;\n}\n\n.full-widget-dimmed-banner {\n color: #777;\n background-color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n padding: 20px;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n font-size: 13px;\n overflow: auto;\n z-index: 500;\n}\n\n[is=ui-icon] {\n display: inline-block;\n flex-shrink: 0;\n}\n\n.-theme-with-dark-background [is=ui-icon].icon-invert,\n:host-context(.-theme-with-dark-background) [is=ui-icon].icon-invert {\n filter: invert(80%) hue-rotate(180deg);\n}\n\n[is=ui-icon].icon-mask {\n background-color: rgb(110, 110, 110);\n -webkit-mask-position: var(--spritesheet-position);\n}\n\n[is=ui-icon]:not(.icon-mask) {\n background-position: var(--spritesheet-position);\n}\n\n.spritesheet-smallicons:not(.icon-mask) {\n background-image: url(Images/smallIcons.svg);\n}\n\n.spritesheet-smallicons.icon-mask {\n -webkit-mask-image: url(Images/smallIcons.svg);\n}\n\n.spritesheet-largeicons:not(.icon-mask) {\n background-image: url(Images/largeIcons.svg);\n}\n\n.spritesheet-largeicons.icon-mask {\n -webkit-mask-image: url(Images/largeIcons.svg);\n}\n\n.spritesheet-mediumicons:not(.icon-mask) {\n background-image: url(Images/mediumIcons.svg);\n}\n\n.spritesheet-mediumicons.icon-mask {\n -webkit-mask-image: url(Images/mediumIcons.svg);\n}\n\n.spritesheet-arrowicons {\n background-image: url(Images/popoverArrows.png);\n}\n\n:host-context(.force-white-icons) [is=ui-icon].spritesheet-smallicons, .force-white-icons [is=ui-icon].spritesheet-smallicons, [is=ui-icon].force-white-icons.spritesheet-smallicons, -theme-preserve {\n -webkit-mask-image: url(Images/smallIcons.svg);\n -webkit-mask-position: var(--spritesheet-position);\n background: #fafafa !important;\n}\n\n:host-context(.force-white-icons) [is=ui-icon].spritesheet-largeicons, .force-white-icons [is=ui-icon].spritesheet-largeicons, [is=ui-icon].force-white-icons.spritesheet-largeicons, -theme-preserve {\n -webkit-mask-image: url(Images/largeIcons.svg);\n -webkit-mask-position: var(--spritesheet-position);\n background: #fafafa !important;\n}\n\n:host-context(.force-white-icons) [is=ui-icon].spritesheet-mediumicon, .force-white-icons [is=ui-icon].spritesheet-mediumicons, [is=ui-icon].force-white-icons.spritesheet-mediumicons, -theme-preserve {\n -webkit-mask-image: url(Images/mediumIcons.svg);\n -webkit-mask-position: var(--spritesheet-position);\n background: #fafafa !important;\n}\n\n.expandable-inline-button {\n background-color: #dedede;\n color: #333;\n cursor: pointer;\n border-radius: 3px;\n}\n\n.undisplayable-text,\n.expandable-inline-button {\n padding: 2px 4px;\n margin: 0 2px;\n font-size: 12px;\n font-family: sans-serif;\n white-space: nowrap;\n display: inline-block;\n}\n\n.undisplayable-text::after,\n.expandable-inline-button::after {\n content: attr(data-text);\n}\n\n.undisplayable-text {\n color: rgb(128, 128, 128);\n font-style: italic;\n}\n\n.expandable-inline-button:hover {\n background-color: #d5d5d5;\n}\n\n.expandable-inline-button[data-keyboard-focus=\"true\"] {\n background-color: #bbbbbb;\n}\n\n::selection {\n background-color: #bbdefb;\n}\n\n.-theme-with-dark-background *::selection,\n:host-context(.-theme-with-dark-background) *::selection {\n background-color: #9e9e9e;\n}\n\nbutton.link {\n border: none;\n background: none;\n padding: 3px;\n}\n\nbutton.link[data-keyboard-focus=\"true\"]:focus {\n background-color: rgba(0, 0, 0, 0.08);\n border-radius: 2px;\n}\n\n/* See ARIAUtils.js */\n[data-aria-utils-animation-hack] {\n animation: ANIMATION-HACK 0s;\n}\n@keyframes ANIMATION-HACK {\n}\n\n/*# sourceURL=ui/inspectorCommon.css */";Root.Runtime.cachedResources["ui/inspectorStyle.css"]="/*\n * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.\n * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of\n * its contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n:root {\n height: 100%;\n overflow: hidden;\n}\n\n:root {\n --accent-color: #1a73e8;\n --accent-fg-color: #1a73e8;\n --accent-color-hover: #3b86e8;\n --active-control-bg-color: #5a5a5a;\n --focus-bg-color: hsl(214, 40%, 92%);\n --input-validation-error: #db1600;\n --toolbar-bg-color: #f3f3f3;\n --toolbar-hover-bg-color: #eaeaea;\n --selection-fg-color: white;\n --selection-inactive-fg-color: #5a5a5a;\n --selection-inactive-bg-color: #dadada;\n --tab-selected-fg-color: #333;\n --tab-selected-bg-color: var(--toolbar-bg-color);\n --drop-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05),\n 0 2px 4px rgba(0, 0, 0, 0.2),\n 0 2px 6px rgba(0, 0, 0, 0.1);\n --divider-color: #d0d0d0;\n --focus-ring-inactive-shadow: 0 0 0 1px #e0e0e0;\n --item-selection-bg-color: #cfe8fc;\n --item-selection-inactive-bg-color: #e0e0e0;\n}\n\n.-theme-with-dark-background {\n --accent-color: #0e639c;\n --accent-fg-color: #cccccc;\n --accent-color-hover: rgb(17, 119, 187);\n --active-control-bg-color: #cdcdcd;\n --focus-bg-color: hsl(214, 19%, 27%);\n --toolbar-bg-color: #333333;\n --toolbar-hover-bg-color: #202020;\n --selection-fg-color: #cdcdcd;\n --selection-inactive-fg-color: #cdcdcd;\n --selection-inactive-bg-color: hsl(0, 0%, 28%);\n --tab-selected-fg-color: #eaeaea;\n --tab-selected-bg-color: black;\n --drop-shadow: 0 0 0 1px rgba(255, 255, 255, 0.2),\n 0 2px 4px 2px rgba(0, 0, 0, 0.2),\n 0 2px 6px 2px rgba(0, 0, 0, 0.1);\n --divider-color: #525252;\n --focus-ring-inactive-shadow: 0 0 0 1px #5a5a5a;\n --item-selection-bg-color: hsl(207, 88%, 22%);\n --item-selection-inactive-bg-color: #454545;\n}\n\n:root {\n --focus-ring-active-shadow: 0 0 0 1px var(--accent-color);\n --selection-bg-color: var(--accent-color);\n --divider-border: 1px solid var(--divider-color);\n --item-hover-color: rgba(56, 121, 217, 0.1);\n}\n\nbody {\n height: 100%;\n width: 100%;\n position: relative;\n overflow: hidden;\n margin: 0;\n cursor: default;\n font-family: '.SFNSDisplay-Regular', 'Helvetica Neue', 'Lucida Grande', sans-serif;\n font-size: 12px;\n tab-size: 4;\n -webkit-user-select: none;\n color: #222;\n background: white;\n}\n\n.platform-linux {\n color: rgb(48, 57, 66);\n font-family: Roboto, Ubuntu, Arial, sans-serif;\n}\n\n.platform-mac {\n color: rgb(48, 57, 66);\n font-family: '.SFNSDisplay-Regular', 'Helvetica Neue', 'Lucida Grande', sans-serif;\n}\n\n.platform-windows {\n font-family: 'Segoe UI', Tahoma, sans-serif;\n}\n\n.panel {\n display: flex;\n overflow: hidden;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 0;\n background-color: white;\n}\n\n.panel-sidebar {\n overflow-x: hidden;\n background-color: var(--toolbar-bg-color);\n}\n\niframe.extension {\n flex: auto;\n width: 100%;\n height: 100%;\n}\n\niframe.panel.extension {\n display: block;\n height: 100%;\n}\n\n/*# sourceURL=ui/inspectorStyle.css */";Root.Runtime.cachedResources["ui/inspectorSyntaxHighlight.css"]="/*\n * Copyright (C) 2009 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of\n * its contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n.cm-js-keyword {color: hsl(310, 86%, 36%);}\n.cm-js-number {color: hsl(248, 100%, 41%);}\n.cm-js-comment {color: hsl(120, 100%, 23%); font-style: italic;}\n.cm-js-string {color: hsl(1, 80%, 43%);}\n.cm-js-string-2 {color: hsl(1, 99%, 39%);}\n.cm-js-atom {color: hsl(310, 86%, 36%);}\n.cm-js-def {color: hsl(240, 73%, 38%);}\n.cm-js-operator {color: hsl(27, 100%, 30%);}\n.cm-js-meta {color: hsl(27, 100%, 30%);}\n.cm-js-variable-2 {color: hsl(240, 73%, 38%);}\n\n.cm-css-keyword { color: rgb(7, 144, 154);}\n.cm-css-number {color: rgb(50, 0, 255);}\n.cm-css-comment {color: rgb(0, 116, 0);}\n.cm-css-def {color: rgb(200, 0, 0);}\n.cm-css-meta {color: rgb(200, 0, 0);}\n.cm-css-atom {color: rgb(7, 144, 154);}\n.cm-css-string {color: rgb(7, 144, 154);}\n.cm-css-string-2 {color: rgb(7, 144, 154);}\n.cm-css-link {color: rgb(7, 144, 154);}\n.cm-css-variable {color: rgb(200, 0, 0);}\n.cm-css-variable-2 {color: rgb(0, 0, 128);}\n.cm-css-property, .webkit-css-property {color: rgb(200, 0, 0);}\n\n.cm-xml-meta {color: rgb(192, 192, 192);}\n.cm-xml-comment {color: rgb(35, 110, 37);}\n.cm-xml-string {color: rgb(26, 26, 166);}\n.cm-xml-tag {color: var(--dom-tag-name-color);}\n.cm-xml-attribute {color: rgb(153, 69, 0);}\n.cm-xml-link {color: #00e;}\n\n:root {\n --dom-tag-name-color: rgb(136, 18, 128);\n --dom-attribute-name-color: rgb(153, 69, 0);\n}\n\n.webkit-html-comment {\n /* Keep this in sync with view-source.css (.webkit-html-comment) */\n color: rgb(35, 110, 37);\n}\n\n.webkit-html-tag {\n color: rgb(168, 148, 166);\n}\n\n.webkit-html-tag-name, .webkit-html-close-tag-name {\n /* Keep this in sync with view-source.css (.webkit-html-tag) */\n color: var(--dom-tag-name-color);\n}\n\n.webkit-html-pseudo-element {\n /* This one is non-standard. */\n color: brown;\n}\n\n.webkit-html-js-node,\n.webkit-html-css-node {\n white-space: pre-wrap;\n}\n\n.webkit-html-text-node {\n unicode-bidi: -webkit-isolate;\n}\n\n.webkit-html-entity-value {\n /* This one is non-standard. */\n background-color: rgba(0, 0, 0, 0.15);\n unicode-bidi: -webkit-isolate;\n}\n\n.webkit-html-doctype {\n /* Keep this in sync with view-source.css (.webkit-html-doctype) */\n color: rgb(192, 192, 192);\n}\n\n.webkit-html-attribute-name {\n /* Keep this in sync with view-source.css (.webkit-html-attribute-name) */\n color: var(--dom-attribute-name-color);\n unicode-bidi: -webkit-isolate;\n}\n\n.webkit-html-attribute-value {\n /* Keep this in sync with view-source.css (.webkit-html-attribute-value) */\n color: rgb(26, 26, 166);\n unicode-bidi: -webkit-isolate;\n}\n\n.devtools-link {\n color: rgb(17, 85, 204);\n text-decoration: underline;\n}\n\n.devtools-link [is=ui-icon] {\n vertical-align: middle;\n}\n\n.devtools-link[data-keyboard-focus=\"true\"]:focus {\n outline-width: unset;\n}\n\n.devtools-link:not(.devtools-link-prevent-click) {\n cursor: pointer;\n}\n\n.-theme-with-dark-background .devtools-link,\n:host-context(.-theme-with-dark-background) .devtools-link {\n color: hsl(0, 0%, 67%);\n}\n\n/* Default CodeMirror Theme */\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-invalidchar {color: #f00;}\n\n.cm-header {color: blue;}\n.cm-quote {color: #090;}\n\n.cm-keyword {color: #708;}\n.cm-atom {color: #219;}\n.cm-number {color: #164;}\n.cm-def {color: #00f;}\n.cm-variable-2 {color: #05a;}\n.cm-variable-3, .cm-type {color: #085;}\n.cm-comment {color: #a50;}\n.cm-string {color: #a11;}\n.cm-string-2 {color: #f50;}\n.cm-meta {color: #555;}\n.cm-qualifier {color: #555;}\n.cm-builtin {color: #30a;}\n.cm-bracket {color: #997;}\n.cm-tag {color: #170;}\n.cm-attribute {color: #00c;}\n.cm-hr {color: #999;}\n.cm-link {color: #00c;}\n\n.cm-error {color: #f00;}\n\n/*# sourceURL=ui/inspectorSyntaxHighlight.css */";Root.Runtime.cachedResources["ui/inspectorSyntaxHighlightDark.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.cm-js-atom{color:rgb(161, 247, 181);}\n.cm-js-attribute{color:rgb(97, 148, 198);}\n.cm-js-builtin{color:rgb(159, 180, 214);}\n.cm-js-comment{color:rgb(116, 116, 116);}\n.cm-js-def{color:var(--dom-tag-name-color);}\n.cm-js-keyword{color:rgb(154, 127, 213);}\n.cm-js-link{color:rgb(159, 180, 214);}\n.cm-js-meta{color:rgb(221, 251, 85);}\n.cm-js-number{color:rgb(161, 247, 181);}\n.cm-js-operator{color:rgb(210, 192, 87);}\n.cm-js-property{color:rgb(210, 192, 87);}\n.cm-js-string{color:rgb(242, 139, 84);}\n.cm-js-string-2{color:rgb(242, 139, 84);}\n.cm-js-tag{color:var(--dom-tag-name-color);}\n.cm-js-variable{color:rgb(217, 217, 217);}\n.cm-js-variable-2{color:rgb(217, 217, 217);}\n.cm-atom{color:rgb(161, 247, 181);}\n.cm-comment{color:rgb(116, 116, 116);}\n.cm-variable{color:rgb(217, 217, 217);}\n.cm-string{color:rgb(242, 139, 84);}\n.cm-keyword{color:rgb(154, 127, 213);}\n.cm-number{color:rgb(161, 247, 181);}\n.cm-operator{color:rgb(210, 192, 87);}\n.cm-css-atom{color:rgb(217, 217, 217);}\n.cm-css-builtin{color:rgb(255, 163, 79);}\n.cm-css-def{color:rgb(255, 163, 79);}\n.cm-css-comment{color:rgb(116, 116, 116);}\n.cm-css-meta{color:rgb(132, 240, 255);}\n.cm-css-number{color:rgb(217, 217, 217);}\n.cm-css-operator{color:rgb(217, 217, 217);}\n.cm-css-property{color:rgb(132, 240, 255);}\n.cm-css-qualifier{color:rgb(255, 163, 79);}\n.cm-css-string{color:rgb(231, 194, 111);}\n.cm-css-string-2{color:rgb(217, 217, 217);}\n.cm-css-tag{color:rgb(255, 163, 79);}\n.cm-css-variable{color:rgb(255, 163, 79);}\n.cm-css-variable-2{color:rgb(255, 163, 79);}\n.cm-xml-comment{color:rgb(137, 137, 137);}\n.cm-xml-error{color:rgb(198, 95, 95);}\n.cm-xml-string{color:rgb(242, 151, 102);}\n.cm-xml-tag{color:var(--dom-tag-name-color);}\n.cm-xml-attribute{color:var(--dom-attribute-name-color);}\n.cm-xml-link{color:rgb(231, 194, 111);}\n\n.webkit-html-attribute-name{color:var(--dom-attribute-name-color);}\n.webkit-html-attribute-value{color:rgb(242, 151, 102);}\n.webkit-html-comment{color:rgb(137, 137, 137);}\n.devtools-link{color:rgb(231, 194, 111);}\n.webkit-html-tag{color:var(--dom-tag-name-color);}\n.webkit-html-tag-name{color:var(--dom-tag-name-color);}\n.webkit-html-close-tag-name{color:var(--dom-tag-name-color);}\n.webkit-html-text-node{color:rgb(207, 208, 208);}\n.webkit-html-css-node{color:rgb(207, 208, 208);}\n.webkit-html-js-node{color:rgb(207, 208, 208);}\n.webkit-html-pseudo-element{color:rgb(93, 175, 215);}\n.webkit-css-property{color: rgb(53, 212, 199);}\n\n.cm-def{color:var(--dom-tag-name-color);}\n.cm-header{color:var(--dom-tag-name-color);}\n.cm-variable-2{color:rgb(217, 217, 217);}\n\n.cm-variable-2 {color: #05a;}\n.cm-variable-3, .cm-type {color: rgb(93, 176, 215);}\n.cm-string {color: rgb(242, 139, 84);}\n.cm-meta {color: #555;}\n.cm-meta {color:rgb(221, 251, 85);}\n.cm-qualifier{color:rgb(255, 163, 79);}\n.cm-builtin{color:rgb(159, 180, 214);}\n.cm-bracket {color: #997;}\n.cm-tag{color:var(--dom-tag-name-color);}\n.cm-attribute{color:rgb(97, 148, 198);}\n.cm-hr {color: #999;}\n.cm-link{color:rgb(159, 180, 214);}\n\n:root {\n --dom-tag-name-color: rgb(93, 176, 215);\n --dom-attribute-name-color: rgb(155, 187, 220);\n}\n\n/*# sourceURL=ui/inspectorSyntaxHighlightDark.css */";Root.Runtime.cachedResources["ui/inspectorViewTabbedPane.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.tabbed-pane-header-tab,\n.tabbed-pane-header-tab.selected {\n height: 26px;\n margin: 0;\n border: none;\n border-left: 2px solid transparent;\n border-right: 2px solid transparent;\n}\n\n.tabbed-pane-header-tab.selected {\n border-width: 0 2px 0 2px;\n}\n\n.tabbed-pane-header-contents {\n margin-left: 0;\n}\n\n.tabbed-pane-left-toolbar {\n margin-right: 0 !important;\n}\n\n/*# sourceURL=ui/inspectorViewTabbedPane.css */";Root.Runtime.cachedResources["ui/listWidget.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.list {\n flex: auto 0 1;\n overflow-y: auto;\n border: 1px solid rgb(231, 231, 231);\n flex-direction: column;\n}\n\n.list-separator {\n background: rgb(231, 231, 231);\n height: 1px;\n}\n\n.list-item {\n flex: none;\n min-height: 30px;\n display: flex;\n align-items: center;\n position: relative;\n overflow: hidden;\n}\n\n.list-item:hover {\n background: hsl(0, 0%, 96%);\n}\n\n.list-widget-input-validation-error {\n color: var(--input-validation-error);\n margin: 0 5px;\n}\n\n.controls-container {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: stretch;\n pointer-events: none;\n}\n\n.controls-gradient {\n flex: 0 1 50px;\n}\n\n.list-item:hover .controls-gradient {\n background-image: linear-gradient(90deg, transparent, hsl(0, 0%, 96%));\n}\n\n.controls-buttons {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n pointer-events: auto;\n visibility: hidden;\n}\n\n.list-item:hover .controls-buttons {\n background-color: hsl(0, 0%, 96%);\n visibility: visible;\n}\n\n.editor-container {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n flex: none;\n background: hsl(0, 0%, 96%);\n overflow: hidden;\n}\n\n.editor-content {\n flex: auto;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n.editor-buttons {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n padding: 5px;\n}\n\n.editor-buttons > button {\n flex: none;\n margin-right: 10px;\n}\n\n.editor-content input {\n margin-right: 10px;\n}\n\n.editor-content input.error-input {\n background-color: white;\n}\n\n/*# sourceURL=ui/listWidget.css */";Root.Runtime.cachedResources["ui/popover.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.widget {\n display: flex;\n background: white;\n box-shadow: var(--drop-shadow);\n border-radius: 2px;\n overflow: auto;\n -webkit-user-select: text;\n line-height: 11px;\n}\n\n.widget.has-padding {\n padding: 6px;\n}\n\n/*# sourceURL=ui/popover.css */";Root.Runtime.cachedResources["ui/progressIndicator.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.progress-indicator-shadow-stop-button {\n background-color: rgb(216, 0, 0) !important;\n border: 0;\n width: 10px;\n height: 12px;\n border-radius: 2px;\n}\n\n.progress-indicator-shadow-container {\n display: flex;\n flex: 1 0 auto;\n align-items: center;\n}\n\n.progress-indicator-shadow-container .title {\n text-overflow: ellipsis;\n overflow: hidden;\n max-width: 150px;\n margin-right: 2px;\n color: #777;\n}\n\n.progress-indicator-shadow-container progress {\n flex: auto;\n margin: 0 2px;\n width: 100px\n}\n\n/*# sourceURL=ui/progressIndicator.css */";Root.Runtime.cachedResources["ui/radioButton.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n::slotted(input.dt-radio-button) {\n height: 17px;\n width: 17px;\n min-width: 17px;\n border: 1px solid rgb(165, 165, 165);\n background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));\n border-radius: 8px;\n -webkit-appearance: none;\n vertical-align: middle;\n margin: 0 5px 5px 0;\n}\n\n::slotted(input.dt-radio-button:active:not(:disabled)) {\n background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));\n}\n\n::slotted(input.dt-radio-button:checked) {\n background: url(Images/radioDot.png) center no-repeat,\n linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));\n}\n\n::slotted(input.dt-radio-button:checked:active) {\n background: url(Images/radioDot.png) center no-repeat,\n linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));\n}\n\n/*# sourceURL=ui/radioButton.css */";Root.Runtime.cachedResources["ui/remoteDebuggingTerminatedScreen.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.widget {\n padding: 20px;\n}\n\n.message, .button {\n font-size: larger;\n white-space: pre;\n margin: 5px;\n}\n\n.button {\n text-align: center;\n margin-top: 10px;\n}\n\n.reason {\n color: #8b0000;\n}\n\n/*# sourceURL=ui/remoteDebuggingTerminatedScreen.css */";Root.Runtime.cachedResources["ui/reportView.css"]="/*\n * Copyright 2016 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n background-color: #f9f9f9;\n}\n\n.report-content-box {\n background-color: white;\n white-space: nowrap;\n overflow: auto;\n}\n\n.report-content-box.no-scroll {\n overflow: visible;\n}\n\n.report-header {\n border-bottom: 1px solid rgb(230, 230, 230);\n padding: 12px 24px;\n}\n\n.report-header .toolbar {\n margin-bottom: -8px;\n}\n\n.report-header .toolbar {\n margin-top: 5px;\n margin-left: -8px;\n}\n\n.report-title {\n font-size: 15px;\n}\n\n.report-url, .report-subtitle {\n font-size: 12px;\n margin-top: 10px;\n}\n\n.report-section {\n display: flex;\n padding: 12px;\n border-bottom: 1px solid rgb(230, 230, 230);\n flex-direction: column;\n}\n\n.report-section-header {\n margin-left: 18px;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.report-section-title {\n flex: auto;\n text-overflow: ellipsis;\n overflow: hidden;\n font-weight: bold;\n color: #555;\n}\n\n.report-field {\n margin-top: 8px;\n display: flex;\n line-height: 28px;\n}\n\n.report-row {\n margin: 10px 0 2px 18px;\n}\n\n.report-field-name {\n color: #888;\n flex: 0 0 128px;\n text-align: right;\n padding: 0 6px;\n white-space: pre;\n}\n\n.report-field-value {\n flex: auto;\n padding: 0 6px;\n white-space: pre;\n}\n\n.report-field-value-is-flexed {\n display: flex;\n}\n\n.report-field-value-subtitle {\n color: #888;\n line-height: 14px;\n}\n\n.report-row-selectable {\n user-select: text;\n}\n\n/*# sourceURL=ui/reportView.css */";Root.Runtime.cachedResources["ui/rootView.css"]="/*\n * Copyright 2016 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.root-view {\n background-color: white;\n overflow: hidden;\n position: absolute !important;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n}\n\n/*# sourceURL=ui/rootView.css */";Root.Runtime.cachedResources["ui/searchableView.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.search-bar {\n flex: 0 0 31px;\n background-color: #eee;\n border-top: 1px solid #ccc;\n display: flex;\n overflow: hidden;\n z-index: 0;\n}\n\n.search-bar.replaceable {\n flex: 0 0 57px;\n}\n\n.search-replace {\n -webkit-appearance: none;\n border: 0;\n padding: 0 3px;\n margin: 0;\n flex: 1;\n}\n\n.search-replace:focus {\n outline: none;\n}\n\n.toolbar-search {\n display: flex;\n width: 100%;\n}\n\n.toolbar-search > div {\n margin: 2px 2px;\n flex-shrink: 0;\n}\n\n.toolbar-search-inputs {\n flex-grow: 1;\n min-width: 150px;\n}\n\n.toolbar-search-navigation-controls {\n align-self: stretch;\n}\n\n.toolbar-search-navigation {\n display: inline-block;\n width: 20px;\n height: 20px;\n background-repeat: no-repeat;\n background-position: 4px 7px;\n border-left: 1px solid rgb(170, 170, 170);\n opacity: 0.3;\n}\n\n.toolbar-search-navigation.enabled {\n opacity: 1.0;\n}\n\n.toolbar-search button.search-action-button {\n font-weight: 400;\n height: 22px;\n width: 87px;\n}\n\n.toolbar-search-control {\n display: -webkit-flex;\n position: relative;\n background-color: white;\n}\n\n.toolbar-search-buttons {\n display: flex;\n flex-direction: column;\n}\n\n.toolbar-replace-control,\n#search-input-field {\n margin-top: 1px;\n line-height: 17px;\n}\n\n.toolbar-search-control, .toolbar-replace-control {\n border: 1px solid rgb(163, 163, 163);\n height: 22px;\n border-radius: 2px;\n width: 100%;\n margin-top: 2px;\n margin-bottom: 2px;\n}\n\n.toolbar-search-navigation.enabled:active {\n background-position: 4px 7px, 0 0;\n}\n\n.toolbar-search-navigation.toolbar-search-navigation-prev {\n background-image: url(Images/searchPrev.png);\n border-left: 1px solid rgb(163, 163, 163);\n}\n\n:host-context(.-theme-with-dark-background) .toolbar-search-navigation {\n -webkit-filter: invert(90%);\n}\n\n.toolbar-search-navigation.toolbar-search-navigation-prev.enabled:active {\n background-image: url(Images/searchPrev.png), #f2f2f2;\n}\n\n.toolbar-search-navigation.toolbar-search-navigation-next {\n background-image: url(Images/searchNext.png);\n border-left: 1px solid rgb(230, 230, 230);\n}\n\n.toolbar-search-navigation.toolbar-search-navigation-next.enabled:active {\n background-image: url(Images/searchNext.png), #f2f2f2;\n}\n\n.search-results-matches {\n display: inline-block;\n text-align: right;\n padding: 0 4px;\n color: rgb(165, 165, 165);\n align-self: center;\n}\n\n.first-row-buttons {\n display: flex;\n justify-content: space-between;\n}\n\n.toolbar-search > .replace-toggle-toolbar {\n margin: 2px -2px 0 0;\n}\n\n.toolbar-search-options {\n margin: 0 auto;\n}\n\n/*# sourceURL=ui/searchableView.css */";Root.Runtime.cachedResources["ui/slider.css"]="/*\n * Copyright 2016 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.dt-range-input {\n -webkit-appearance: none;\n margin: 0;\n padding: 0;\n height: 10px;\n width: 88px;\n outline: none;\n background: none;\n}\n\n.dt-range-input::-webkit-slider-thumb, -theme-preserve {\n -webkit-appearance: none;\n margin: 0;\n padding: 0;\n border: 0;\n width: 12px;\n height: 12px;\n margin-top: -5px;\n border-radius: 50%;\n background-color: #4285F4;\n}\n\n.dt-range-input::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n margin: 0;\n padding: 0;\n width: 100%;\n height: 2px;\n background-color: rgba(0, 0, 0, 0.26);\n}\n\n.dt-range-input:focus::-webkit-slider-thumb, -theme-preserve {\n box-shadow: 0 0 0 2px rgba(66, 133, 244, 0.4);\n}\n\n.dt-range-input:disabled::-webkit-slider-thumb {\n background-color: #bdbdbd;\n}\n\n/*# sourceURL=ui/slider.css */";Root.Runtime.cachedResources["ui/smallBubble.css"]="/*\n * Copyright 2016 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\ndiv {\n display: inline-block;\n height: 14px;\n vertical-align: middle;\n white-space: nowrap;\n padding: 1px 4px;\n text-align: left;\n font-size: 11px;\n line-height: normal;\n font-weight: bold;\n text-shadow: none;\n color: white;\n margin-top: -1px;\n border-radius: 7px;\n}\n\ndiv.verbose {\n background-color: rgb(0, 0, 255);\n}\n\ndiv.info {\n background-color: rgb(128, 151, 189);\n}\n\ndiv.warning {\n background-color: rgb(232, 164, 0);\n}\n\ndiv.error {\n background-color: rgb(216, 35, 35);\n}\n\n/*# sourceURL=ui/smallBubble.css */";Root.Runtime.cachedResources["ui/segmentedButton.css"]="/*\n * Copyright 2018 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.segmented-button {\n align-items: center;\n align-content: center;\n display: flex;\n}\n\n.segmented-button-segment {\n background-color: white;\n border: var(--divider-border);\n border-right-style: none;\n color: #5a5a5a;\n flex: 1 1 0;\n font-weight: 700;\n margin-left: -1px;\n padding: 4px 16px;\n}\n\n.segmented-button-segment:hover {\n background-color: #F4F4F4;\n color: #333;\n}\n\n.segmented-button-segment:first-child {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n\n.segmented-button-segment:last-child {\n border-bottom-right-radius: 4px;\n border-right-style: solid;\n border-top-right-radius: 4px;\n}\n\n.segmented-button-segment.segmented-button-segment-selected {\n background-color: hsl(218, 81%, 59%);\n border-color: transparent;\n color: #FAFAFA;\n}\n\n.segmented-button-segment.segmented-button-segment-selected:hover {\n background-color: hsl(218, 81%, 62%);\n color: #FFF;\n}\n\n/* Remove a border between the selected button and its siblin */\n.segmented-button-segment-selected + .segmented-button-segment {\n border-left-color: transparent;\n}\n\n/*# sourceURL=ui/segmentedButton.css */";Root.Runtime.cachedResources["ui/softContextMenu.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.soft-context-menu {\n overflow-y: auto;\n min-width: 160px !important;\n /* NOTE: Keep padding in sync with padding adjustment in SoftContextMenu.js */\n padding: 4px 0 4px 0;\n border: 1px solid #b9b9b9;\n background-color: #FFF;\n box-shadow: var(--drop-shadow);\n --context-menu-hover-bg: #ebebeb;\n --context-menu-hover-color: #222;\n --context-menu-seperator-color: var(--divider-color);\n}\n\n:host:host-context(.platform-mac):host-context(html:not(.-theme-with-dark-background)) .soft-context-menu {\n border: 1px solid rgba(196, 196, 196, 0.9);\n border-top: 1px solid rgba(196, 196, 196, 0.5);\n border-radius: 4px;\n background-color: rgb(240, 240, 240);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.25);\n --context-menu-hover-color: #FFF;\n --context-menu-seperator-color: rgb(222, 222, 222);\n}\n\n:host-context(.-theme-with-dark-background) .soft-context-menu {\n --context-menu-hover-bg: var(--selection-bg-color);\n --context-menu-hover-color: var(--selection-fg-color);\n border: none;\n}\n\n.soft-context-menu-item {\n display: flex;\n width: 100%;\n line-height: 14px;\n font-size: 12px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n padding: 2px 7px 2px 8px;\n margin: 0 13px 0 0;\n white-space: nowrap;\n}\n\n.soft-context-menu-disabled {\n color: #999;\n pointer-events: none;\n}\n\n.soft-context-menu-separator {\n height: 10px;\n margin: 0 1px;\n}\n\n.soft-context-menu-separator > .separator-line {\n margin: 0;\n height: 5px;\n border-bottom: 1px solid var(--context-menu-seperator-color);\n pointer-events: none;\n}\n\n.soft-context-menu-item-mouse-over {\n border-top: 1px solid var(--context-menu-hover-bg);\n border-bottom: 1px solid var(--context-menu-hover-bg);\n background-color: var(--context-menu-hover-bg);\n color: var(--context-menu-hover-color);\n}\n\n:host:host-context(.platform-mac):host-context(html:not(.-theme-with-dark-background)) .soft-context-menu-item-mouse-over {\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n background-image: linear-gradient(to right, hsl(214, 81%, 60%), hsl(214, 100%, 56%));\n}\n\n:host:host-context(.platform-mac):host-context(html:not(.-theme-with-dark-background)) .separator-line {\n border-width: 2px;\n}\n\n.soft-context-menu-item-submenu-arrow {\n pointer-events: none;\n font-size: 11px;\n text-align: right;\n align-self: center;\n margin-left: auto;\n}\n\n.soft-context-menu-item-mouse-over .soft-context-menu-item-checkmark {\n color: var(--selection-fg-color);\n}\n\n.soft-context-menu-custom-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex: auto;\n}\n\n.soft-context-menu-shortcut {\n color: gray;\n pointer-events: none;\n flex: 1 1 auto;\n text-align: right;\n padding-left: 10px;\n}\n\n.soft-context-menu-item-mouse-over .soft-context-menu-shortcut {\n color: inherit;\n}\n\n.checkmark {\n opacity: 0.7;\n pointer-events: none;\n margin: auto 5px auto 0px;\n}\n\n:host-context(.-theme-with-dark-background) .checkmark {\n filter: invert(80%);\n}\n\n.soft-context-menu-item-mouse-over .checkmark {\n opacity: 1;\n filter: none;\n}\n\n/*# sourceURL=ui/softContextMenu.css */";Root.Runtime.cachedResources["ui/softDropDown.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.item.disabled {\n opacity: 0.5;\n}\n\n.item-list {\n background-color: white;\n box-shadow: var(--drop-shadow);\n overflow-x: hidden;\n overflow-y: auto;\n width: 100%;\n}\n\n.item.highlighted {\n color: var(--selection-fg-color);\n background-color: var(--selection-bg-color);\n}\n\n.list-container {\n width: 100%;\n}\n\n/*# sourceURL=ui/softDropDown.css */";Root.Runtime.cachedResources["ui/softDropDownButton.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\nbutton.soft-dropdown {\n height: 26px;\n text-align: left;\n position: relative;\n border: none;\n background: none;\n}\n\nbutton.soft-dropdown[disabled] {\n opacity: .5;\n}\n\nbutton.soft-dropdown > .title {\n padding-right: 5px;\n width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nbutton.soft-dropdown[data-keyboard-focus=\"true\"]:focus::before {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n right: 2px;\n bottom: 2px;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.08);\n}\n\n/*# sourceURL=ui/softDropDownButton.css */";Root.Runtime.cachedResources["ui/splitWidget.css"]="/*\n * Copyright (C) 2011 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.\n * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n:host {\n overflow: hidden;\n}\n\n.shadow-split-widget {\n display: flex;\n overflow: hidden;\n}\n\n.shadow-split-widget-contents {\n display: flex;\n position: relative;\n flex-direction: column;\n contain: layout size style;\n}\n\n.shadow-split-widget-sidebar {\n flex: none;\n}\n\n.shadow-split-widget-main, .shadow-split-widget-sidebar.maximized {\n flex: auto;\n}\n\n.shadow-split-widget.hbox > .shadow-split-widget-resizer {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 6px;\n z-index: 500;\n}\n\n.shadow-split-widget.vbox > .shadow-split-widget-resizer {\n position: absolute;\n left: 0;\n right: 0;\n height: 6px;\n z-index: 500;\n}\n\n.shadow-split-widget.vbox > .shadow-split-widget-sidebar.no-default-splitter {\n border: 0 !important;\n}\n\n.shadow-split-widget.vbox > .shadow-split-widget-sidebar:not(.maximized) {\n border: 0;\n border-top: 1px solid var(--divider-color);\n}\n\n.shadow-split-widget.vbox > .shadow-split-widget-sidebar:first-child:not(.maximized) {\n border: 0;\n border-bottom: 1px solid var(--divider-color);\n}\n\n.shadow-split-widget.hbox > .shadow-split-widget-sidebar:not(.maximized) {\n border: 0;\n border-left: 1px solid var(--divider-color);\n}\n\n.shadow-split-widget.hbox > .shadow-split-widget-sidebar:first-child:not(.maximized) {\n border: 0;\n border-right: 1px solid var(--divider-color);\n}\n\n:host-context(.disable-resizer-for-elements-hack) .shadow-split-widget-resizer {\n pointer-events: none;\n}\n\n/*# sourceURL=ui/splitWidget.css */";Root.Runtime.cachedResources["ui/toolbar.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n flex: none;\n padding: 0 2px;\n}\n\n.toolbar-shadow {\n position: relative;\n white-space: nowrap;\n height: 26px;\n overflow: hidden;\n z-index: 12;\n display: flex;\n flex: none;\n align-items: center;\n}\n\n.toolbar-shadow.wrappable {\n flex-wrap: wrap;\n overflow: visible;\n}\n\n.toolbar-shadow.toolbar-grow-vertical {\n height: initial;\n}\n\n.toolbar-shadow.vertical {\n flex-direction: column;\n height: auto;\n align-items: flex-start;\n}\n\n.toolbar-item {\n position: relative;\n display: flex;\n background-color: transparent;\n flex: none;\n align-items: center;\n justify-content: center;\n padding: 0;\n height: 26px;\n border: none;\n white-space: pre;\n}\n\n.toolbar-item,\n.toolbar-item .devtools-link {\n color: #5a5a5a;\n}\n\nselect.toolbar-item:disabled {\n opacity: 0.5;\n}\n\n.toolbar-dropdown-arrow {\n background-color: #6D6D6D;\n pointer-events: none;\n flex: none;\n}\n\nselect.toolbar-item:disabled + .toolbar-dropdown-arrow {\n opacity: 0.5;\n}\n\n/* Toolbar item */\n\n.toolbar-button {\n white-space: nowrap;\n overflow: hidden;\n min-width: 28px;\n background: transparent;\n border-radius: 0;\n}\n\n.toolbar-text {\n margin: 0 5px;\n flex: none;\n color: #5a5a5a;\n}\n\n.toolbar-text:empty {\n margin: 0;\n}\n\n.toolbar-has-dropdown {\n justify-content: space-between;\n padding: 0 3px 0 5px;\n}\n\n.toolbar-has-dropdown .toolbar-text {\n margin: 0 4px 0 0;\n text-overflow: ellipsis;\n flex: auto;\n overflow: hidden;\n text-align: right;\n}\n\n.toolbar-button.dark-text .toolbar-dropdown-arrow {\n background-color: #333;\n}\n\n.toolbar-has-glyph .toolbar-text {\n margin-left: -4px;\n}\n\n.toolbar-button:not(.toolbar-has-glyph):not(.toolbar-has-dropdown):not(.largeicon-menu) {\n font-weight: bold;\n}\n\n.toolbar-render-as-links * {\n font-weight: initial;\n color: rgb(17, 85, 204);\n text-decoration: underline;\n cursor: pointer;\n}\n\n.toolbar-toggled-gray:not(.toolbar-render-as-links) .toolbar-button:not(.toolbar-has-glyph):not(.toolbar-has-dropdown):not(.largeicon-menu):hover {\n background-color: var(--toolbar-bg-color);\n}\n\n.toolbar-glyph {\n background-color: #5a5a5a;\n flex: none;\n}\n\n/* Button */\n\n.toolbar-button:disabled {\n opacity: 0.5;\n}\n\n.toolbar-button.dark-text .toolbar-text{\n color: #333 !important;\n}\n\n:not(.toolbar-render-as-links) .toolbar-button:enabled:hover:not(:active) .toolbar-glyph {\n background-color: #333;\n}\n\n:not(.toolbar-render-as-links) .toolbar-button:enabled:hover:not(:active) .toolbar-text {\n color: #333;\n}\n\n.toolbar-button.toolbar-state-on .toolbar-glyph,\n.toolbar-blue-on-hover .toolbar-button:not(.toolbar-state-on):enabled:hover:not(:active) {\n background-color: var(--accent-color);\n}\n\n.toolbar-button.toolbar-state-on .toolbar-text {\n color: var(--accent-color);\n}\n\n.toolbar-blue-on-hover .toolbar-button:not(.toolbar-state-on):enabled:hover .toolbar-glyph {\n background-color: white;\n}\n\n.toolbar-blue-on-hover .toolbar-button:not(.toolbar-state-on):enabled:hover .toolbar-text {\n color: white;\n}\n\n.toolbar-button.toolbar-state-on:enabled:hover:not(:active) .toolbar-glyph,\n.toolbar-blue-on-hover .toolbar-button:not(.toolbar-state-on):enabled:active:hover {\n background-color: var(--accent-color);\n}\n\n.toolbar-button.toolbar-state-on:enabled:hover:not(:active) .toolbar-text {\n color: var(--accent-color);\n}\n\n.toolbar-toggled-gray .toolbar-button.toolbar-state-on {\n background-color: var(--toolbar-bg-color) !important;\n}\n\n.toolbar-button.toolbar-state-on.toolbar-toggle-with-red-color .toolbar-glyph,\n.toolbar-button.toolbar-state-off.toolbar-default-with-red-color .toolbar-glyph {\n background-color: rgb(216, 0, 0) !important;\n}\n\n:host-context(.-theme-with-dark-background) .toolbar-button.toolbar-state-on.toolbar-toggle-with-red-color .toolbar-glyph,\n:host-context(.-theme-with-dark-background) .toolbar-button.toolbar-state-off.toolbar-default-with-red-color .toolbar-glyph {\n background-color: hsl(0, 100%, 65%) !important;\n}\n\n\n/* Checkbox */\n\n.toolbar-item.checkbox {\n padding: 0 5px 0 2px;\n}\n\n.toolbar-item.checkbox:hover {\n color: #333;\n}\n\n/* Select */\n\n.toolbar-select-container {\n display: inline-flex;\n flex-shrink: 0;\n margin-right: 6px;\n}\n\nselect.toolbar-item {\n min-width: 38px;\n -webkit-appearance: none;\n border: 0;\n border-radius: 0;\n padding: 0 13px 0 5px;\n margin-right: -10px;\n position: relative;\n height: 22px;\n margin-top: 2px;\n margin-bottom: 2px;\n}\n\nselect.toolbar-item[data-keyboard-focus=\"true\"]:focus {\n background: rgba(0, 0, 0, 0.08);\n border-radius: 2px;\n}\n\nselect.toolbar-item[data-keyboard-focus=\"true\"]:focus > * {\n background: white;\n}\n\n/* Input */\n\n.toolbar-input {\n width: 120px;\n height: 19px;\n padding: 4px 3px 3px 3px;\n margin: 1px 3px;\n background-color: white;\n border: 1px solid transparent ;\n min-width: 35px;\n}\n\n.toolbar-input:hover {\n box-shadow: var(--focus-ring-inactive-shadow);\n}\n\n.toolbar-input.focused,\n.toolbar-input:not(.toolbar-input-empty) {\n box-shadow: var(--focus-ring-active-shadow);\n}\n\n.toolbar-input > input {\n border: none;\n flex-grow: 1;\n}\n\n.toolbar-input-clear-button {\n opacity: 0.7;\n flex-basis: 13px;\n flex-shrink: 0;\n height: 16px;\n}\n\n.toolbar-input-clear-button:hover {\n opacity: .99;\n}\n\n.toolbar-input-empty .toolbar-input-clear-button {\n display: none;\n}\n\n.toolbar-prompt-proxy {\n flex: 1;\n}\n\n.toolbar-input-prompt {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n cursor: auto;\n}\n\n/* Separator */\n\n.toolbar-divider {\n background-color: #ccc;\n width: 1px;\n margin: 5px 4px;\n height: 16px;\n}\n\n.toolbar-spacer {\n flex: auto;\n}\n\n/* Long click */\n\n.long-click-glyph {\n position: absolute;\n background-color: #5a5a5a;\n top: 0;\n left: 0;\n}\n\n.toolbar-button.emulate-active {\n background-color: rgb(163, 163, 163);\n}\n\n.toolbar-button[data-keyboard-focus=\"true\"]:focus::after {\n position: absolute;\n top: 2px;\n bottom: 2px;\n left: 2px;\n right: 2px;\n background-color: rgba(0, 0, 0, 0.08);\n border-radius: 2px;\n content: \"\";\n}\n\n.toolbar-shadow.floating {\n flex-direction: column;\n height: auto;\n background-color: white;\n border: 1px solid #ccc;\n margin-top: -1px;\n width: 28px;\n left: -2px;\n}\n\ninput[is=history-input] {\n border: none;\n line-height: 16px;\n padding: 1px;\n}\n\ninput[is=history-input]:hover {\n box-shadow: var(--focus-ring-inactive-shadow);\n}\n\ninput[is=history-input]:focus,\ninput[is=history-input]:not(:placeholder-shown) {\n box-shadow: var(--focus-ring-active-shadow);\n}\n\n.toolbar-item.warning {\n background: hsl(0, 100%, 95%);\n}\n\n/*# sourceURL=ui/toolbar.css */";Root.Runtime.cachedResources["ui/suggestBox.css"]="/*\n * Copyright (C) 2011 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n:host {\n display: flex;\n flex: auto;\n}\n\n.suggest-box {\n flex: auto;\n background-color: #FFFFFF;\n pointer-events: auto;\n margin-left: -3px;\n box-shadow: var(--drop-shadow);\n overflow-x: hidden;\n}\n\n.suggest-box-content-item {\n padding: 1px 0 1px 1px;\n margin: 0;\n border: 1px solid transparent;\n white-space: nowrap;\n display: flex;\n}\n\n.suggest-box-content-item.secondary {\n background-color: #f9f9f9;\n}\n\n.suggestion-title {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.suggestion-title span {\n white-space: pre;\n}\n\n.suggestion-subtitle {\n flex: auto;\n text-align: right;\n color: #999;\n margin-right: 3px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.suggestion-icon {\n user-select: none;\n align-self: center;\n flex-shrink: 0;\n}\n\n.suggest-box-content-item .query {\n font-weight: bold;\n}\n\n.suggest-box-content-item .spacer {\n display: inline-block;\n width: 20px;\n}\n\n.suggest-box-content-item.selected {\n background-color: var(--selection-bg-color);\n}\n\n.suggest-box-content-item.selected > span {\n color: var(--selection-fg-color);\n}\n\n.suggest-box-content-item:hover:not(.selected) {\n background-color: var(--item-hover-color);\n}\n\n/*# sourceURL=ui/suggestBox.css */";Root.Runtime.cachedResources["ui/tabbedPane.css"]="/*\n * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.\n * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>\n * Copyright (C) 2011 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.\n * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n.tabbed-pane {\n flex: auto;\n overflow: hidden;\n}\n\n.tabbed-pane-content {\n position: relative;\n overflow: auto;\n flex: auto;\n display: flex;\n flex-direction: column;\n}\n\n.tabbed-pane-content.has-no-tabs {\n background-color: lightgray;\n}\n\n.tabbed-pane-placeholder {\n font-size: 14px;\n text-align: center;\n width: fit-content;\n margin: 20px auto 0px;\n text-shadow: rgba(255, 255, 255, 0.75) 0 1px 0;\n line-height: 28px;\n overflow: hidden;\n}\n\n.tabbed-pane-placeholder-row {\n display: flex;\n white-space: nowrap;\n}\n\n.tabbed-pane-placeholder-row[data-keyboard-focus=\"true\"]:focus {\n outline-width: unset;\n}\n\n.tabbed-pane-placeholder-key {\n flex: 1;\n text-align: right;\n padding-right: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tabbed-pane-no-shortcut {\n flex: 1;\n text-align: center;\n}\n\n.tabbed-pane-placeholder-value {\n flex: 1;\n text-align: left;\n padding-left: 14px;\n}\n\n.tabbed-pane-header {\n display: flex;\n flex: 0 0 27px;\n border-bottom: 1px solid #ccc;\n overflow: visible;\n width: 100%;\n background-color: var(--toolbar-bg-color);\n}\n\n.tabbed-pane-header-contents {\n flex: auto;\n pointer-events: none;\n margin-left: 0;\n position: relative;\n}\n\n.tabbed-pane-header-contents > * {\n pointer-events: initial;\n}\n\n.tabbed-pane-header-tab-icon {\n min-width: 14px;\n display: flex;\n align-items: center;\n margin-right: 2px;\n}\n\n.tabbed-pane-header-tab {\n float: left;\n padding: 2px 0.8em;\n height: 26px;\n line-height: 15px;\n white-space: nowrap;\n cursor: default;\n display: flex;\n align-items: center;\n color: #5a5a5a;\n}\n\n.tabbed-pane-header-tab.closeable {\n padding-right: 4px;\n}\n\n.tabbed-pane-header-tab:hover,\n.tabbed-pane-shadow .tabbed-pane-header-tab[data-keyboard-focus=\"true\"]:focus {\n color: #333;\n background-color: var(--toolbar-hover-bg-color);\n}\n\n.tabbed-pane-header-tab-title {\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.tabbed-pane-header-tab.measuring {\n visibility: hidden;\n}\n\n.tabbed-pane-header-tab.selected {\n border-bottom: none;\n}\n\n.tabbed-pane-header-tab.selected {\n background-color: var(--tab-selected-bg-color);\n color: var(--tab-selected-fg-color);\n}\n\n.tabbed-pane-header-tab.dragging {\n position: relative;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n background-color: #e5e5e5;\n}\n\n.tabbed-pane-header-tab .tabbed-pane-close-button {\n margin: 0 -3px 0 4px;\n visibility: hidden;\n}\n\n.tabbed-pane-header-tab:hover .tabbed-pane-close-button,\n.tabbed-pane-header-tab.selected .tabbed-pane-close-button {\n visibility: visible;\n}\n\n.tabbed-pane-header-tabs-drop-down-container {\n float: left;\n opacity: 0.8;\n cursor: pointer;\n display: flex;\n align-items: center;\n height: 100%;\n}\n\n.tabbed-pane-header-tabs-drop-down-container > .chevron-icon {\n background-color: hsla(0,0%,20%,1);\n display: block;\n}\n\n.tabbed-pane-header-tabs-drop-down-container:hover,\n.tabbed-pane-header-tabs-drop-down-container[data-keyboard-focus=\"true\"]:focus {\n background-color: rgba(0, 0, 0, 0.08);\n}\n\n.tabbed-pane-header-tabs-drop-down-container.measuring {\n visibility: hidden;\n}\n\n.tabbed-pane-header-tabs-drop-down-container:active {\n opacity: 0.8;\n}\n\n/* Web page style */\n\n.tabbed-pane-shadow.vertical-tab-layout {\n flex-direction: row !important;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-header {\n background-color: transparent;\n border: none transparent !important;\n width: auto;\n flex: 0 0 auto;\n flex-direction: column;\n padding-top: 10px;\n overflow: hidden;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-content {\n padding: 10px 10px 10px 0;\n overflow-x: hidden;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-header-contents {\n margin: 0;\n flex: none;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-header-tabs {\n display: flex;\n flex-direction: column;\n width: 120px;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-header-tab {\n background-color: transparent;\n border: none transparent;\n font-weight: normal;\n text-shadow: none;\n color: #777;\n height: 26px;\n padding-left: 10px;\n border-left: 6px solid transparent;\n margin: 0;\n display: flex;\n align-items: center;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-header-tab:not(.selected) {\n cursor: pointer !important;\n}\n\n.tabbed-pane-shadow.vertical-tab-layout .tabbed-pane-header-tab.selected {\n color: inherit;\n border: none transparent;\n border-left: 6px solid #666;\n}\n\n.tabbed-pane-tab-slider {\n height: 2px;\n position: absolute;\n bottom: -1px;\n background-color: var(--accent-color);\n left: 0;\n z-index: 50;\n transform-origin: 0 100%;\n transition: transform 150ms cubic-bezier(0, 0, 0.2, 1);\n visibility: hidden;\n}\n\n:host-context(.-theme-with-dark-background) .tabbed-pane-tab-slider {\n display: none;\n}\n\n@media (-webkit-min-device-pixel-ratio: 1.1) {\n .tabbed-pane-tab-slider {\n border-top: none;\n }\n}\n\n.tabbed-pane-tab-slider.enabled {\n visibility: visible;\n}\n\n.tabbed-pane-header-tab.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.tabbed-pane-left-toolbar {\n margin-right: -4px;\n flex: none;\n}\n\n.tabbed-pane-right-toolbar {\n margin-left: -4px;\n flex: none;\n}\n\n/*# sourceURL=ui/tabbedPane.css */";Root.Runtime.cachedResources["ui/targetCrashedScreen.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.widget {\n padding: 25px;\n}\n\n.message {\n font-size: larger;\n white-space: pre;\n margin: 5px;\n}\n\n/*# sourceURL=ui/targetCrashedScreen.css */";Root.Runtime.cachedResources["ui/textButton.css"]="/*\n * Copyright (c) 2014 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.text-button {\n margin: 2px;\n height: 24px;\n font-size: 12px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n padding: 0px 12px;\n font-weight: 500;\n color: var(--accent-fg-color);\n background-color: #fff;\n flex: none;\n white-space: nowrap;\n}\n\n.text-button:not(:disabled):focus,\n.text-button:not(:disabled):hover,\n.text-button:not(:disabled):active {\n background-color: var(--toolbar-bg-color);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n cursor: pointer;\n}\n\n.text-button:not(:disabled):active {\n background-color: #f2f2f2;\n}\n\n.text-button:not(:disabled):focus {\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 0 2px rgba(66, 133, 244, 0.4);\n}\n\n.text-button:disabled {\n opacity: 0.38;\n}\n\n.text-button.primary-button, -theme-preserve {\n background-color: var(--accent-color);\n border: none;\n color: #fff;\n}\n\n.text-button.link-style {\n background: none;\n border: none;\n padding: 0!important;\n font: inherit;\n cursor: pointer;\n height: 18px;\n}\n\n.text-button.primary-button:not(:disabled):focus,\n.text-button.primary-button:not(:disabled):hover,\n.text-button.primary-button:not(:disabled):active, -theme-preserve {\n background-color: var(--accent-color-hover);\n}\n\n.-theme-with-dark-background .text-button:not(.primary-button):not(:disabled):focus,\n.-theme-with-dark-background .text-button:not(.primary-button):not(:disabled):hover,\n.-theme-with-dark-background .text-button:not(.primary-button):not(:disabled):active {\n background-color: #313131;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.-theme-with-dark-background .text-button:not(.primary-button):not(:disabled):focus {\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 0 2px rgba(94, 151, 246, 0.6);\n}\n\n.-theme-with-dark-background .text-button:not(.primary-button):not(:disabled):active {\n background-color: #3e3e3e;\n}\n\n/*# sourceURL=ui/textButton.css */";Root.Runtime.cachedResources["ui/textPrompt.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n .text-prompt-root {\n display: flex;\n align-items: center;\n}\n\n.text-prompt-editing {\n box-shadow: var(--drop-shadow);\n background-color: white;\n text-overflow: clip !important;\n padding-left: 2px;\n margin-left: -2px;\n padding-right: 2px;\n margin-right: -2px;\n margin-bottom: -1px;\n padding-bottom: 1px;\n opacity: 1.0 !important;\n}\n\n.text-prompt-editing > .text-prompt {\n color: #222 !important;\n text-decoration: none !important;\n white-space: pre;\n}\n\n.text-prompt > .auto-complete-text {\n color: rgb(128, 128, 128) !important;\n}\n\n.text-prompt[data-placeholder]:empty::before {\n content: attr(data-placeholder);\n color: rgb(128, 128, 128);\n}\n\n.text-prompt:not([data-placeholder]):empty::after {\n content: '\\00A0';\n width: 0;\n display: block;\n}\n\n.text-prompt {\n cursor: text;\n overflow-x: visible;\n}\n\n.text-prompt::-webkit-scrollbar {\n display: none;\n}\n\n.text-prompt.disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.text-prompt-editing br {\n display: none;\n}\n\n.text-prompt-root:not(:focus-within) ::selection {\n background: transparent;\n}\n\n/*# sourceURL=ui/textPrompt.css */";Root.Runtime.cachedResources["ui/tooltip.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.tooltip {\n background: hsl(0, 0%, 95%);\n border-radius: 2px;\n color: hsl(0, 0%, 20%);\n padding: 5px 8px;\n line-height: 14px;\n display: flex;\n align-items: center;\n -webkit-filter: drop-shadow(0 1px 2px hsla(0, 0%, 0%, 0.3));\n border: 1px solid hsla(0, 0%, 0%, 0.1);\n background-clip: padding-box;\n box-sizing: border-box;\n position: absolute;\n visibility: hidden;\n transition: visibility 0s 100ms, opacity 150ms cubic-bezier(0, 0, .2, 1);\n z-index: 20001;\n top: 0;\n left: 0;\n opacity: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n pointer-events: none;\n}\n\n.tooltip-breakword {\n word-break: break-word;\n}\n\n.tooltip.shown {\n visibility: visible;\n transition-delay: 600ms;\n opacity: 1;\n}\n\n.tooltip.shown.instant {\n transition-delay: 0s;\n}\n\n.tooltip-shortcut {\n color: hsl(0, 0%, 45%);\n display: inline-block;\n margin-left: 8px;\n flex: 0 0 auto;\n}\n\n/*# sourceURL=ui/tooltip.css */";Root.Runtime.cachedResources["ui/treeoutline.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n flex: 1 1 auto;\n padding: 2px 0 0 0;\n}\n\n.tree-outline-disclosure:not(.tree-outline-disclosure-hide-overflow) {\n min-width: 100%;\n display: inline-block;\n}\n\n.tree-outline {\n padding: 0 0 4px 4px;\n margin: 0;\n z-index: 0;\n position: relative;\n}\n\n.tree-outline[data-keyboard-focus=\"true\"] {\n box-shadow: 0px 0px 0px 2px var(--accent-color) inset;\n}\n\n.tree-outline:not(.hide-selection-when-blurred) li.hovered:not(.selected) .selection {\n display: block;\n left: 3px;\n right: 3px;\n background-color: var(--item-hover-color);\n border-radius: 5px;\n}\n\n.tree-outline li .selection {\n display: none;\n z-index: -1;\n margin-left: -10000px;\n}\n\n.tree-outline:not(.hide-selection-when-blurred) li.selected {\n color: var(--selection-inactive-fg-color);\n}\n\n.tree-outline:not(.hide-selection-when-blurred) li.selected .selection {\n display: block;\n background-color: var(--selection-inactive-bg-color);\n}\n\n.tree-outline:not(.hide-selection-when-blurred) li.in-clipboard .highlight {\n outline: 1px dotted darkgrey;\n}\n\n.tree-outline:not(.hide-selection-when-blurred) li.elements-drag-over .selection {\n display: block;\n margin-top: -2px;\n border-top: 2px solid;\n border-top-color: var(--selection-bg-color);\n}\n\nol.tree-outline:not(.hide-selection-when-blurred) li.selected:focus .selection {\n background-color: var(--selection-bg-color);\n}\n\nol.tree-outline:not(.hide-selection-when-blurred) li.parent.selected:focus::before {\n background-color: var(--selection-fg-color);\n}\n\nol.tree-outline,\n.tree-outline ol {\n list-style-type: none;\n}\n\n.tree-outline ol {\n padding-left: 12px;\n}\n\n.tree-outline li {\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n display: flex;\n align-items: center;\n min-height: 16px;\n}\n\nol.tree-outline:not(.hide-selection-when-blurred) li.selected:focus {\n color: var(--selection-fg-color);\n}\n\nol.tree-outline:not(.hide-selection-when-blurred) li.selected:focus * {\n color: inherit;\n}\n\n.tree-outline li .icons-container {\n align-self: center;\n display: flex;\n align-items: center;\n}\n\n.tree-outline li .leading-icons {\n margin-right: 4px;\n}\n\n.tree-outline li .trailing-icons {\n margin-left: 4px;\n}\n\n.tree-outline li::before {\n -webkit-user-select: none;\n -webkit-mask-image: url(Images/treeoutlineTriangles.svg);\n -webkit-mask-size: 32px 24px;\n content: \"\\00a0\\00a0\";\n text-shadow: none;\n margin-right: -2px;\n height: 12px;\n width: 13px;\n}\n\n.tree-outline li:not(.parent)::before {\n background-color: transparent;\n}\n\n.tree-outline li::before {\n -webkit-mask-position: 0 0;\n background-color: #727272;\n}\n\n.tree-outline li.parent.expanded::before {\n -webkit-mask-position: -16px 0;\n}\n\n.tree-outline ol.children {\n display: none;\n}\n\n.tree-outline ol.children.expanded {\n display: block;\n}\n\n.tree-outline.tree-outline-dense li {\n margin-top: 1px;\n min-height: 12px;\n}\n\n.tree-outline.tree-outline-dense li.parent {\n margin-top: 0;\n}\n\n.tree-outline.tree-outline-dense li.parent::before {\n top: 0;\n}\n\n.tree-outline.tree-outline-dense ol {\n padding-left: 10px;\n}\n\n.tree-outline.hide-selection-when-blurred .selected:focus[data-keyboard-focus=\"true\"] {\n background: var(--focus-bg-color);\n border-radius: 2px;\n}\n\n.tree-outline-disclosure:not(.tree-outline-disclosure-hide-overflow) .tree-outline.hide-selection-when-blurred .selected:focus[data-keyboard-focus=\"true\"] {\n width: fit-content;\n padding-right: 3px;\n}\n\n/*# sourceURL=ui/treeoutline.css */";Root.Runtime.cachedResources["ui/viewContainers.css"]="/*\n * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.\n * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of\n * its contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n.expandable-view-title {\n display: flex;\n align-items: center;\n background-color: var(--toolbar-bg-color);\n height: 22px;\n padding: 0 5px;\n border-top: var(--divider-border);\n white-space: nowrap;\n overflow: hidden;\n position: relative;\n border-bottom: 1px solid transparent;\n}\n\n.expandable-view-title.expanded,\n.expandable-view-title:last-child {\n border-bottom: 1px solid #ddd;\n}\n\n.expandable-view-title .toolbar {\n margin-top: -3px;\n}\n\n.expandable-view-title:not(.expanded) .toolbar {\n display: none;\n}\n\n.title-expand-icon {\n margin-right: 2px;\n margin-bottom: -2px;\n}\n\n.expandable-view-title[data-keyboard-focus=\"true\"]:focus {\n background-color: #e0e0e0;\n}\n\n.expandable-view-title > .toolbar {\n position: absolute;\n right: 0;\n top: 0;\n}\n\n\n/*# sourceURL=ui/viewContainers.css */";Root.Runtime.cachedResources["components/imagePreview.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.image-preview-container {\n background: transparent;\n text-align: center;\n border-spacing: 0;\n}\n\n.image-preview-container img {\n margin: 2px auto;\n max-width: 100px;\n max-height: 100px;\n background-image: url(Images/checker.png);\n -webkit-user-select: text;\n -webkit-user-drag: auto;\n}\n\n.image-container {\n padding: 0;\n}\n\n/*# sourceURL=components/imagePreview.css */";Root.Runtime.cachedResources["components/jsUtils.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n display: inline;\n}\n\n.stack-preview-async-description {\n padding: 3px 0 1px;\n font-style: italic;\n}\n\n.stack-preview-container .webkit-html-blackbox-link {\n opacity: 0.6;\n}\n\n.stack-preview-container > tr {\n height: 16px;\n line-height: 16px;\n}\n\n.stack-preview-container td {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.stack-preview-container .function-name {\n max-width: 80em;\n}\n\n.stack-preview-container:not(.show-blackboxed) > tr.blackboxed {\n display: none;\n}\n\n.stack-preview-container.show-blackboxed > tr.show-blackboxed-link {\n display: none;\n}\n\n.stack-preview-container > tr.show-blackboxed-link {\n font-style: italic;\n}\n\n/*# sourceURL=components/jsUtils.css */";Root.Runtime.cachedResources["persistence/editFileSystemView.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.file-system-header {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex: auto;\n margin: 10px 0;\n}\n\n.file-system-header-text {\n flex: 1 0 auto;\n}\n\n.add-button {\n margin-left: 10px;\n align-self: flex-start;\n}\n\n.file-system-list {\n flex: auto;\n}\n\n.file-system-list-empty {\n flex: auto;\n height: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.file-system-list-item {\n padding: 3px 5px 3px 5px;\n height: 30px;\n display: flex;\n align-items: center;\n flex: auto 1 1;\n}\n\n.list-item .file-system-value {\n white-space: nowrap;\n text-overflow: ellipsis;\n -webkit-user-select: none;\n overflow: hidden;\n}\n\n.file-system-value {\n flex: 1 1 0px;\n}\n\n.file-system-edit-row {\n flex: none;\n display: flex;\n flex-direction: row;\n margin: 6px 5px;\n align-items: center;\n}\n\n.file-system-edit-row input {\n width: 100%;\n text-align: inherit;\n}\n\n/*# sourceURL=persistence/editFileSystemView.css */";Root.Runtime.cachedResources["persistence/workspaceSettingsTab.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\nheader {\n padding: 0 0 6px;\n border-bottom: 1px solid #EEEEEE;\n}\n\nheader > h1 {\n font-size: 18px;\n font-weight: normal;\n margin: 0;\n padding-bottom: 3px;\n}\n\n.settings-content {\n overflow-y: auto;\n overflow-x: hidden;\n margin: 8px 8px 8px 0;\n padding: 0 4px;\n flex: auto;\n}\n\n.settings-container {\n width: 100%;\n -webkit-column-width: 288px;\n}\n\n\n.settings-tab.settings-container {\n -webkit-column-width: 308px;\n}\n\n.settings-tab label {\n padding-right: 4px;\n display: inline-flex;\n}\n\n.settings-container-wrapper {\n position: absolute;\n top: 31px;\n left: 0px;\n right: 0;\n bottom: 0;\n overflow: auto;\n padding-top: 9px;\n}\n\n.settings-tab.settings-content {\n margin: 0;\n padding: 0;\n}\n\n.settings-tab p {\n margin: 12px 0;\n}\n\np.folder-exclude-pattern {\n display: flex;\n align-items: center;\n}\n\np.folder-exclude-pattern > input {\n flex: auto;\n}\n\n.settings-tab .file-system-container {\n border-top: 1px solid #aaa;\n padding: 19px 0 10px;\n margin: 20px 0;\n}\n\n.settings-tab .file-system-header {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.settings-tab .file-system-name {\n font-weight: bold;\n flex: none;\n margin-right: 10px;\n font-size: 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 70%;\n}\n\n.settings-tab .file-system-path {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: auto;\n}\n\n.settings-info-message {\n background-color: #eee;\n padding: 10px;\n margin: 20px 0;\n}\n\n.settings-tab.settings-content.settings-container {\n -webkit-column-width: initial;\n overflow: hidden;\n padding-right: 10px;\n}\n\n/*# sourceURL=persistence/workspaceSettingsTab.css */";Root.Runtime.cachedResources["console_counters/errorWarningCounter.css"]="/*\n * Copyright (c) 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n:host {\n cursor: pointer;\n padding: 0 2px;\n min-width: 26px;\n}\n\n:host:hover {\n color: #333;\n}\n\n.counter-item {\n margin-left: 6px;\n}\n\n.counter-item.counter-item-first {\n margin-left: 0;\n}\n\n/*# sourceURL=console_counters/errorWarningCounter.css */";