2022-01-02 19:10:45 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								var  engine  =  ( function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'use strict' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createCommonjsModule ( fn ,  basedir ,  module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  module  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  path :  basedir , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  exports :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  require :  function  ( path ,  base )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  commonjsRequire ( path ,  ( base  ===  undefined  ||  base  ===  null )  ?  module . path  :  base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ,  fn ( module ,  module . exports ) ,  module . exports ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  commonjsRequire  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									throw  new  Error ( 'Dynamic requires are not currently supported by @rollup/plugin-commonjs' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  perfetto _version  =  createCommonjsModule ( function  ( module ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . SCM _REVISION  =  exports . VERSION  =  void  0 ;  
						 
					
						
							
								
									
										
										
										
											2022-01-26 01:51:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								exports . VERSION  =  "v23.0-d7b55ea62" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . SCM _REVISION  =  "d7b55ea623d1106cb4e1961a4180caf1280ec6ab" ;  
						 
					
						
							
								
									
										
										
										
											2022-01-02 19:10:45 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  logging  =  createCommonjsModule ( function  ( module ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2018 The Android Open Source Project
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Licensed under the Apache License, Version 2.0 (the "License");
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// you may not use this file except in compliance with the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may obtain a copy of the License at
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//      http://www.apache.org/licenses/LICENSE-2.0
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unless required by applicable law or agreed to in writing, software
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distributed under the License is distributed on an "AS IS" BASIS,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See the License for the specific language governing permissions and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// limitations under the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . reportError  =  exports . setErrorHandler  =  exports . assertFalse  =  exports . assertTrue  =  exports . assertExists  =  void  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								let  errorHandler  =  ( _ )  =>  {  } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  assertExists ( value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ===  null  ||  value  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'Value doesn\'t exist' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . assertExists  =  assertExists ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  assertTrue ( value ,  optMsg )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  !==  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( optMsg  ?  optMsg  :  'Failed assertion' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . assertTrue  =  assertTrue ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  assertFalse ( value ,  optMsg )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assertTrue ( ! value ,  optMsg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . assertFalse  =  assertFalse ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setErrorHandler ( handler )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errorHandler  =  handler ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setErrorHandler  =  setErrorHandler ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  reportError ( err )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  errLog  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  errorObj  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err  instanceof  ErrorEvent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errLog  =  err . message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errorObj  =  err . error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( err  instanceof  PromiseRejectionEvent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errLog  =  ` ${ err . reason } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errorObj  =  err . reason ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errLog  =  ` ${ err } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( errorObj  !==  undefined  &&  errorObj  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  errStack  =  errorObj . stack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errLog  +=  '\n' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        errLog  +=  errStack  !==  undefined  ?  errStack  :  JSON . stringify ( errorObj ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errLog  +=  '\n\n' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errLog  +=  ` ${ perfetto _version . VERSION }   ${ perfetto _version . SCM _REVISION } \n ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errLog  +=  ` UA:  ${ navigator . userAgent } \n ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console . error ( errLog ,  err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errorHandler ( errLog ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . reportError  =  reportError ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  deferred  =  createCommonjsModule ( function  ( module ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2018 The Android Open Source Project
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Licensed under the Apache License, Version 2.0 (the "License");
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// you may not use this file except in compliance with the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may obtain a copy of the License at
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//      http://www.apache.org/licenses/LICENSE-2.0
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unless required by applicable law or agreed to in writing, software
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distributed under the License is distributed on an "AS IS" BASIS,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See the License for the specific language governing permissions and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// limitations under the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . defer  =  void  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Create  a  promise  with  exposed  resolve  and  reject  callbacks . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  defer ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  resolve  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  reject  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  p  =  new  Promise ( ( res ,  rej )  =>  [ resolve ,  reject ]  =  [ res ,  rej ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . assign ( p ,  {  resolve ,  reject  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . defer  =  defer ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  trace _processor  =  createCommonjsModule ( function  ( module ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  trace _processor _wasm  =  ( function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  _scriptDir  =  typeof  document  !==  'undefined'  &&  document . currentScript  ?  document . currentScript . src  :  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  _ _filename  !==  'undefined' )  _scriptDir  =  _scriptDir  ||  _ _filename ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function ( trace _processor _wasm )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  trace _processor _wasm  =  trace _processor _wasm  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Module  =  typeof  trace _processor _wasm  !==  "undefined"  ?  trace _processor _wasm  :  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  readyPromiseResolve ,  readyPromiseReject ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "ready" ]  =  new  Promise ( function ( resolve ,  reject )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readyPromiseResolve  =  resolve ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readyPromiseReject  =  reject ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_main" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_main" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_main" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_emscripten_stack_get_end" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_stack_get_end" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_stack_get_end" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_emscripten_stack_get_free" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_stack_get_free" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_stack_get_free" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_emscripten_stack_init" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_stack_init" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_stack_init" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_stackSave" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_stackSave" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_stackSave" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_stackRestore" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_stackRestore" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_stackRestore" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_stackAlloc" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_stackAlloc" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_stackAlloc" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "___wasm_call_ctors" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "___wasm_call_ctors" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "___wasm_call_ctors" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_fflush" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_fflush" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_fflush" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "___errno_location" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "___errno_location" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "___errno_location" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_malloc" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_malloc" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_malloc" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_free" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_free" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_free" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_memalign" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_memalign" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_memalign" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_memset" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_memset" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _memset on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_memset" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _memset on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "__get_tzname" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "__get_tzname" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "__get_tzname" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "__get_daylight" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "__get_daylight" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "__get_daylight" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "__get_timezone" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "__get_timezone" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "__get_timezone" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_emscripten_main_thread_process_queued_calls" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_main_thread_process_queued_calls" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_emscripten_main_thread_process_queued_calls" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "_usleep" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_usleep" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting _usleep on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "_usleep" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting _usleep on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module [ "ready" ] ,  "onRuntimeInitialized" ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "onRuntimeInitialized" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Object . defineProperty ( Module [ "ready" ] ,  "onRuntimeInitialized" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  moduleOverrides  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  key ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								for  ( key  in  Module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module . hasOwnProperty ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  moduleOverrides [ key ]  =  Module [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  arguments _  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  thisProgram  =  "./this.program" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  quit _  =  function ( status ,  toThrow )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 throw  toThrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ENVIRONMENT _IS _WEB  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ENVIRONMENT _IS _WORKER  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ENVIRONMENT _IS _NODE  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ENVIRONMENT _IS _SHELL  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENVIRONMENT _IS _WEB  =  typeof  window  ===  "object" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENVIRONMENT _IS _WORKER  =  typeof  importScripts  ===  "function" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENVIRONMENT _IS _NODE  =  typeof  process  ===  "object"  &&  typeof  process . versions  ===  "object"  &&  typeof  process . versions . node  ===  "string" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ENVIRONMENT _IS _SHELL  =  ! ENVIRONMENT _IS _WEB  &&  ! ENVIRONMENT _IS _NODE  &&  ! ENVIRONMENT _IS _WORKER ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "ENVIRONMENT" ] )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 throw  new  Error ( "Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  scriptDirectory  =  "" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  locateFile ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "locateFile" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  Module [ "locateFile" ] ( path ,  scriptDirectory ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  scriptDirectory  +  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  read _ ,  readBinary ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  nodeFS ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  nodePath ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ENVIRONMENT _IS _NODE )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ENVIRONMENT _IS _WORKER )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  require ( "path" ) . dirname ( scriptDirectory )  +  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  _ _dirname  +  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 read _  =  function  shell _read ( filename ,  binary )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! nodeFS )  nodeFS  =  require ( "fs" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! nodePath )  nodePath  =  require ( "path" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  filename  =  nodePath [ "normalize" ] ( filename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  nodeFS [ "readFileSync" ] ( filename ,  binary  ?  null  :  "utf8" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readBinary  =  function  readBinary ( filename )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  read _ ( filename ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ret . buffer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret  =  new  Uint8Array ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( ret . buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( process [ "argv" ] . length  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  thisProgram  =  process [ "argv" ] [ 1 ] . replace ( /\\/g ,  "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 arguments _  =  process [ "argv" ] . slice ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 process [ "on" ] ( "uncaughtException" ,  function ( ex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( ex  instanceof  ExitStatus ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  ex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 process [ "on" ] ( "unhandledRejection" ,  abort ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 quit _  =  function ( status )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  process [ "exit" ] ( status ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "inspect" ]  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  "[Emscripten Module object]" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  if  ( ENVIRONMENT _IS _SHELL )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  read  !=  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read _  =  function  shell _read ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  read ( f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readBinary  =  function  readBinary ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  readbuffer  ===  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Uint8Array ( readbuffer ( f ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  data  =  read ( f ,  "binary" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  data  ===  "object" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  scriptArgs  !=  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  arguments _  =  scriptArgs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  if  ( typeof  arguments  !=  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  arguments _  =  arguments ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  quit  ===  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  quit _  =  function ( status )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   quit ( status ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  print  !==  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  console  ===  "undefined" )  console  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  console . log  =  print ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  console . warn  =  console . error  =  typeof  printErr  !==  "undefined"  ?  printErr  :  print ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  if  ( ENVIRONMENT _IS _WEB  ||  ENVIRONMENT _IS _WORKER )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ENVIRONMENT _IS _WORKER )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  self . location . href ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  if  ( typeof  document  !==  "undefined"  &&  document . currentScript )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  document . currentScript . src ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( _scriptDir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  _scriptDir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( scriptDirectory . indexOf ( "blob:" )  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  scriptDirectory . substr ( 0 ,  scriptDirectory . lastIndexOf ( "/" )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  scriptDirectory  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read _  =  function ( url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  xhr  =  new  XMLHttpRequest ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   xhr . open ( "GET" ,  url ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   xhr . send ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  xhr . responseText ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ENVIRONMENT _IS _WORKER )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   readBinary  =  function ( url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  xhr  =  new  XMLHttpRequest ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . open ( "GET" ,  url ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . responseType  =  "arraybuffer" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . send ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  Uint8Array ( xhr . response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 throw  new  Error ( "environment detection error" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  out  =  Module [ "print" ]  ||  console . log . bind ( console ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  err  =  Module [ "printErr" ]  ||  console . warn . bind ( console ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								for  ( key  in  moduleOverrides )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( moduleOverrides . hasOwnProperty ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ key ]  =  moduleOverrides [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								moduleOverrides  =  null ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "arguments" ] )  arguments _  =  Module [ "arguments" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "arguments" ) )  Object . defineProperty ( Module ,  "arguments" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "thisProgram" ] )  thisProgram  =  Module [ "thisProgram" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "thisProgram" ) )  Object . defineProperty ( Module ,  "thisProgram" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "quit" ] )  quit _  =  Module [ "quit" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "quit" ) )  Object . defineProperty ( Module ,  "quit" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "memoryInitializerPrefixURL" ]  ===  "undefined" ,  "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "pthreadMainPrefixURL" ]  ===  "undefined" ,  "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "cdInitializerPrefixURL" ]  ===  "undefined" ,  "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "filePackagePrefixURL" ]  ===  "undefined" ,  "Module.filePackagePrefixURL option was removed, use Module.locateFile instead" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "read" ]  ===  "undefined" ,  "Module.read option was removed (modify read_ in JS)" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "readAsync" ]  ===  "undefined" ,  "Module.readAsync option was removed (modify readAsync in JS)" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "readBinary" ]  ===  "undefined" ,  "Module.readBinary option was removed (modify readBinary in JS)" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "setWindowTitle" ]  ===  "undefined" ,  "Module.setWindowTitle option was removed (modify setWindowTitle in JS)" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Module [ "TOTAL_MEMORY" ]  ===  "undefined" ,  "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "read" ) )  Object . defineProperty ( Module ,  "read" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "readAsync" ) )  Object . defineProperty ( Module ,  "readAsync" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "readBinary" ) )  Object . defineProperty ( Module ,  "readBinary" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setWindowTitle" ) )  Object . defineProperty ( Module ,  "setWindowTitle" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  STACK _ALIGN  =  16 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  alignMemory ( size ,  factor )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! factor )  factor  =  STACK _ALIGN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  Math . ceil ( size  /  factor )  *  factor ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  warnOnce ( text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! warnOnce . shown )  warnOnce . shown  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! warnOnce . shown [ text ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  warnOnce . shown [ text ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  err ( text ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  convertJsFunctionToWasm ( func ,  sig )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  WebAssembly . Function  ===  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  typeNames  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "i" :  "i32" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "j" :  "i64" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "f" :  "f32" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "d" :  "f64" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  type  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parameters :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   results :  sig [ 0 ]  ==  "v"  ?  [ ]  :  [  typeNames [ sig [ 0 ] ]  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  1 ;  i  <  sig . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   type . parameters . push ( typeNames [ sig [ i ] ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  WebAssembly . Function ( type ,  func ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  typeSection  =  [  1 ,  0 ,  1 ,  96  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  sigRet  =  sig . slice ( 0 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  sigParam  =  sig . slice ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  typeCodes  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "i" :  127 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "j" :  126 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "f" :  125 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "d" :  124 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 typeSection . push ( sigParam . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  i  =  0 ;  i  <  sigParam . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typeSection . push ( typeCodes [ sigParam [ i ] ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( sigRet  ==  "v" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typeSection . push ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typeSection  =  typeSection . concat ( [  1 ,  typeCodes [ sigRet ]  ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 typeSection [ 1 ]  =  typeSection . length  -  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  bytes  =  new  Uint8Array ( [  0 ,  97 ,  115 ,  109 ,  1 ,  0 ,  0 ,  0  ] . concat ( typeSection ,  [  2 ,  7 ,  1 ,  1 ,  101 ,  1 ,  102 ,  0 ,  0 ,  7 ,  5 ,  1 ,  1 ,  102 ,  0 ,  0  ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  module  =  new  WebAssembly . Module ( bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  instance  =  new  WebAssembly . Instance ( module ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "e" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "f" :  func 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  wrappedFunc  =  instance . exports [ "f" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  wrappedFunc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  freeTableIndexes  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  functionsInTableMap ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getEmptyTableSlot ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( freeTableIndexes . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  freeTableIndexes . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wasmTable . grow ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( err  instanceof  RangeError ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  throw  "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH." ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  wasmTable . length  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addFunctionWasm ( func ,  sig )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! functionsInTableMap )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  functionsInTableMap  =  new  WeakMap ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  wasmTable . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  item  =  wasmTable . get ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( item )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    functionsInTableMap . set ( item ,  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( functionsInTableMap . has ( func ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  functionsInTableMap . get ( func ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  ret  =  getEmptyTableSlot ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wasmTable . set ( ret ,  func ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( err  instanceof  TypeError ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  sig  !==  "undefined" ,  "Missing signature argument to addFunction: "  +  func ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  wrapped  =  convertJsFunctionToWasm ( func ,  sig ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wasmTable . set ( ret ,  wrapped ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 functionsInTableMap . set ( func ,  ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addFunction ( func ,  sig )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( typeof  func  !==  "undefined" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  addFunctionWasm ( func ,  sig ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wasmBinary ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "wasmBinary" ] )  wasmBinary  =  Module [ "wasmBinary" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "wasmBinary" ) )  Object . defineProperty ( Module ,  "wasmBinary" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  noExitRuntime ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "noExitRuntime" ] )  noExitRuntime  =  Module [ "noExitRuntime" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "noExitRuntime" ) )  Object . defineProperty ( Module ,  "noExitRuntime" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( typeof  WebAssembly  !==  "object" )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "no native wasm support detected" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wasmMemory ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ABORT  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  assert ( condition ,  text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! condition )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Assertion failed: "  +  text ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getCFunc ( ident )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  func  =  Module [ "_"  +  ident ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( func ,  "Cannot call unknown function "  +  ident  +  ", make sure it is exported" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ccall ( ident ,  returnType ,  argTypes ,  args ,  opts )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  toC  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "string" :  function ( str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ret  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( str  !==  null  &&  str  !==  undefined  &&  str  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  len  =  ( str . length  <<  2 )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ret  =  stackAlloc ( len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stringToUTF8 ( str ,  ret ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "array" :  function ( arr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ret  =  stackAlloc ( arr . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   writeArrayToMemory ( arr ,  ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  convertReturnValue ( ret )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( returnType  ===  "string" )  return  UTF8ToString ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( returnType  ===  "boolean" )  return  Boolean ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  func  =  getCFunc ( ident ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  cArgs  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  stack  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( returnType  !==  "array" ,  'Return type should not be "array".' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  args . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  converter  =  toC [ argTypes [ i ] ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( converter )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( stack  ===  0 )  stack  =  stackSave ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cArgs [ i ]  =  converter ( args [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cArgs [ i ]  =  args [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  ret  =  func . apply ( null ,  cArgs ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ret  =  convertReturnValue ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( stack  !==  0 )  stackRestore ( stack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  UTF8Decoder  =  typeof  TextDecoder  !==  "undefined"  ?  new  TextDecoder ( "utf8" )  :  undefined ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  UTF8ArrayToString ( heap ,  idx ,  maxBytesToRead )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  endIdx  =  idx  +  maxBytesToRead ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  endPtr  =  idx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( heap [ endPtr ]  &&  ! ( endPtr  >=  endIdx ) )  ++ endPtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( endPtr  -  idx  >  16  &&  heap . subarray  &&  UTF8Decoder )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  UTF8Decoder . decode ( heap . subarray ( idx ,  endPtr ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  str  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( idx  <  endPtr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  u0  =  heap [ idx ++ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! ( u0  &  128 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    str  +=  String . fromCharCode ( u0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  u1  =  heap [ idx ++ ]  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ( u0  &  224 )  ==  192 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    str  +=  String . fromCharCode ( ( u0  &  31 )  <<  6  |  u1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  u2  =  heap [ idx ++ ]  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ( u0  &  240 )  ==  224 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    u0  =  ( u0  &  15 )  <<  12  |  u1  <<  6  |  u2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( u0  &  248 )  !=  240 )  warnOnce ( "Invalid UTF-8 leading byte 0x"  +  u0 . toString ( 16 )  +  " encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    u0  =  ( u0  &  7 )  <<  18  |  u1  <<  12  |  u2  <<  6  |  heap [ idx ++ ]  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( u0  <  65536 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    str  +=  String . fromCharCode ( u0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  ch  =  u0  -  65536 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    str  +=  String . fromCharCode ( 55296  |  ch  >>  10 ,  56320  |  ch  &  1023 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  str ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  UTF8ToString ( ptr ,  maxBytesToRead )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ptr  ?  UTF8ArrayToString ( HEAPU8 ,  ptr ,  maxBytesToRead )  :  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  stringToUTF8Array ( str ,  heap ,  outIdx ,  maxBytesToWrite )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! ( maxBytesToWrite  >  0 ) )  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  startIdx  =  outIdx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  endIdx  =  outIdx  +  maxBytesToWrite  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  i  =  0 ;  i  <  str . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  u  =  str . charCodeAt ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( u  >=  55296  &&  u  <=  57343 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  u1  =  str . charCodeAt ( ++ i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   u  =  65536  +  ( ( u  &  1023 )  <<  10 )  |  u1  &  1023 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( u  <=  127 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( outIdx  >=  endIdx )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  u ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( u  <=  2047 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( outIdx  +  1  >=  endIdx )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  192  |  u  >>  6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  128  |  u  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( u  <=  65535 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( outIdx  +  2  >=  endIdx )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  224  |  u  >>  12 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  128  |  u  >>  6  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  128  |  u  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( outIdx  +  3  >=  endIdx )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( u  >=  2097152 )  warnOnce ( "Invalid Unicode code point 0x"  +  u . toString ( 16 )  +  " encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  240  |  u  >>  18 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  128  |  u  >>  12  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  128  |  u  >>  6  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   heap [ outIdx ++ ]  =  128  |  u  &  63 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 heap [ outIdx ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  outIdx  -  startIdx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  stringToUTF8 ( str ,  outPtr ,  maxBytesToWrite )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( typeof  maxBytesToWrite  ==  "number" ,  "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  stringToUTF8Array ( str ,  HEAPU8 ,  outPtr ,  maxBytesToWrite ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  lengthBytesUTF8 ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  len  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  i  =  0 ;  i  <  str . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  u  =  str . charCodeAt ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( u  >=  55296  &&  u  <=  57343 )  u  =  65536  +  ( ( u  &  1023 )  <<  10 )  |  str . charCodeAt ( ++ i )  &  1023 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( u  <=  127 )  ++ len ;  else  if  ( u  <=  2047 )  len  +=  2 ;  else  if  ( u  <=  65535 )  len  +=  3 ;  else  len  +=  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typeof  TextDecoder  !==  "undefined"  ?  new  TextDecoder ( "utf-16le" )  :  undefined ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  allocateUTF8 ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  size  =  lengthBytesUTF8 ( str )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  ret  =  _malloc ( size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ret )  stringToUTF8Array ( str ,  HEAP8 ,  ret ,  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  allocateUTF8OnStack ( str )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  size  =  lengthBytesUTF8 ( str )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  ret  =  stackAlloc ( size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 stringToUTF8Array ( str ,  HEAP8 ,  ret ,  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  writeArrayToMemory ( array ,  buffer )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( array . length  >=  0 ,  "writeArrayToMemory array must have a length (should be an array or typed array)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP8 . set ( array ,  buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  writeAsciiToMemory ( str ,  buffer ,  dontAddNull )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  i  =  0 ;  i  <  str . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( str . charCodeAt ( i )  ===  str . charCodeAt ( i )  &  255 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP8 [ buffer ++  >>  0 ]  =  str . charCodeAt ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! dontAddNull )  HEAP8 [ buffer  >>  0 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  alignUp ( x ,  multiple )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( x  %  multiple  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  x  +=  multiple  -  x  %  multiple ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  buffer ,  HEAP8 ,  HEAPU8 ,  HEAP16 ,  HEAP32 ,  HEAPU32 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  updateGlobalBufferAndViews ( buf )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 buffer  =  buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAP8" ]  =  HEAP8  =  new  Int8Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAP16" ]  =  HEAP16  =  new  Int16Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAP32" ]  =  HEAP32  =  new  Int32Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAPU8" ]  =  HEAPU8  =  new  Uint8Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAPU16" ]  =  new  Uint16Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAPU32" ]  =  HEAPU32  =  new  Uint32Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAPF32" ]  =  new  Float32Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Module [ "HEAPF64" ]  =  new  Float64Array ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  TOTAL _STACK  =  5242880 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "TOTAL_STACK" ] )  assert ( TOTAL _STACK  ===  Module [ "TOTAL_STACK" ] ,  "the stack size can no longer be determined at runtime" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  INITIAL _MEMORY  =  Module [ "INITIAL_MEMORY" ]  ||  33554432 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "INITIAL_MEMORY" ) )  Object . defineProperty ( Module ,  "INITIAL_MEMORY" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( INITIAL _MEMORY  >=  TOTAL _STACK ,  "INITIAL_MEMORY should be larger than TOTAL_STACK, was "  +  INITIAL _MEMORY  +  "! (TOTAL_STACK="  +  TOTAL _STACK  +  ")" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( typeof  Int32Array  !==  "undefined"  &&  typeof  Float64Array  !==  "undefined"  &&  Int32Array . prototype . subarray  !==  undefined  &&  Int32Array . prototype . set  !==  undefined ,  "JS engine does not provide full typed array support" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( ! Module [ "wasmMemory" ] ,  "Use of `wasmMemory` detected.  Use -s IMPORTED_MEMORY to define wasmMemory externally" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( INITIAL _MEMORY  ==  33554432 ,  "Detected runtime INITIAL_MEMORY setting.  Use -s IMPORTED_MEMORY to define wasmMemory dynamically" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wasmTable ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  writeStackCookie ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  max  =  _emscripten _stack _get _end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( ( max  &  3 )  ==  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAPU32 [ ( max  >>  2 )  +  1 ]  =  34821223 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAPU32 [ ( max  >>  2 )  +  2 ]  =  2310721022 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ 0 ]  =  1668509029 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkStackCookie ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ABORT )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  max  =  _emscripten _stack _get _end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  cookie1  =  HEAPU32 [ ( max  >>  2 )  +  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  cookie2  =  HEAPU32 [ ( max  >>  2 )  +  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( cookie1  !=  34821223  ||  cookie2  !=  2310721022 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"  +  cookie2 . toString ( 16 )  +  " "  +  cookie1 . toString ( 16 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( HEAP32 [ 0 ]  !==  1668509029 )  abort ( "Runtime error: The application has corrupted its heap memory area (address zero)!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  h16  =  new  Int16Array ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  h8  =  new  Int8Array ( h16 . buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 h16 [ 0 ]  =  25459 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( h8 [ 0 ]  !==  115  ||  h8 [ 1 ]  !==  99 )  throw  "Runtime error: expected the system to be little-endian!" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _ATPRERUN _ _  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _ATINIT _ _  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _ATMAIN _ _  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _ATPOSTRUN _ _  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  runtimeInitialized  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  runtimeExited  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_ _ATINIT _ _ . push ( {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 func :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _ _ _wasm _call _ctors ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  preRun ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "preRun" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  Module [ "preRun" ]  ==  "function" )  Module [ "preRun" ]  =  [  Module [ "preRun" ]  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( Module [ "preRun" ] . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   addOnPreRun ( Module [ "preRun" ] . shift ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 callRuntimeCallbacks ( _ _ATPRERUN _ _ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  initRuntime ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 checkStackCookie ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( ! runtimeInitialized ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 runtimeInitialized  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! Module [ "noFSInit" ]  &&  ! FS . init . initialized )  FS . init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 TTY . init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 callRuntimeCallbacks ( _ _ATINIT _ _ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  preMain ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 checkStackCookie ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 FS . ignorePermissions  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 callRuntimeCallbacks ( _ _ATMAIN _ _ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exitRuntime ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 checkStackCookie ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 runtimeExited  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  postRun ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 checkStackCookie ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "postRun" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  Module [ "postRun" ]  ==  "function" )  Module [ "postRun" ]  =  [  Module [ "postRun" ]  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( Module [ "postRun" ] . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   addOnPostRun ( Module [ "postRun" ] . shift ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 callRuntimeCallbacks ( _ _ATPOSTRUN _ _ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addOnPreRun ( cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _ _ATPRERUN _ _ . unshift ( cb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addOnPostRun ( cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _ _ATPOSTRUN _ _ . unshift ( cb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( Math . imul ,  "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( Math . fround ,  "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( Math . clz32 ,  "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								assert ( Math . trunc ,  "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  runDependencies  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  runDependencyWatcher  =  null ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  dependenciesFulfilled  =  null ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  runDependencyTracking  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getUniqueRunDependency ( id )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  orig  =  id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! runDependencyTracking [ id ] )  return  id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  id  =  orig  +  Math . random ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addRunDependency ( id )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 runDependencies ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "monitorRunDependencies" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "monitorRunDependencies" ] ( runDependencies ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( ! runDependencyTracking [ id ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  runDependencyTracking [ id ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( runDependencyWatcher  ===  null  &&  typeof  setInterval  !==  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   runDependencyWatcher  =  setInterval ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ABORT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     clearInterval ( runDependencyWatcher ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     runDependencyWatcher  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  shown  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  dep  in  runDependencyTracking )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( ! shown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      shown  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      err ( "still waiting on run dependencies:" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     err ( "dependency: "  +  dep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( shown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     err ( "(end of list)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ,  1e4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  err ( "warning: run dependency added without ID" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  removeRunDependency ( id )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 runDependencies -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "monitorRunDependencies" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "monitorRunDependencies" ] ( runDependencies ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( runDependencyTracking [ id ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  delete  runDependencyTracking [ id ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  err ( "warning: run dependency removed without ID" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( runDependencies  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( runDependencyWatcher  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   clearInterval ( runDependencyWatcher ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   runDependencyWatcher  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( dependenciesFulfilled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  callback  =  dependenciesFulfilled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   dependenciesFulfilled  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   callback ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "preloadedImages" ]  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "preloadedAudios" ]  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  abort ( what )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "onAbort" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "onAbort" ] ( what ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 what  +=  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 err ( what ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ABORT  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  output  =  "abort("  +  what  +  ") at "  +  stackTrace ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 what  =  output ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  e  =  new  WebAssembly . RuntimeError ( what ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readyPromiseReject ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  hasPrefix ( str ,  prefix )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  String . prototype . startsWith  ?  str . startsWith ( prefix )  :  str . indexOf ( prefix )  ===  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  dataURIPrefix  =  "data:application/octet-stream;base64," ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isDataURI ( filename )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  hasPrefix ( filename ,  dataURIPrefix ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createExportWrapper ( name ,  fixedasm )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  displayName  =  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  asm  =  fixedasm ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! fixedasm )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   asm  =  Module [ "asm" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( runtimeInitialized ,  "native function `"  +  displayName  +  "` called before runtime initialization" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( ! runtimeExited ,  "native function `"  +  displayName  +  "` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! asm [ name ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   assert ( asm [ name ] ,  "exported native function `"  +  displayName  +  "` not found" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  asm [ name ] . apply ( null ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wasmBinaryFile  =  "trace_processor.wasm" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! isDataURI ( wasmBinaryFile ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 wasmBinaryFile  =  locateFile ( wasmBinaryFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getBinary ( file )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( file  ==  wasmBinaryFile  &&  wasmBinary )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Uint8Array ( wasmBinary ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( readBinary )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  readBinary ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  instantiateSync ( file ,  info )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  instance ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  module ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  binary ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  binary  =  getBinary ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  module  =  new  WebAssembly . Module ( binary ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  instance  =  new  WebAssembly . Instance ( module ,  info ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  str  =  e . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  err ( "failed to compile wasm module: "  +  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( str . indexOf ( "imported Memory" )  >=  0  ||  str . indexOf ( "memory import" )  >=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  [  instance ,  module  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createWasm ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  info  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "env" :  asmLibraryArg , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "wasi_snapshot_preview1" :  asmLibraryArg 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  receiveInstance ( instance ,  module )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  exports  =  instance . exports ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "asm" ]  =  exports ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wasmMemory  =  Module [ "asm" ] [ "memory" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( wasmMemory ,  "memory not found in wasm exports" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  updateGlobalBufferAndViews ( wasmMemory . buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wasmTable  =  Module [ "asm" ] [ "__indirect_function_table" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( wasmTable ,  "table not found in wasm exports" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  removeRunDependency ( "wasm-instantiate" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 addRunDependency ( "wasm-instantiate" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "instantiateWasm" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  exports  =  Module [ "instantiateWasm" ] ( info ,  receiveInstance ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  exports ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "Module.instantiateWasm callback failed with error: "  +  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  result  =  instantiateSync ( wasmBinaryFile ,  info ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 receiveInstance ( result [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  Module [ "asm" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  tempDouble ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  tempI64 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  callRuntimeCallbacks ( callbacks )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( callbacks . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  callback  =  callbacks . shift ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  callback  ==  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   callback ( Module ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  func  =  callback . func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  func  ===  "number" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( callback . arg  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wasmTable . get ( func ) ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wasmTable . get ( func ) ( callback . arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   func ( callback . arg  ===  undefined  ?  null  :  callback . arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  demangle ( func )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 warnOnce ( "warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  demangleAll ( text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  regex  =  /\b_Z[\w\d_]+/g ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  text . replace ( regex ,  function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  y  =  demangle ( x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  x  ===  y  ?  x  :  y  +  " ["  +  x  +  "]" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  jsStackTrace ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  error  =  new  Error ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! error . stack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  Error ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   error  =  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! error . stack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  "(no stack trace available)" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  error . stack . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  stackTrace ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  js  =  jsStackTrace ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "extraStackTrace" ] )  js  +=  "\n"  +  Module [ "extraStackTrace" ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  demangleAll ( js ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _atexit ( func ,  arg )  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _cxa _atexit ( a0 ,  a1 )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  _atexit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _tzset ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( _tzset . called )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _tzset . called  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  currentYear  =  new  Date ( ) . getFullYear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  winter  =  new  Date ( currentYear ,  0 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  summer  =  new  Date ( currentYear ,  6 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  winterOffset  =  winter . getTimezoneOffset ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  summerOffset  =  summer . getTimezoneOffset ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  stdTimezoneOffset  =  Math . max ( winterOffset ,  summerOffset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ _ _get _timezone ( )  >>  2 ]  =  stdTimezoneOffset  *  60 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ _ _get _daylight ( )  >>  2 ]  =  Number ( winterOffset  !=  summerOffset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  extractZone ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  match  =  date . toTimeString ( ) . match ( /\(([A-Za-z ]+)\)$/ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  match  ?  match [ 1 ]  :  "GMT" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  winterName  =  extractZone ( winter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  summerName  =  extractZone ( summer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  winterNamePtr  =  allocateUTF8 ( winterName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  summerNamePtr  =  allocateUTF8 ( summerName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( summerOffset  <  winterOffset )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ _ _get _tzname ( )  >>  2 ]  =  winterNamePtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ _ _get _tzname ( )  +  4  >>  2 ]  =  summerNamePtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ _ _get _tzname ( )  >>  2 ]  =  summerNamePtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ _ _get _tzname ( )  +  4  >>  2 ]  =  winterNamePtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _localtime _r ( time ,  tmPtr )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _tzset ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  date  =  new  Date ( HEAP32 [ time  >>  2 ]  *  1e3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  >>  2 ]  =  date . getSeconds ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  4  >>  2 ]  =  date . getMinutes ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  8  >>  2 ]  =  date . getHours ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  12  >>  2 ]  =  date . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  16  >>  2 ]  =  date . getMonth ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  20  >>  2 ]  =  date . getFullYear ( )  -  1900 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  24  >>  2 ]  =  date . getDay ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  start  =  new  Date ( date . getFullYear ( ) ,  0 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  yday  =  ( date . getTime ( )  -  start . getTime ( ) )  /  ( 1e3  *  60  *  60  *  24 )  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  28  >>  2 ]  =  yday ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  36  >>  2 ]  =  - ( date . getTimezoneOffset ( )  *  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  summerOffset  =  new  Date ( date . getFullYear ( ) ,  6 ,  1 ) . getTimezoneOffset ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  winterOffset  =  start . getTimezoneOffset ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  dst  =  ( summerOffset  !=  winterOffset  &&  date . getTimezoneOffset ( )  ==  Math . min ( winterOffset ,  summerOffset ) )  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  32  >>  2 ]  =  dst ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  zonePtr  =  HEAP32 [ _ _get _tzname ( )  +  ( dst  ?  4  :  0 )  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ tmPtr  +  40  >>  2 ]  =  zonePtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  tmPtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _localtime _r ( a0 ,  a1 )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  _localtime _r ( a0 ,  a1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  PATH  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 splitPath :  function ( filename )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  splitPathRe  =  /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  splitPathRe . exec ( filename ) . slice ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 normalizeArray :  function ( parts ,  allowAboveRoot )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  up  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  parts . length  -  1 ;  i  >=  0 ;  i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  last  =  parts [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( last  ===  "." )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parts . splice ( i ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( last  ===  ".." )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parts . splice ( i ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    up ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( up )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parts . splice ( i ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    up -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( allowAboveRoot )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( ; up ;  up -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parts . unshift ( ".." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  parts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 normalize :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isAbsolute  =  path . charAt ( 0 )  ===  "/" ,  trailingSlash  =  path . substr ( - 1 )  ===  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  PATH . normalizeArray ( path . split ( "/" ) . filter ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ! ! p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ,  ! isAbsolute ) . join ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! path  &&  ! isAbsolute )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path  =  "." ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path  &&  trailingSlash )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path  +=  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( isAbsolute  ?  "/"  :  "" )  +  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 dirname :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  result  =  PATH . splitPath ( path ) ,  root  =  result [ 0 ] ,  dir  =  result [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! root  &&  ! dir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  "." ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( dir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   dir  =  dir . substr ( 0 ,  dir . length  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  root  +  dir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 basename :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path  ===  "/" )  return  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  PATH . normalize ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  path . replace ( /\/$/ ,  "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lastSlash  =  path . lastIndexOf ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( lastSlash  ===  - 1 )  return  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  path . substr ( lastSlash  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 extname :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  PATH . splitPath ( path ) [ 3 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 join :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  paths  =  Array . prototype . slice . call ( arguments ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  PATH . normalize ( paths . join ( "/" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 join2 :  function ( l ,  r )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  PATH . normalize ( l  +  "/"  +  r ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRandomDevice ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  crypto  ===  "object"  &&  typeof  crypto [ "getRandomValues" ]  ===  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  randomBuffer  =  new  Uint8Array ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   crypto . getRandomValues ( randomBuffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  randomBuffer [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  if  ( ENVIRONMENT _IS _NODE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  crypto _module  =  require ( "crypto" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  crypto _module [ "randomBytes" ] ( 1 ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  PATH _FS  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 resolve :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  resolvedPath  =  "" ,  resolvedAbsolute  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  arguments . length  -  1 ;  i  >=  - 1  &&  ! resolvedAbsolute ;  i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  path  =  i  >=  0  ?  arguments [ i ]  :  FS . cwd ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( typeof  path  !==  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  TypeError ( "Arguments to path.resolve must be strings" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( ! path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   resolvedPath  =  path  +  "/"  +  resolvedPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   resolvedAbsolute  =  path . charAt ( 0 )  ===  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  resolvedPath  =  PATH . normalizeArray ( resolvedPath . split ( "/" ) . filter ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ! ! p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ,  ! resolvedAbsolute ) . join ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( resolvedAbsolute  ?  "/"  :  "" )  +  resolvedPath  ||  "." ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 relative :  function ( from ,  to )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  from  =  PATH _FS . resolve ( from ) . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  to  =  PATH _FS . resolve ( to ) . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  trim ( arr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  start  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( ; start  <  arr . length ;  start ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( arr [ start ]  !==  "" )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  end  =  arr . length  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( ; end  >=  0 ;  end -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( arr [ end ]  !==  "" )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( start  >  end )  return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  arr . slice ( start ,  end  -  start  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  fromParts  =  trim ( from . split ( "/" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  toParts  =  trim ( to . split ( "/" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  length  =  Math . min ( fromParts . length ,  toParts . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  samePartsLength  =  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( fromParts [ i ]  !==  toParts [ i ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    samePartsLength  =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  outputParts  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  samePartsLength ;  i  <  fromParts . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   outputParts . push ( ".." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  outputParts  =  outputParts . concat ( toParts . slice ( samePartsLength ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  outputParts . join ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  TTY  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ttys :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 init :  function ( )  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 shutdown :  function ( )  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 register :  function ( dev ,  ops )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TTY . ttys [ dev ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   input :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   output :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ops :  ops 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . registerDevice ( dev ,  TTY . stream _ops ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 stream _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  open :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  tty  =  TTY . ttys [ stream . node . rdev ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! tty )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . tty  =  tty ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . seekable  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  close :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . tty . ops . flush ( stream . tty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  flush :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . tty . ops . flush ( stream . tty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read :  function ( stream ,  buffer ,  offset ,  length ,  pos )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! stream . tty  ||  ! stream . tty . ops . get _char )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  bytesRead  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( var  i  =  0 ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     result  =  stream . tty . ops . get _char ( stream . tty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     throw  new  FS . ErrnoError ( 29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( result  ===  undefined  &&  bytesRead  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     throw  new  FS . ErrnoError ( 6 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( result  ===  null  ||  result  ===  undefined )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytesRead ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer [ offset  +  i ]  =  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( bytesRead )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream . node . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  bytesRead ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  write :  function ( stream ,  buffer ,  offset ,  length ,  pos )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! stream . tty  ||  ! stream . tty . ops . put _char )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream . tty . ops . put _char ( stream . tty ,  buffer [ offset  +  i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream . node . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 default _tty _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get _char :  function ( tty )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! tty . input . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ENVIRONMENT _IS _NODE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     var  BUFSIZE  =  256 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     var  buf  =  Buffer . alloc  ?  Buffer . alloc ( BUFSIZE )  :  new  Buffer ( BUFSIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     var  bytesRead  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      bytesRead  =  nodeFS . readSync ( process . stdin . fd ,  buf ,  0 ,  BUFSIZE ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( e . toString ( ) . indexOf ( "EOF" )  !=  - 1 )  bytesRead  =  0 ;  else  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( bytesRead  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      result  =  buf . slice ( 0 ,  bytesRead ) . toString ( "utf-8" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      result  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( typeof  window  !=  "undefined"  &&  typeof  window . prompt  ==  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     result  =  window . prompt ( "Input: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( result  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      result  +=  "\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( typeof  readline  ==  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     result  =  readline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( result  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      result  +=  "\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . input  =  intArrayFromString ( result ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  tty . input . shift ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  put _char :  function ( tty ,  val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( val  ===  null  ||  val  ===  10 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    out ( UTF8ArrayToString ( tty . output ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . output  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( val  !=  0 )  tty . output . push ( val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  flush :  function ( tty )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( tty . output  &&  tty . output . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    out ( UTF8ArrayToString ( tty . output ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . output  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 default _tty1 _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  put _char :  function ( tty ,  val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( val  ===  null  ||  val  ===  10 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err ( UTF8ArrayToString ( tty . output ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . output  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( val  !=  0 )  tty . output . push ( val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  flush :  function ( tty )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( tty . output  &&  tty . output . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err ( UTF8ArrayToString ( tty . output ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . output  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mmapAlloc ( size )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  alignedSize  =  alignMemory ( size ,  16384 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  ptr  =  _malloc ( alignedSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( size  <  alignedSize )  HEAP8 [ ptr  +  size ++ ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  MEMFS  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ops _table :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mount :  function ( mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  MEMFS . createNode ( null ,  "/" ,  16384  |  511 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createNode :  function ( parent ,  name ,  mode ,  dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isBlkdev ( mode )  ||  FS . isFIFO ( mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! MEMFS . ops _table )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   MEMFS . ops _table  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dir :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      getattr :  MEMFS . node _ops . getattr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setattr :  MEMFS . node _ops . setattr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      lookup :  MEMFS . node _ops . lookup , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      mknod :  MEMFS . node _ops . mknod , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rename :  MEMFS . node _ops . rename , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      unlink :  MEMFS . node _ops . unlink , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rmdir :  MEMFS . node _ops . rmdir , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      readdir :  MEMFS . node _ops . readdir , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      symlink :  MEMFS . node _ops . symlink 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      llseek :  MEMFS . stream _ops . llseek 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    file :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      getattr :  MEMFS . node _ops . getattr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setattr :  MEMFS . node _ops . setattr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      llseek :  MEMFS . stream _ops . llseek , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      read :  MEMFS . stream _ops . read , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      write :  MEMFS . stream _ops . write , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      allocate :  MEMFS . stream _ops . allocate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      mmap :  MEMFS . stream _ops . mmap , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      msync :  MEMFS . stream _ops . msync 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    link :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      getattr :  MEMFS . node _ops . getattr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setattr :  MEMFS . node _ops . setattr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      readlink :  MEMFS . node _ops . readlink 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    chrdev :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      getattr :  MEMFS . node _ops . getattr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setattr :  MEMFS . node _ops . setattr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream :  FS . chrdev _stream _ops 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  FS . createNode ( parent ,  name ,  mode ,  dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . node _ops  =  MEMFS . ops _table . dir . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . stream _ops  =  MEMFS . ops _table . dir . stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( FS . isFile ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . node _ops  =  MEMFS . ops _table . file . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . stream _ops  =  MEMFS . ops _table . file . stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . usedBytes  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( FS . isLink ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . node _ops  =  MEMFS . ops _table . link . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . stream _ops  =  MEMFS . ops _table . link . stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( FS . isChrdev ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . node _ops  =  MEMFS . ops _table . chrdev . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . stream _ops  =  MEMFS . ops _table . chrdev . stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent . contents [ name ]  =  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent . timestamp  =  node . timestamp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getFileDataAsRegularArray :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( node . contents  &&  node . contents . subarray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  arr  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( var  i  =  0 ;  i  <  node . usedBytes ;  ++ i )  arr . push ( node . contents [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  arr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getFileDataAsTypedArray :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . contents )  return  new  Uint8Array ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( node . contents . subarray )  return  node . contents . subarray ( 0 ,  node . usedBytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  Uint8Array ( node . contents ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 expandFileStorage :  function ( node ,  newCapacity )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  prevCapacity  =  node . contents  ?  node . contents . length  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( prevCapacity  >=  newCapacity )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  CAPACITY _DOUBLING _MAX  =  1024  *  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  newCapacity  =  Math . max ( newCapacity ,  prevCapacity  *  ( prevCapacity  <  CAPACITY _DOUBLING _MAX  ?  2  :  1.125 )  >>>  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( prevCapacity  !=  0 )  newCapacity  =  Math . max ( newCapacity ,  256 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  oldContents  =  node . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . contents  =  new  Uint8Array ( newCapacity ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( node . usedBytes  >  0 )  node . contents . set ( oldContents . subarray ( 0 ,  node . usedBytes ) ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 resizeFileStorage :  function ( node ,  newSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( node . usedBytes  ==  newSize )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( newSize  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . usedBytes  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . contents  ||  node . contents . subarray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  oldContents  =  node . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  new  Uint8Array ( newSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( oldContents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . contents . set ( oldContents . subarray ( 0 ,  Math . min ( newSize ,  node . usedBytes ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . usedBytes  =  newSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . contents )  node . contents  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( node . contents . length  >  newSize )  node . contents . length  =  newSize ;  else  while  ( node . contents . length  <  newSize )  node . contents . push ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . usedBytes  =  newSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 node _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  getattr :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  attr  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . dev  =  FS . isChrdev ( node . mode )  ?  node . id  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . ino  =  node . id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . mode  =  node . mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . nlink  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . uid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . gid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . rdev  =  node . rdev ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    attr . size  =  4096 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( FS . isFile ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    attr . size  =  node . usedBytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( FS . isLink ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    attr . size  =  node . link . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    attr . size  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . atime  =  new  Date ( node . timestamp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . mtime  =  new  Date ( node . timestamp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . ctime  =  new  Date ( node . timestamp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . blksize  =  4096 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   attr . blocks  =  Math . ceil ( attr . size  /  attr . blksize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  attr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setattr :  function ( node ,  attr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( attr . mode  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . mode  =  attr . mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( attr . timestamp  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . timestamp  =  attr . timestamp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( attr . size  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MEMFS . resizeFileStorage ( node ,  attr . size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  lookup :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  FS . genericErrors [ 44 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mknod :  function ( parent ,  name ,  mode ,  dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  MEMFS . createNode ( parent ,  name ,  mode ,  dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rename :  function ( old _node ,  new _dir ,  new _name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isDir ( old _node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  new _node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     new _node  =  FS . lookupNode ( new _dir ,  new _name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( new _node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     for  ( var  i  in  new _node . contents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  FS . ErrnoError ( 55 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   delete  old _node . parent . contents [ old _node . name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   old _node . parent . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   old _node . name  =  new _name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   new _dir . contents [ new _name ]  =  old _node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   new _dir . timestamp  =  old _node . parent . timestamp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   old _node . parent  =  new _dir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unlink :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   delete  parent . contents [ name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rmdir :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  node  =  FS . lookupNode ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( var  i  in  node . contents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 55 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   delete  parent . contents [ name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  readdir :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  entries  =  [  "." ,  ".."  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( var  key  in  node . contents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! node . contents . hasOwnProperty ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    entries . push ( key ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  entries ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  symlink :  function ( parent ,  newname ,  oldpath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  node  =  MEMFS . createNode ( parent ,  newname ,  511  |  40960 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . link  =  oldpath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  readlink :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . isLink ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  node . link ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 stream _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read :  function ( stream ,  buffer ,  offset ,  length ,  position )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  contents  =  stream . node . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( position  >=  stream . node . usedBytes )  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  size  =  Math . min ( stream . node . usedBytes  -  position ,  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   assert ( size  >=  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( size  >  8  &&  contents . subarray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buffer . set ( contents . subarray ( position ,  position  +  size ) ,  offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  size ;  i ++ )  buffer [ offset  +  i ]  =  contents [ position  +  i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  write :  function ( stream ,  buffer ,  offset ,  length ,  position ,  canOwn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   assert ( ! ( buffer  instanceof  ArrayBuffer ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( buffer . buffer  ===  HEAP8 . buffer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canOwn  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! length )  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  node  =  stream . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( buffer . subarray  &&  ( ! node . contents  ||  node . contents . subarray ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( canOwn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     assert ( position  ===  0 ,  "canOwn must imply no weird position inside the file" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node . contents  =  buffer . subarray ( offset ,  offset  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node . usedBytes  =  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( node . usedBytes  ===  0  &&  position  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node . contents  =  buffer . slice ( offset ,  offset  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node . usedBytes  =  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( position  +  length  <=  node . usedBytes )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node . contents . set ( buffer . subarray ( offset ,  offset  +  length ) ,  position ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   MEMFS . expandFileStorage ( node ,  position  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( node . contents . subarray  &&  buffer . subarray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . contents . set ( buffer . subarray ( offset ,  offset  +  length ) ,  position ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     node . contents [ position  +  i ]  =  buffer [ offset  +  i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . usedBytes  =  Math . max ( node . usedBytes ,  position  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  llseek :  function ( stream ,  offset ,  whence )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  position  =  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( whence  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    position  +=  stream . position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( whence  ===  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( FS . isFile ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     position  +=  stream . node . usedBytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( position  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  allocate :  function ( stream ,  offset ,  length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   MEMFS . expandFileStorage ( stream . node ,  offset  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . node . usedBytes  =  Math . max ( stream . node . usedBytes ,  offset  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mmap :  function ( stream ,  address ,  length ,  position ,  prot ,  flags )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( address  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . isFile ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  allocated ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  contents  =  stream . node . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! ( flags  &  2 )  &&  contents . buffer  ===  buffer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allocated  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ptr  =  contents . byteOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( position  >  0  ||  position  +  length  <  contents . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( contents . subarray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      contents  =  contents . subarray ( position ,  position  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      contents  =  Array . prototype . slice . call ( contents ,  position ,  position  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allocated  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ptr  =  mmapAlloc ( length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! ptr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     throw  new  FS . ErrnoError ( 48 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HEAP8 . set ( contents ,  ptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ptr :  ptr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allocated :  allocated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  msync :  function ( stream ,  buffer ,  offset ,  length ,  mmapFlags )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . isFile ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( mmapFlags  &  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   MEMFS . stream _ops . write ( stream ,  buffer ,  0 ,  length ,  offset ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  WORKERFS  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 DIR _MODE :  16895 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 FILE _MODE :  33279 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 reader :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mount :  function ( mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( ENVIRONMENT _IS _WORKER ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! WORKERFS . reader )  WORKERFS . reader  =  new  FileReaderSync ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  root  =  WORKERFS . createNode ( null ,  "/" ,  WORKERFS . DIR _MODE ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  createdParents  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  ensureParent ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  parts  =  path . split ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  parent  =  root ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( var  i  =  0 ;  i  <  parts . length  -  1 ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  curr  =  parts . slice ( 0 ,  i  +  1 ) . join ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! createdParents [ curr ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     createdParents [ curr ]  =  WORKERFS . createNode ( parent ,  parts [ i ] ,  WORKERFS . DIR _MODE ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parent  =  createdParents [ curr ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  base ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  parts  =  path . split ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  parts [ parts . length  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Array . prototype . forEach . call ( mount . opts [ "files" ]  ||  [ ] ,  function ( file )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   WORKERFS . createNode ( ensureParent ( file . name ) ,  base ( file . name ) ,  WORKERFS . FILE _MODE ,  0 ,  file ,  file . lastModifiedDate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ( mount . opts [ "blobs" ]  ||  [ ] ) . forEach ( function ( obj )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   WORKERFS . createNode ( ensureParent ( obj [ "name" ] ) ,  base ( obj [ "name" ] ) ,  WORKERFS . FILE _MODE ,  0 ,  obj [ "data" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ( mount . opts [ "packages" ]  ||  [ ] ) . forEach ( function ( pack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   pack [ "metadata" ] . files . forEach ( function ( file )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  name  =  file . filename . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    WORKERFS . createNode ( ensureParent ( name ) ,  base ( name ) ,  WORKERFS . FILE _MODE ,  0 ,  pack [ "blob" ] . slice ( file . start ,  file . end ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  root ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createNode :  function ( parent ,  name ,  mode ,  dev ,  contents ,  mtime )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  FS . createNode ( parent ,  name ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . mode  =  mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . node _ops  =  WORKERFS . node _ops ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . stream _ops  =  WORKERFS . stream _ops ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . timestamp  =  ( mtime  ||  new  Date ( ) ) . getTime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( WORKERFS . FILE _MODE  !==  WORKERFS . DIR _MODE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( mode  ===  WORKERFS . FILE _MODE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . size  =  contents . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . size  =  4096 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent . contents [ name ]  =  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 node _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  getattr :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dev :  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ino :  node . id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mode :  node . mode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nlink :  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    uid :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    gid :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rdev :  undefined , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    size :  node . size , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    atime :  new  Date ( node . timestamp ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mtime :  new  Date ( node . timestamp ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ctime :  new  Date ( node . timestamp ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    blksize :  4096 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    blocks :  Math . ceil ( node . size  /  4096 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setattr :  function ( node ,  attr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( attr . mode  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . mode  =  attr . mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( attr . timestamp  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . timestamp  =  attr . timestamp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  lookup :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mknod :  function ( parent ,  name ,  mode ,  dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rename :  function ( oldNode ,  newDir ,  newName )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unlink :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rmdir :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  readdir :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  entries  =  [  "." ,  ".."  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   for  ( var  key  in  node . contents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! node . contents . hasOwnProperty ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    entries . push ( key ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  entries ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  symlink :  function ( parent ,  newName ,  oldPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  readlink :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 stream _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read :  function ( stream ,  buffer ,  offset ,  length ,  position )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( position  >=  stream . node . size )  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  chunk  =  stream . node . contents . slice ( position ,  position  +  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ab  =  WORKERFS . reader . readAsArrayBuffer ( chunk ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   buffer . set ( new  Uint8Array ( ab ) ,  offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  chunk . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  write :  function ( stream ,  buffer ,  offset ,  length ,  position )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  llseek :  function ( stream ,  offset ,  whence )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  position  =  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( whence  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    position  +=  stream . position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  if  ( whence  ===  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( FS . isFile ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     position  +=  stream . node . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( position  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ERRNO _MESSAGES  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 0 :  "Success" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 1 :  "Arg list too long" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 2 :  "Permission denied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 3 :  "Address already in use" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 4 :  "Address not available" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 5 :  "Address family not supported by protocol family" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 6 :  "No more processes" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 7 :  "Socket already connected" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 8 :  "Bad file number" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 9 :  "Trying to read unreadable message" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 10 :  "Mount device busy" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 11 :  "Operation canceled" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 12 :  "No children" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 13 :  "Connection aborted" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 14 :  "Connection refused" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 15 :  "Connection reset by peer" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 16 :  "File locking deadlock error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 17 :  "Destination address required" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 18 :  "Math arg out of domain of func" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 19 :  "Quota exceeded" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 20 :  "File exists" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 21 :  "Bad address" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 22 :  "File too large" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 23 :  "Host is unreachable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 24 :  "Identifier removed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 25 :  "Illegal byte sequence" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 26 :  "Connection already in progress" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 27 :  "Interrupted system call" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 28 :  "Invalid argument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 29 :  "I/O error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 30 :  "Socket is already connected" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 31 :  "Is a directory" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 32 :  "Too many symbolic links" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 33 :  "Too many open files" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 34 :  "Too many links" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 35 :  "Message too long" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 36 :  "Multihop attempted" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 37 :  "File or path name too long" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 38 :  "Network interface is not configured" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 39 :  "Connection reset by network" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 40 :  "Network is unreachable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 41 :  "Too many open files in system" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 42 :  "No buffer space available" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 43 :  "No such device" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 44 :  "No such file or directory" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 45 :  "Exec format error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 46 :  "No record locks available" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 47 :  "The link has been severed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 48 :  "Not enough core" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 49 :  "No message of desired type" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 50 :  "Protocol not available" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 51 :  "No space left on device" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 52 :  "Function not implemented" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 53 :  "Socket is not connected" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 54 :  "Not a directory" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 55 :  "Directory not empty" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 56 :  "State not recoverable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 57 :  "Socket operation on non-socket" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 59 :  "Not a typewriter" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 60 :  "No such device or address" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 61 :  "Value too large for defined data type" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 62 :  "Previous owner died" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 63 :  "Not super-user" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 64 :  "Broken pipe" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 65 :  "Protocol error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 66 :  "Unknown protocol" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 67 :  "Protocol wrong type for socket" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 68 :  "Math result not representable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 69 :  "Read only file system" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 70 :  "Illegal seek" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 71 :  "No such process" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 72 :  "Stale file handle" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 73 :  "Connection timed out" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 74 :  "Text file busy" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 75 :  "Cross-device link" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 100 :  "Device not a stream" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 101 :  "Bad font file fmt" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 102 :  "Invalid slot" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 103 :  "Invalid request code" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 104 :  "No anode" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 105 :  "Block device required" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 106 :  "Channel number out of range" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 107 :  "Level 3 halted" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 108 :  "Level 3 reset" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 109 :  "Link number out of range" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 110 :  "Protocol driver not attached" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 111 :  "No CSI structure available" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 112 :  "Level 2 halted" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 113 :  "Invalid exchange" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 114 :  "Invalid request descriptor" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 115 :  "Exchange full" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 116 :  "No data (for no delay io)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 117 :  "Timer expired" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 118 :  "Out of streams resources" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 119 :  "Machine is not on the network" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 120 :  "Package not installed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 121 :  "The object is remote" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 122 :  "Advertise error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 123 :  "Srmount error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 124 :  "Communication error on send" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 125 :  "Cross mount point (not really error)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 126 :  "Given log. name not unique" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 127 :  "f.d. invalid for this operation" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 128 :  "Remote address changed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 129 :  "Can   access a needed shared lib" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 130 :  "Accessing a corrupted shared lib" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 131 :  ".lib section in a.out corrupted" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 132 :  "Attempting to link in too many libs" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 133 :  "Attempting to exec a shared library" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 135 :  "Streams pipe error" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 136 :  "Too many users" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 137 :  "Socket type not supported" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 138 :  "Not supported" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 139 :  "Protocol family not supported" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 140 :  "Can't send after socket shutdown" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 141 :  "Too many references" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 142 :  "Host is down" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 148 :  "No medium (in tape drive)" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 156 :  "Level 2 not synchronized" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ERRNO _CODES  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EPERM :  63 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOENT :  44 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESRCH :  71 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EINTR :  27 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EIO :  29 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENXIO :  60 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 E2BIG :  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOEXEC :  45 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADF :  8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECHILD :  12 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EAGAIN :  6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EWOULDBLOCK :  6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOMEM :  48 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EACCES :  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EFAULT :  21 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTBLK :  105 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBUSY :  10 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EEXIST :  20 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EXDEV :  75 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENODEV :  43 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTDIR :  54 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EISDIR :  31 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EINVAL :  28 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENFILE :  41 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EMFILE :  33 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTTY :  59 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ETXTBSY :  74 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EFBIG :  22 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOSPC :  51 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESPIPE :  70 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EROFS :  69 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EMLINK :  34 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EPIPE :  64 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EDOM :  18 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ERANGE :  68 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOMSG :  49 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EIDRM :  24 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECHRNG :  106 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EL2NSYNC :  156 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EL3HLT :  107 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EL3RST :  108 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELNRNG :  109 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EUNATCH :  110 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOCSI :  111 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EL2HLT :  112 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EDEADLK :  16 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOLCK :  46 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADE :  113 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADR :  114 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EXFULL :  115 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOANO :  104 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADRQC :  103 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADSLT :  102 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EDEADLOCK :  16 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBFONT :  101 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOSTR :  100 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENODATA :  116 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ETIME :  117 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOSR :  118 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENONET :  119 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOPKG :  120 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EREMOTE :  121 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOLINK :  47 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EADV :  122 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESRMNT :  123 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECOMM :  124 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EPROTO :  65 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EMULTIHOP :  36 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EDOTDOT :  125 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADMSG :  9 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTUNIQ :  126 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EBADFD :  127 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EREMCHG :  128 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELIBACC :  129 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELIBBAD :  130 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELIBSCN :  131 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELIBMAX :  132 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELIBEXEC :  133 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOSYS :  52 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTEMPTY :  55 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENAMETOOLONG :  37 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ELOOP :  32 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EOPNOTSUPP :  138 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EPFNOSUPPORT :  139 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECONNRESET :  15 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOBUFS :  42 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EAFNOSUPPORT :  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EPROTOTYPE :  67 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTSOCK :  57 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOPROTOOPT :  50 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESHUTDOWN :  140 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECONNREFUSED :  14 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EADDRINUSE :  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECONNABORTED :  13 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENETUNREACH :  40 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENETDOWN :  38 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ETIMEDOUT :  73 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EHOSTDOWN :  142 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EHOSTUNREACH :  23 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EINPROGRESS :  26 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EALREADY :  7 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EDESTADDRREQ :  17 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EMSGSIZE :  35 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EPROTONOSUPPORT :  66 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESOCKTNOSUPPORT :  137 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EADDRNOTAVAIL :  4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENETRESET :  39 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EISCONN :  30 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTCONN :  53 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ETOOMANYREFS :  141 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EUSERS :  136 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EDQUOT :  19 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESTALE :  72 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTSUP :  138 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOMEDIUM :  148 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EILSEQ :  25 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EOVERFLOW :  61 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ECANCELED :  11 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ENOTRECOVERABLE :  56 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 EOWNERDEAD :  62 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ESTRPIPE :  135 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  FS  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 root :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mounts :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 devices :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 streams :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 nextInode :  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 nameTable :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 currentPath :  "/" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 initialized :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ignorePermissions :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 trackingDelegate :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 tracking :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openFlags :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   READ :  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   WRITE :  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ErrnoError :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 genericErrors :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 filesystems :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 syncFSRequests :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 lookupPath :  function ( path ,  opts )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  PATH _FS . resolve ( FS . cwd ( ) ,  path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  opts  =  opts  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! path )  return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path :  "" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node :  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  defaults  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow _mount :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   recurse _count :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  key  in  defaults )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( opts [ key ]  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opts [ key ]  =  defaults [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . recurse _count  >  8 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parts  =  PATH . normalizeArray ( path . split ( "/" ) . filter ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ! ! p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  current  =  FS . root ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  current _path  =  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  parts . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  islast  =  i  ===  parts . length  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( islast  &&  opts . parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   current  =  FS . lookupNode ( current ,  parts [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   current _path  =  PATH . join2 ( current _path ,  parts [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isMountpoint ( current ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! islast  ||  islast  &&  opts . follow _mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     current  =  current . mounted . root ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! islast  ||  opts . follow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  count  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  ( FS . isLink ( current . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     var  link  =  FS . readlink ( current _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     current _path  =  PATH _FS . resolve ( PATH . dirname ( current _path ) ,  link ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     var  lookup  =  FS . lookupPath ( current _path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recurse _count :  opts . recurse _count 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     current  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( count ++  >  40 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  FS . ErrnoError ( 32 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path :  current _path , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node :  current 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getPath :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isRoot ( node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  mount  =  node . mount . mountpoint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! path )  return  mount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  mount [ mount . length  -  1 ]  !==  "/"  ?  mount  +  "/"  +  path  :  mount  +  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path  =  path  ?  node . name  +  "/"  +  path  :  node . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  node . parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 hashName :  function ( parentid ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  hash  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  name . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   hash  =  ( hash  <<  5 )  -  hash  +  name . charCodeAt ( i )  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( parentid  +  hash  >>>  0 )  %  FS . nameTable . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 hashAddNode :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  hash  =  FS . hashName ( node . parent . id ,  node . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . name _next  =  FS . nameTable [ hash ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . nameTable [ hash ]  =  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 hashRemoveNode :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  hash  =  FS . hashName ( node . parent . id ,  node . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . nameTable [ hash ]  ===  node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . nameTable [ hash ]  =  node . name _next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  current  =  FS . nameTable [ hash ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   while  ( current )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( current . name _next  ===  node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     current . name _next  =  node . name _next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    current  =  current . name _next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 lookupNode :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . mayLookup ( parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ,  parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  hash  =  FS . hashName ( parent . id ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  node  =  FS . nameTable [ hash ] ;  node ;  node  =  node . name _next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  nodeName  =  node . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( node . parent . id  ===  parent . id  &&  nodeName  ===  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . lookup ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createNode :  function ( parent ,  name ,  mode ,  rdev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( typeof  parent  ===  "object" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  new  FS . FSNode ( parent ,  name ,  mode ,  rdev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . hashAddNode ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 destroyNode :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . hashRemoveNode ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isRoot :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node  ===  node . parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isMountpoint :  function ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ! ! node . mounted ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isFile :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  61440 )  ===  32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isDir :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  61440 )  ===  16384 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isLink :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  61440 )  ===  40960 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isChrdev :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  61440 )  ===  8192 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isBlkdev :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  61440 )  ===  24576 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isFIFO :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  61440 )  ===  4096 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isSocket :  function ( mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( mode  &  49152 )  ===  49152 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 flagModes :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "r" :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "r+" :  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "w" :  577 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "w+" :  578 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "a" :  1089 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "a+" :  1090 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 modeStringToFlags :  function ( str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  flags  =  FS . flagModes [ str ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  flags  ===  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  Error ( "Unknown file open mode: "  +  str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 flagsToPermissionString :  function ( flag )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  perms  =  [  "r" ,  "w" ,  "rw"  ] [ flag  &  3 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( flag  &  512 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   perms  +=  "w" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  perms ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 nodePermissions :  function ( node ,  perms )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . ignorePermissions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( perms . indexOf ( "r" )  !==  - 1  &&  ! ( node . mode  &  292 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( perms . indexOf ( "w" )  !==  - 1  &&  ! ( node . mode  &  146 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( perms . indexOf ( "x" )  !==  - 1  &&  ! ( node . mode  &  73 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mayLookup :  function ( dir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . nodePermissions ( dir ,  "x" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  return  errCode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! dir . node _ops . lookup )  return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mayCreate :  function ( dir ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  node  =  FS . lookupNode ( dir ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  20 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . nodePermissions ( dir ,  "wx" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mayDelete :  function ( dir ,  name ,  isdir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  FS . lookupNode ( dir ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . nodePermissions ( dir ,  "wx" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  errCode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( isdir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  54 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isRoot ( node )  ||  FS . getPath ( node )  ===  FS . cwd ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  31 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mayOpen :  function ( node ,  flags )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  44 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isLink ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  32 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . flagsToPermissionString ( flags )  !==  "r"  ||  flags  &  512 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  31 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . nodePermissions ( node ,  FS . flagsToPermissionString ( flags ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 MAX _OPEN _FDS :  4096 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 nextfd :  function ( fd _start ,  fd _end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fd _start  =  fd _start  ||  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fd _end  =  fd _end  ||  FS . MAX _OPEN _FDS ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  fd  =  fd _start ;  fd  <=  fd _end ;  fd ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . streams [ fd ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  fd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  throw  new  FS . ErrnoError ( 33 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getStream :  function ( fd )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . streams [ fd ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createStream :  function ( stream ,  fd _start ,  fd _end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! FS . FSStream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . FSStream  =  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . FSStream . prototype  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    object :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     set :  function ( val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . node  =  val ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isRead :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ( this . flags  &  2097155 )  !==  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isWrite :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ( this . flags  &  2097155 )  !==  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isAppend :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . flags  &  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  newStream  =  new  FS . FSStream ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  p  in  stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   newStream [ p ]  =  stream [ p ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream  =  newStream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  fd  =  FS . nextfd ( fd _start ,  fd _end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream . fd  =  fd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . streams [ fd ]  =  stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 closeStream :  function ( fd )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . streams [ fd ]  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 chrdev _stream _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  open :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  device  =  FS . getDevice ( stream . node . rdev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . stream _ops  =  device . stream _ops ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( stream . stream _ops . open )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream . stream _ops . open ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  llseek :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 70 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 major :  function ( dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  dev  >>  8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 minor :  function ( dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  dev  &  255 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 makedev :  function ( ma ,  mi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ma  <<  8  |  mi ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 registerDevice :  function ( dev ,  ops )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . devices [ dev ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream _ops :  ops 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getDevice :  function ( dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . devices [ dev ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getMounts :  function ( mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mounts  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  check  =  [  mount  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( check . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  m  =  check . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mounts . push ( m ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   check . push . apply ( check ,  m . mounts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  mounts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 syncfs :  function ( populate ,  callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  populate  ===  "function" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   callback  =  populate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   populate  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . syncFSRequests ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . syncFSRequests  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "warning: "  +  FS . syncFSRequests  +  " FS.syncfs operations in flight at once, probably just doing extra work" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mounts  =  FS . getMounts ( FS . root . mount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  completed  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  doCallback ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   assert ( FS . syncFSRequests  >  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . syncFSRequests -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  callback ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  done ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! done . errored )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     done . errored  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  doCallback ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ++ completed  >=  mounts . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    doCallback ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mounts . forEach ( function ( mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! mount . type . syncfs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  done ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mount . type . syncfs ( mount ,  populate ,  done ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mount :  function ( type ,  opts ,  mountpoint )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  type  ===  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  root  =  mountpoint  ===  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pseudo  =  ! mountpoint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( root  &&  FS . root )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( ! root  &&  ! pseudo )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lookup  =  FS . lookupPath ( mountpoint ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    follow _mount :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mountpoint  =  lookup . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . isMountpoint ( node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 54 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mount  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   type :  type , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   opts :  opts , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mountpoint :  mountpoint , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mounts :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mountRoot  =  type . mount ( mount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mountRoot . mount  =  mount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mount . root  =  mountRoot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( root )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . root  =  mountRoot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . mounted  =  mount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( node . mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . mount . mounts . push ( mount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  mountRoot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 unmount :  function ( mountpoint )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( mountpoint ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow _mount :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! FS . isMountpoint ( lookup . node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mount  =  node . mounted ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mounts  =  FS . getMounts ( mount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . keys ( FS . nameTable ) . forEach ( function ( hash )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  current  =  FS . nameTable [ hash ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   while  ( current )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  next  =  current . name _next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mounts . indexOf ( current . mount )  !==  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     FS . destroyNode ( current ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    current  =  next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . mounted  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  idx  =  node . mount . mounts . indexOf ( mount ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( idx  !==  - 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . mount . mounts . splice ( idx ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 lookup :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  parent . node _ops . lookup ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mknod :  function ( path ,  mode ,  dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parent  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  name  =  PATH . basename ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! name  ||  name  ===  "."  ||  name  ===  ".." )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . mayCreate ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! parent . node _ops . mknod )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  parent . node _ops . mknod ( parent ,  name ,  mode ,  dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 create :  function ( path ,  mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  =  mode  !==  undefined  ?  mode  :  438 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  &=  4095 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  |=  32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . mknod ( path ,  mode ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mkdir :  function ( path ,  mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  =  mode  !==  undefined  ?  mode  :  511 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  &=  511  |  512 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  |=  16384 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . mknod ( path ,  mode ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mkdirTree :  function ( path ,  mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  dirs  =  path . split ( "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  d  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  dirs . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! dirs [ i ] )  continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   d  +=  "/"  +  dirs [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . mkdir ( d ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e . errno  !=  20 )  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mkdev :  function ( path ,  mode ,  dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  dev  ===  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   dev  =  mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mode  =  438 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  |=  8192 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . mknod ( path ,  mode ,  dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 symlink :  function ( oldpath ,  newpath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! PATH _FS . resolve ( oldpath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( newpath ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parent  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  newname  =  PATH . basename ( newpath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . mayCreate ( parent ,  newname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! parent . node _ops . symlink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  parent . node _ops . symlink ( parent ,  newname ,  oldpath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 rename :  function ( old _path ,  new _path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  old _dirname  =  PATH . dirname ( old _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  new _dirname  =  PATH . dirname ( new _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  old _name  =  PATH . basename ( old _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  new _name  =  PATH . basename ( new _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup ,  old _dir ,  new _dir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  lookup  =  FS . lookupPath ( old _path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  old _dir  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  lookup  =  FS . lookupPath ( new _path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  new _dir  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! old _dir  ||  ! new _dir )  throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( old _dir . mount  !==  new _dir . mount )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 75 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  old _node  =  FS . lookupNode ( old _dir ,  old _name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  relative  =  PATH _FS . relative ( old _path ,  new _dirname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( relative . charAt ( 0 )  !==  "." )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  relative  =  PATH _FS . relative ( new _path ,  old _dirname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( relative . charAt ( 0 )  !==  "." )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 55 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  new _node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   new _node  =  FS . lookupNode ( new _dir ,  new _name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( old _node  ===  new _node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  isdir  =  FS . isDir ( old _node . mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . mayDelete ( old _dir ,  old _name ,  isdir ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  errCode  =  new _node  ?  FS . mayDelete ( new _dir ,  new _name ,  isdir )  :  FS . mayCreate ( new _dir ,  new _name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! old _dir . node _ops . rename )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isMountpoint ( old _node )  ||  new _node  &&  FS . isMountpoint ( new _node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( new _dir  !==  old _dir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   errCode  =  FS . nodePermissions ( old _dir ,  "w" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "willMovePath" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . trackingDelegate [ "willMovePath" ] ( old _path ,  new _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['willMovePath']('"  +  old _path  +  "', '"  +  new _path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . hashRemoveNode ( old _node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   old _dir . node _ops . rename ( old _node ,  new _dir ,  new _name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . hashAddNode ( old _node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "onMovePath" ] )  FS . trackingDelegate [ "onMovePath" ] ( old _path ,  new _path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['onMovePath']('"  +  old _path  +  "', '"  +  new _path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 rmdir :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parent  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  name  =  PATH . basename ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  FS . lookupNode ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . mayDelete ( parent ,  name ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! parent . node _ops . rmdir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isMountpoint ( node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "willDeletePath" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . trackingDelegate [ "willDeletePath" ] ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['willDeletePath']('"  +  path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parent . node _ops . rmdir ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . destroyNode ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "onDeletePath" ] )  FS . trackingDelegate [ "onDeletePath" ] ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['onDeletePath']('"  +  path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readdir :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . node _ops . readdir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 54 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node . node _ops . readdir ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 unlink :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parent  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  name  =  PATH . basename ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  FS . lookupNode ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . mayDelete ( parent ,  name ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! parent . node _ops . unlink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isMountpoint ( node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "willDeletePath" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . trackingDelegate [ "willDeletePath" ] ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['willDeletePath']('"  +  path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parent . node _ops . unlink ( parent ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . destroyNode ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "onDeletePath" ] )  FS . trackingDelegate [ "onDeletePath" ] ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['onDeletePath']('"  +  path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readlink :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  link  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! link )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! link . node _ops . readlink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  PATH _FS . resolve ( FS . getPath ( link . parent ) ,  link . node _ops . readlink ( link ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 stat :  function ( path ,  dontFollow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow :  ! dontFollow 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . node _ops . getattr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node . node _ops . getattr ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 lstat :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . stat ( path ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 chmod :  function ( path ,  mode ,  dontFollow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  path  ===  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    follow :  ! dontFollow 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . node _ops . setattr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . node _ops . setattr ( node ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mode :  mode  &  4095  |  node . mode  &  ~ 4095 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   timestamp :  Date . now ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 lchmod :  function ( path ,  mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . chmod ( path ,  mode ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 fchmod :  function ( fd ,  mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . getStream ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . chmod ( stream . node ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 chown :  function ( path ,  uid ,  gid ,  dontFollow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  path  ===  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    follow :  ! dontFollow 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . node _ops . setattr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . node _ops . setattr ( node ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   timestamp :  Date . now ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 lchown :  function ( path ,  uid ,  gid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . chown ( path ,  uid ,  gid ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 fchown :  function ( fd ,  uid ,  gid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . getStream ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . chown ( stream . node ,  uid ,  gid ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 truncate :  function ( path ,  len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( len  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  path  ===  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    follow :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node . node _ops . setattr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 63 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 31 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! FS . isFile ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . nodePermissions ( node ,  "w" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . node _ops . setattr ( node ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   size :  len , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   timestamp :  Date . now ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ftruncate :  function ( fd ,  len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . getStream ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( stream . flags  &  2097155 )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . truncate ( stream . node ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 utime :  function ( path ,  atime ,  mtime )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . node _ops . setattr ( node ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   timestamp :  Math . max ( atime ,  mtime ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 open :  function ( path ,  flags ,  mode ,  fd _start ,  fd _end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path  ===  "" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  flags  =  typeof  flags  ===  "string"  ?  FS . modeStringToFlags ( flags )  :  flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  mode  =  typeof  mode  ===  "undefined"  ?  438  :  mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( flags  &  64 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mode  =  mode  &  4095  |  32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mode  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  path  ===  "object" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node  =  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path  =  PATH . normalize ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     follow :  ! ( flags  &  131072 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  created  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( flags  &  64 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( flags  &  128 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     throw  new  FS . ErrnoError ( 20 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node  =  FS . mknod ( path ,  mode ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    created  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isChrdev ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   flags  &=  ~ 512 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( flags  &  65536  &&  ! FS . isDir ( node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 54 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! created )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  errCode  =  FS . mayOpen ( node ,  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( flags  &  512 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . truncate ( node ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  flags  &=  ~ ( 128  |  512  |  131072 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . createStream ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node :  node , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path :  FS . getPath ( node ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   flags :  flags , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   seekable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   position :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream _ops :  node . stream _ops , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ungotten :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   error :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  fd _start ,  fd _end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stream . stream _ops . open )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream . stream _ops . open ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( Module [ "logReadFiles" ]  &&  ! ( flags  &  1 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! FS . readFiles )  FS . readFiles  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! ( path  in  FS . readFiles ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . readFiles [ path ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err ( "FS.trackingDelegate error on read file: "  +  path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( FS . trackingDelegate [ "onOpenFile" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  trackingFlags  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( flags  &  2097155 )  !==  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     trackingFlags  |=  FS . tracking . openFlags . READ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( flags  &  2097155 )  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     trackingFlags  |=  FS . tracking . openFlags . WRITE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . trackingDelegate [ "onOpenFile" ] ( path ,  trackingFlags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['onOpenFile']('"  +  path  +  "', flags) threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 close :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isClosed ( stream ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stream . getdents )  stream . getdents  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( stream . stream _ops . close )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream . stream _ops . close ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . closeStream ( stream . fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream . fd  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isClosed :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream . fd  ===  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 llseek :  function ( stream ,  offset ,  whence )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isClosed ( stream ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream . seekable  ||  ! stream . stream _ops . llseek )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 70 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( whence  !=  0  &&  whence  !=  1  &&  whence  !=  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream . position  =  stream . stream _ops . llseek ( stream ,  offset ,  whence ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream . ungotten  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream . position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 read :  function ( stream ,  buffer ,  offset ,  length ,  position )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( length  <  0  ||  position  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isClosed ( stream ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( stream . flags  &  2097155 )  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isDir ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 31 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream . stream _ops . read )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  seeking  =  typeof  position  !==  "undefined" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! seeking )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   position  =  stream . position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( ! stream . seekable )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 70 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bytesRead  =  stream . stream _ops . read ( stream ,  buffer ,  offset ,  length ,  position ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! seeking )  stream . position  +=  bytesRead ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  bytesRead ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 write :  function ( stream ,  buffer ,  offset ,  length ,  position ,  canOwn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( length  <  0  ||  position  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isClosed ( stream ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( stream . flags  &  2097155 )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isDir ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 31 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream . stream _ops . write )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stream . seekable  &&  stream . flags  &  1024 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . llseek ( stream ,  0 ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  seeking  =  typeof  position  !==  "undefined" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! seeking )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   position  =  stream . position ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( ! stream . seekable )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 70 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bytesWritten  =  stream . stream _ops . write ( stream ,  buffer ,  offset ,  length ,  position ,  canOwn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! seeking )  stream . position  +=  bytesWritten ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( stream . path  &&  FS . trackingDelegate [ "onWriteToFile" ] )  FS . trackingDelegate [ "onWriteToFile" ] ( stream . path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "FS.trackingDelegate['onWriteToFile']('"  +  stream . path  +  "') threw an exception: "  +  e . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  bytesWritten ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 allocate :  function ( stream ,  offset ,  length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . isClosed ( stream ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( offset  <  0  ||  length  <=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( stream . flags  &  2097155 )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! FS . isFile ( stream . node . mode )  &&  ! FS . isDir ( stream . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream . stream _ops . allocate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 138 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream . stream _ops . allocate ( stream ,  offset ,  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mmap :  function ( stream ,  address ,  length ,  position ,  prot ,  flags )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( prot  &  2 )  !==  0  &&  ( flags  &  2 )  ===  0  &&  ( stream . flags  &  2097155 )  !==  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( stream . flags  &  2097155 )  ===  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream . stream _ops . mmap )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 43 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream . stream _ops . mmap ( stream ,  address ,  length ,  position ,  prot ,  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 msync :  function ( stream ,  buffer ,  offset ,  length ,  mmapFlags )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream  ||  ! stream . stream _ops . msync )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream . stream _ops . msync ( stream ,  buffer ,  offset ,  length ,  mmapFlags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 munmap :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ioctl :  function ( stream ,  cmd ,  arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream . stream _ops . ioctl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 59 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream . stream _ops . ioctl ( stream ,  cmd ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 readFile :  function ( path ,  opts )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  opts  =  opts  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  opts . flags  =  opts . flags  ||  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  opts . encoding  =  opts . encoding  ||  "binary" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . encoding  !==  "utf8"  &&  opts . encoding  !==  "binary" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  Error ( 'Invalid encoding type "'  +  opts . encoding  +  '"' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . open ( path ,  opts . flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stat  =  FS . stat ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  length  =  stat . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  buf  =  new  Uint8Array ( length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . read ( stream ,  buf ,  0 ,  length ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( opts . encoding  ===  "utf8" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret  =  UTF8ArrayToString ( buf ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( opts . encoding  ===  "binary" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret  =  buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . close ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 writeFile :  function ( path ,  data ,  opts )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  opts  =  opts  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  opts . flags  =  opts . flags  ||  577 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . open ( path ,  opts . flags ,  opts . mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  data  ===  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  buf  =  new  Uint8Array ( lengthBytesUTF8 ( data )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  actualNumBytes  =  stringToUTF8Array ( data ,  buf ,  0 ,  buf . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . write ( stream ,  buf ,  0 ,  actualNumBytes ,  undefined ,  opts . canOwn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( ArrayBuffer . isView ( data ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . write ( stream ,  data ,  0 ,  data . byteLength ,  undefined ,  opts . canOwn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  Error ( "Unsupported data type" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . close ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 cwd :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . currentPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 chdir :  function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( lookup . node  ===  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 44 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! FS . isDir ( lookup . node . mode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( 54 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  errCode  =  FS . nodePermissions ( lookup . node ,  "x" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( errCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  FS . ErrnoError ( errCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . currentPath  =  lookup . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createDefaultDirectories :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/tmp" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/home" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/home/web_user" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createDefaultDevices :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/dev" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . registerDevice ( FS . makedev ( 1 ,  3 ) ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   read :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   write :  function ( stream ,  buffer ,  offset ,  length ,  pos )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdev ( "/dev/null" ,  FS . makedev ( 1 ,  3 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TTY . register ( FS . makedev ( 5 ,  0 ) ,  TTY . default _tty _ops ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TTY . register ( FS . makedev ( 6 ,  0 ) ,  TTY . default _tty1 _ops ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdev ( "/dev/tty" ,  FS . makedev ( 5 ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdev ( "/dev/tty1" ,  FS . makedev ( 6 ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  random _device  =  getRandomDevice ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . createDevice ( "/dev" ,  "random" ,  random _device ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . createDevice ( "/dev" ,  "urandom" ,  random _device ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/dev/shm" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/dev/shm/tmp" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createSpecialDirectories :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/proc" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  proc _self  =  FS . mkdir ( "/proc/self" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( "/proc/self/fd" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mount ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mount :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  node  =  FS . createNode ( proc _self ,  "fd" ,  16384  |  511 ,  73 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node . node _ops  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     lookup :  function ( parent ,  name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  fd  =  + name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  stream  =  FS . getStream ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! stream )  throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  ret  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       parent :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       mount :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mountpoint :  "fake" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       node _ops :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        readlink :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         return  stream . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ret . parent  =  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  { } ,  "/proc/self/fd" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createStandardStreams :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( Module [ "stdin" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . createDevice ( "/dev" ,  "stdin" ,  Module [ "stdin" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . symlink ( "/dev/tty" ,  "/dev/stdin" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( Module [ "stdout" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . createDevice ( "/dev" ,  "stdout" ,  null ,  Module [ "stdout" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . symlink ( "/dev/tty" ,  "/dev/stdout" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( Module [ "stderr" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . createDevice ( "/dev" ,  "stderr" ,  null ,  Module [ "stderr" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . symlink ( "/dev/tty1" ,  "/dev/stderr" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stdin  =  FS . open ( "/dev/stdin" ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stdout  =  FS . open ( "/dev/stdout" ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stderr  =  FS . open ( "/dev/stderr" ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( stdin . fd  ===  0 ,  "invalid handle for stdin ("  +  stdin . fd  +  ")" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( stdout . fd  ===  1 ,  "invalid handle for stdout ("  +  stdout . fd  +  ")" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( stderr . fd  ===  2 ,  "invalid handle for stderr ("  +  stderr . fd  +  ")" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ensureErrnoError :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( FS . ErrnoError )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . ErrnoError  =  function  ErrnoError ( errno ,  node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . node  =  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . setErrno  =  function ( errno )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . errno  =  errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  key  in  ERRNO _CODES )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( ERRNO _CODES [ key ]  ===  errno )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . code  =  key ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . setErrno ( errno ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . message  =  ERRNO _MESSAGES [ errno ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( this . stack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Object . defineProperty ( this ,  "stack" ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     value :  new  Error ( ) . stack , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     writable :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . stack  =  demangleAll ( this . stack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . ErrnoError . prototype  =  new  Error ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . ErrnoError . prototype . constructor  =  FS . ErrnoError ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [  44  ] . forEach ( function ( code )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . genericErrors [ code ]  =  new  FS . ErrnoError ( code ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . genericErrors [ code ] . stack  =  "<generic error, no stack>" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 staticInit :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . ensureErrnoError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . nameTable  =  new  Array ( 4096 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mount ( MEMFS ,  { } ,  "/" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . createDefaultDirectories ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . createDefaultDevices ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . createSpecialDirectories ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . filesystems  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "MEMFS" :  MEMFS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "WORKERFS" :  WORKERFS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 init :  function ( input ,  output ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( ! FS . init . initialized ,  "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . init . initialized  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . ensureErrnoError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "stdin" ]  =  input  ||  Module [ "stdin" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "stdout" ]  =  output  ||  Module [ "stdout" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "stderr" ]  =  error  ||  Module [ "stderr" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . createStandardStreams ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 quit :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . init . initialized  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  fflush  =  Module [ "_fflush" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( fflush )  fflush ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  FS . streams . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  stream  =  FS . streams [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . close ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getMode :  function ( canRead ,  canWrite )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mode  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( canRead )  mode  |=  292  |  73 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( canWrite )  mode  |=  146 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 findObject :  function ( path ,  dontResolveLastLink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  FS . analyzePath ( path ,  dontResolveLastLink ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ret . exists )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ret . object ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 analyzePath :  function ( path ,  dontResolveLastLink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    follow :  ! dontResolveLastLink 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path  =  lookup . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   isRoot :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   exists :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   error :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   name :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   object :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parentExists :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parentPath :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parentObject :  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parent :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . parentExists  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . parentPath  =  lookup . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . parentObject  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . name  =  PATH . basename ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    follow :  ! dontResolveLastLink 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . exists  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . path  =  lookup . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . object  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . name  =  lookup . node . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . isRoot  =  lookup . path  ===  "/" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret . error  =  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createPath :  function ( parent ,  path ,  canRead ,  canWrite )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parent  =  typeof  parent  ===  "string"  ?  parent  :  FS . getPath ( parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  parts  =  path . split ( "/" ) . reverse ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( parts . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  part  =  parts . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! part )  continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  current  =  PATH . join2 ( parent ,  part ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . mkdir ( current ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   parent  =  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createFile :  function ( parent ,  name ,  properties ,  canRead ,  canWrite )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  path  =  PATH . join2 ( typeof  parent  ===  "string"  ?  parent  :  FS . getPath ( parent ) ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mode  =  FS . getMode ( canRead ,  canWrite ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . create ( path ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createDataFile :  function ( parent ,  name ,  data ,  canRead ,  canWrite ,  canOwn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  path  =  name  ?  PATH . join2 ( typeof  parent  ===  "string"  ?  parent  :  FS . getPath ( parent ) ,  name )  :  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mode  =  FS . getMode ( canRead ,  canWrite ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  FS . create ( path ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( typeof  data  ===  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arr  =  new  Array ( data . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ,  len  =  data . length ;  i  <  len ;  ++ i )  arr [ i ]  =  data . charCodeAt ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data  =  arr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . chmod ( node ,  mode  |  146 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  stream  =  FS . open ( node ,  577 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . write ( stream ,  data ,  0 ,  data . length ,  0 ,  canOwn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . close ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . chmod ( node ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createDevice :  function ( parent ,  name ,  input ,  output )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  path  =  PATH . join2 ( typeof  parent  ===  "string"  ?  parent  :  FS . getPath ( parent ) ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mode  =  FS . getMode ( ! ! input ,  ! ! output ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! FS . createDevice . major )  FS . createDevice . major  =  64 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  dev  =  FS . makedev ( FS . createDevice . major ++ ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . registerDevice ( dev ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   open :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream . seekable  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   close :  function ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( output  &&  output . buffer  &&  output . buffer . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     output ( 10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   read :  function ( stream ,  buffer ,  offset ,  length ,  pos )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  bytesRead  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     var  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      result  =  input ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  FS . ErrnoError ( 29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( result  ===  undefined  &&  bytesRead  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  FS . ErrnoError ( 6 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( result  ===  null  ||  result  ===  undefined )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     bytesRead ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     buffer [ offset  +  i ]  =  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( bytesRead )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream . node . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  bytesRead ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   write :  function ( stream ,  buffer ,  offset ,  length ,  pos )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      output ( buffer [ offset  +  i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  FS . ErrnoError ( 29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     stream . node . timestamp  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . mkdev ( path ,  mode ,  dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 forceLoadFile :  function ( obj )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( obj . isDevice  ||  obj . isFolder  ||  obj . link  ||  obj . contents )  return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  XMLHttpRequest  !==  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  Error ( "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( read _ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    obj . contents  =  intArrayFromString ( read _ ( obj . url ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    obj . usedBytes  =  obj . contents . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  FS . ErrnoError ( 29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  new  Error ( "Cannot load without read() or XMLHttpRequest." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createLazyFile :  function ( parent ,  name ,  url ,  canRead ,  canWrite )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  LazyUint8Array ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . lengthKnown  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . chunks  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LazyUint8Array . prototype . get  =  function  LazyUint8Array _get ( idx )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( idx  >  this . length  -  1  ||  idx  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  chunkOffset  =  idx  %  this . chunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  chunkNum  =  idx  /  this . chunkSize  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  this . getter ( chunkNum ) [ chunkOffset ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LazyUint8Array . prototype . setDataGetter  =  function  LazyUint8Array _setDataGetter ( getter )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . getter  =  getter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LazyUint8Array . prototype . cacheLength  =  function  LazyUint8Array _cacheLength ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  xhr  =  new  XMLHttpRequest ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   xhr . open ( "HEAD" ,  url ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   xhr . send ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! ( xhr . status  >=  200  &&  xhr . status  <  300  ||  xhr . status  ===  304 ) )  throw  new  Error ( "Couldn't load "  +  url  +  ". Status: "  +  xhr . status ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  datalength  =  Number ( xhr . getResponseHeader ( "Content-length" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  header ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  hasByteServing  =  ( header  =  xhr . getResponseHeader ( "Accept-Ranges" ) )  &&  header  ===  "bytes" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  usesGzip  =  ( header  =  xhr . getResponseHeader ( "Content-Encoding" ) )  &&  header  ===  "gzip" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  chunkSize  =  1024  *  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! hasByteServing )  chunkSize  =  datalength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  doXHR  =  function ( from ,  to )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( from  >  to )  throw  new  Error ( "invalid range ("  +  from  +  ", "  +  to  +  ") or no bytes requested!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( to  >  datalength  -  1 )  throw  new  Error ( "only "  +  datalength  +  " bytes available! programmer error!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  xhr  =  new  XMLHttpRequest ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . open ( "GET" ,  url ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( datalength  !==  chunkSize )  xhr . setRequestHeader ( "Range" ,  "bytes="  +  from  +  "-"  +  to ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  Uint8Array  !=  "undefined" )  xhr . responseType  =  "arraybuffer" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( xhr . overrideMimeType )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     xhr . overrideMimeType ( "text/plain; charset=x-user-defined" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . send ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! ( xhr . status  >=  200  &&  xhr . status  <  300  ||  xhr . status  ===  304 ) )  throw  new  Error ( "Couldn't load "  +  url  +  ". Status: "  +  xhr . status ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( xhr . response  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  new  Uint8Array ( xhr . response  ||  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  intArrayFromString ( xhr . responseText  ||  "" ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lazyArray  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   lazyArray . setDataGetter ( function ( chunkNum )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  start  =  chunkNum  *  chunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  end  =  ( chunkNum  +  1 )  *  chunkSize  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end  =  Math . min ( end ,  datalength  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  lazyArray . chunks [ chunkNum ]  ===  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     lazyArray . chunks [ chunkNum ]  =  doXHR ( start ,  end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  lazyArray . chunks [ chunkNum ]  ===  "undefined" )  throw  new  Error ( "doXHR failed!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  lazyArray . chunks [ chunkNum ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( usesGzip  ||  ! datalength )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    chunkSize  =  datalength  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    datalength  =  this . getter ( 0 ) . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    chunkSize  =  datalength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    out ( "LazyFiles on gzip forces download of the whole file when length is accessed" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . _length  =  datalength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . _chunkSize  =  chunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   this . lengthKnown  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  XMLHttpRequest  !==  "undefined" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! ENVIRONMENT _IS _WORKER )  throw  "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  lazyArray  =  new  LazyUint8Array ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Object . defineProperties ( lazyArray ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    length :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . lengthKnown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       this . cacheLength ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    chunkSize :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . lengthKnown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       this . cacheLength ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _chunkSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  properties  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isDevice :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    contents :  lazyArray 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  properties  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isDevice :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    url :  url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node  =  FS . createFile ( parent ,  name ,  properties ,  canRead ,  canWrite ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( properties . contents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  properties . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( properties . url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . contents  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   node . url  =  properties . url ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Object . defineProperties ( node ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   usedBytes :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  this . contents . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream _ops  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  keys  =  Object . keys ( node . stream _ops ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  keys . forEach ( function ( key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  fn  =  node . stream _ops [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   stream _ops [ key ]  =  function  forceLoadLazyFile ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FS . forceLoadFile ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  fn . apply ( null ,  arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stream _ops . read  =  function  stream _ops _read ( stream ,  buffer ,  offset ,  length ,  position )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . forceLoadFile ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  contents  =  stream . node . contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( position  >=  contents . length )  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  size  =  Math . min ( contents . length  -  position ,  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   assert ( size  >=  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( contents . slice )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  size ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     buffer [ offset  +  i ]  =  contents [ position  +  i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  size ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     buffer [ offset  +  i ]  =  contents . get ( position  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node . stream _ops  =  stream _ops ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createPreloadedFile :  function ( parent ,  name ,  url ,  canRead ,  canWrite ,  onload ,  onerror ,  dontCreateFile ,  canOwn ,  preFinish )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Browser . init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  fullname  =  name  ?  PATH _FS . resolve ( PATH . join2 ( parent ,  name ) )  :  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  dep  =  getUniqueRunDependency ( "cp "  +  fullname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  processData ( byteArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   function  finish ( byteArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( preFinish )  preFinish ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! dontCreateFile )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     FS . createDataFile ( parent ,  name ,  byteArray ,  canRead ,  canWrite ,  canOwn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( onload )  onload ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    removeRunDependency ( dep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  handled  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Module [ "preloadPlugins" ] . forEach ( function ( plugin )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( handled )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( plugin [ "canHandle" ] ( fullname ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     plugin [ "handle" ] ( byteArray ,  fullname ,  finish ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( onerror )  onerror ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      removeRunDependency ( dep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     handled  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! handled )  finish ( byteArray ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  addRunDependency ( dep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  url  ==  "string" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Browser . asyncLoad ( url ,  function ( byteArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    processData ( byteArray ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ,  onerror ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   processData ( url ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 indexedDB :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  window . indexedDB  ||  window . mozIndexedDB  ||  window . webkitIndexedDB  ||  window . msIndexedDB ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 DB _NAME :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  "EM_FS_"  +  window . location . pathname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 DB _VERSION :  20 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 DB _STORE _NAME :  "FILE_DATA" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 saveFilesToDB :  function ( paths ,  onload ,  onerror )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onload  =  onload  ||  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onerror  =  onerror  ||  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  indexedDB  =  FS . indexedDB ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  openRequest  =  indexedDB . open ( FS . DB _NAME ( ) ,  FS . DB _VERSION ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  onerror ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openRequest . onupgradeneeded  =  function  openRequest _onupgradeneeded ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   out ( "creating db" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  db  =  openRequest . result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   db . createObjectStore ( FS . DB _STORE _NAME ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openRequest . onsuccess  =  function  openRequest _onsuccess ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  db  =  openRequest . result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  transaction  =  db . transaction ( [  FS . DB _STORE _NAME  ] ,  "readwrite" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  files  =  transaction . objectStore ( FS . DB _STORE _NAME ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ok  =  0 ,  fail  =  0 ,  total  =  paths . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   function  finish ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( fail  ==  0 )  onload ( ) ;  else  onerror ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   paths . forEach ( function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  putRequest  =  files . put ( FS . analyzePath ( path ) . object . contents ,  path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    putRequest . onsuccess  =  function  putRequest _onsuccess ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     ok ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( ok  +  fail  ==  total )  finish ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    putRequest . onerror  =  function  putRequest _onerror ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     fail ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( ok  +  fail  ==  total )  finish ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   transaction . onerror  =  onerror ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openRequest . onerror  =  onerror ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 loadFilesFromDB :  function ( paths ,  onload ,  onerror )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onload  =  onload  ||  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onerror  =  onerror  ||  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  indexedDB  =  FS . indexedDB ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  openRequest  =  indexedDB . open ( FS . DB _NAME ( ) ,  FS . DB _VERSION ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  onerror ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openRequest . onupgradeneeded  =  onerror ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openRequest . onsuccess  =  function  openRequest _onsuccess ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  db  =  openRequest . result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  transaction  =  db . transaction ( [  FS . DB _STORE _NAME  ] ,  "readonly" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onerror ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  files  =  transaction . objectStore ( FS . DB _STORE _NAME ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ok  =  0 ,  fail  =  0 ,  total  =  paths . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   function  finish ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( fail  ==  0 )  onload ( ) ;  else  onerror ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   paths . forEach ( function ( path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  getRequest  =  files . get ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getRequest . onsuccess  =  function  getRequest _onsuccess ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( FS . analyzePath ( path ) . exists )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      FS . unlink ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     FS . createDataFile ( PATH . dirname ( path ) ,  PATH . basename ( path ) ,  getRequest . result ,  true ,  true ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     ok ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( ok  +  fail  ==  total )  finish ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getRequest . onerror  =  function  getRequest _onerror ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     fail ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     if  ( ok  +  fail  ==  total )  finish ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   transaction . onerror  =  onerror ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  openRequest . onerror  =  onerror ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 absolutePath :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "FS.absolutePath has been removed; use PATH_FS.resolve instead" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createFolder :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "FS.createFolder has been removed; use FS.mkdir instead" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 createLink :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "FS.createLink has been removed; use FS.symlink instead" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 joinPath :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "FS.joinPath has been removed; use PATH.join instead" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mmapAlloc :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "FS.mmapAlloc has been replaced by the top level function mmapAlloc" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 standardizePath :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "FS.standardizePath has been removed; use PATH.normalize instead" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  SYSCALLS  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 mappings :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 DEFAULT _POLLMASK :  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 umask :  511 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 calculateAt :  function ( dirfd ,  path )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path [ 0 ]  !==  "/" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  dir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( dirfd  ===  - 100 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dir  =  FS . cwd ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  dirstream  =  FS . getStream ( dirfd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! dirstream )  throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dir  =  dirstream . path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   path  =  PATH . join2 ( dir ,  path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doStat :  function ( func ,  path ,  buf )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  stat  =  func ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( e  &&  e . node  &&  PATH . normalize ( path )  !==  PATH . normalize ( FS . getPath ( e . node ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  - 54 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  >>  2 ]  =  stat . dev ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  4  >>  2 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  8  >>  2 ]  =  stat . ino ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  12  >>  2 ]  =  stat . mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  16  >>  2 ]  =  stat . nlink ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  20  >>  2 ]  =  stat . uid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  24  >>  2 ]  =  stat . gid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  28  >>  2 ]  =  stat . rdev ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  32  >>  2 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tempI64  =  [  stat . size  >>>  0 ,  ( tempDouble  =  stat . size ,  + Math . abs ( tempDouble )  >=  1  ?  tempDouble  >  0  ?  ( Math . min ( + Math . floor ( tempDouble  /  4294967296 ) ,  4294967295 )  |  0 )  >>>  0  :  ~ ~ + Math . ceil ( ( tempDouble  -  + ( ~ ~ tempDouble  >>>  0 ) )  /  4294967296 )  >>>  0  :  0 )  ] ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  40  >>  2 ]  =  tempI64 [ 0 ] ,  HEAP32 [ buf  +  44  >>  2 ]  =  tempI64 [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  48  >>  2 ]  =  4096 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  52  >>  2 ]  =  stat . blocks ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  56  >>  2 ]  =  stat . atime . getTime ( )  /  1e3  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  60  >>  2 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  64  >>  2 ]  =  stat . mtime . getTime ( )  /  1e3  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  68  >>  2 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  72  >>  2 ]  =  stat . ctime . getTime ( )  /  1e3  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  76  >>  2 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tempI64  =  [  stat . ino  >>>  0 ,  ( tempDouble  =  stat . ino ,  + Math . abs ( tempDouble )  >=  1  ?  tempDouble  >  0  ?  ( Math . min ( + Math . floor ( tempDouble  /  4294967296 ) ,  4294967295 )  |  0 )  >>>  0  :  ~ ~ + Math . ceil ( ( tempDouble  -  + ( ~ ~ tempDouble  >>>  0 ) )  /  4294967296 )  >>>  0  :  0 )  ] ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ buf  +  80  >>  2 ]  =  tempI64 [ 0 ] ,  HEAP32 [ buf  +  84  >>  2 ]  =  tempI64 [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doMsync :  function ( addr ,  stream ,  len ,  flags ,  offset )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  buffer  =  HEAPU8 . slice ( addr ,  addr  +  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . msync ( stream ,  buffer ,  offset ,  len ,  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doMkdir :  function ( path ,  mode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  PATH . normalize ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( path [ path . length  -  1 ]  ===  "/" )  path  =  path . substr ( 0 ,  path . length  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mkdir ( path ,  mode ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doMknod :  function ( path ,  mode ,  dev )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( mode  &  61440 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  32768 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  8192 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  24576 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  4096 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  49152 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . mknod ( path ,  mode ,  dev ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doReadlink :  function ( path ,  buf ,  bufsize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( bufsize  <=  0 )  return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  FS . readlink ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  len  =  Math . min ( bufsize ,  lengthBytesUTF8 ( ret ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  endChar  =  HEAP8 [ buf  +  len ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stringToUTF8 ( ret ,  buf ,  bufsize  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP8 [ buf  +  len ]  =  endChar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doAccess :  function ( path ,  amode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( amode  &  ~ 7 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lookup  =  FS . lookupPath ( path ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   follow :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  node  =  lookup . node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 44 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  perms  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( amode  &  4 )  perms  +=  "r" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( amode  &  2 )  perms  +=  "w" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( amode  &  1 )  perms  +=  "x" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( perms  &&  FS . nodePermissions ( node ,  perms ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doDup :  function ( path ,  flags ,  suggestFD )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  suggest  =  FS . getStream ( suggestFD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( suggest )  FS . close ( suggest ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FS . open ( path ,  flags ,  0 ,  suggestFD ,  suggestFD ) . fd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doReadv :  function ( stream ,  iov ,  iovcnt ,  offset )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  iovcnt ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ptr  =  HEAP32 [ iov  +  i  *  8  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  len  =  HEAP32 [ iov  +  ( i  *  8  +  4 )  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  curr  =  FS . read ( stream ,  HEAP8 ,  ptr ,  len ,  offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( curr  <  0 )  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret  +=  curr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( curr  <  len )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 doWritev :  function ( stream ,  iov ,  iovcnt ,  offset )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  0 ;  i  <  iovcnt ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ptr  =  HEAP32 [ iov  +  i  *  8  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  len  =  HEAP32 [ iov  +  ( i  *  8  +  4 )  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  curr  =  FS . write ( stream ,  HEAP8 ,  ptr ,  len ,  offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( curr  <  0 )  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ret  +=  curr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 varargs :  undefined , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  assert ( SYSCALLS . varargs  !=  undefined ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  SYSCALLS . varargs  +=  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  HEAP32 [ SYSCALLS . varargs  -  4  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getStr :  function ( ptr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  UTF8ToString ( ptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 getStreamFromFD :  function ( fd )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . getStream ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! stream )  throw  new  FS . ErrnoError ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get64 :  function ( low ,  high )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( low  >=  0 )  assert ( high  ===  0 ) ;  else  assert ( high  ===  - 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  low ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _access ( path ,  amode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  SYSCALLS . doAccess ( path ,  amode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _chmod ( path ,  mode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . chmod ( path ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _chown32 ( path ,  owner ,  group )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . chown ( path ,  owner ,  group ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _fchmod ( fd ,  mode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . fchmod ( fd ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _fchown32 ( fd ,  owner ,  group )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . fchown ( fd ,  owner ,  group ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setErrNo ( value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ _ _ _errno _location ( )  >>  2 ]  =  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _fcntl64 ( fd ,  cmd ,  varargs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 SYSCALLS . varargs  =  varargs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( cmd )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arg  =  SYSCALLS . get ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( arg  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  newStream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    newStream  =  FS . open ( stream . path ,  stream . flags ,  0 ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  newStream . fd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  stream . flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arg  =  SYSCALLS . get ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream . flags  |=  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  12 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arg  =  SYSCALLS . get ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offset  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HEAP16 [ arg  +  offset  >>  1 ]  =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  13 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  14 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  16 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  8 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  9 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   setErrNo ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _fstat64 ( fd ,  buf )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  SYSCALLS . doStat ( FS . stat ,  stream . path ,  buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _ftruncate64 ( fd ,  zero ,  low ,  high )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  length  =  SYSCALLS . get64 ( low ,  high ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . ftruncate ( fd ,  length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _getcwd ( buf ,  size )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( size  ===  0 )  return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  cwd  =  FS . cwd ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  cwdLengthInBytes  =  lengthBytesUTF8 ( cwd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( size  <  cwdLengthInBytes  +  1 )  return  - 68 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stringToUTF8 ( cwd ,  buf ,  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _getegid32 ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _geteuid32 ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  _ _ _sys _getegid32 ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _getpid ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  42 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _ioctl ( fd ,  op ,  varargs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 SYSCALLS . varargs  =  varargs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21509 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21505 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stream . tty )  return  - 59 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21510 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21511 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21512 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21506 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21507 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21508 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stream . tty )  return  - 59 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21519 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stream . tty )  return  - 59 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  argp  =  SYSCALLS . get ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HEAP32 [ argp  >>  2 ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21520 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stream . tty )  return  - 59 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21531 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  argp  =  SYSCALLS . get ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FS . ioctl ( stream ,  op ,  argp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21523 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stream . tty )  return  - 59 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  21524 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! stream . tty )  return  - 59 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   abort ( "bad ioctl syscall "  +  op ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _lstat64 ( path ,  buf )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  SYSCALLS . doStat ( FS . lstat ,  path ,  buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _mkdir ( path ,  mode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  SYSCALLS . doMkdir ( path ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  syscallMmap2 ( addr ,  len ,  prot ,  flags ,  fd ,  off )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 off  <<=  12 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  allocated  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ( flags  &  16 )  !==  0  &&  addr  %  16384  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ( flags  &  32 )  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ptr  =  _memalign ( 16384 ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ptr )  return  - 48 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _memset ( ptr ,  0 ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  allocated  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  info  =  FS . getStream ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! info )  return  - 8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  res  =  FS . mmap ( info ,  addr ,  len ,  off ,  prot ,  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ptr  =  res . ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  allocated  =  res . allocated ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 SYSCALLS . mappings [ ptr ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  malloc :  ptr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  len :  len , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  allocated :  allocated , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fd :  fd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  prot :  prot , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  flags :  flags , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  offset :  off 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _mmap2 ( addr ,  len ,  prot ,  flags ,  fd ,  off )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  syscallMmap2 ( addr ,  len ,  prot ,  flags ,  fd ,  off ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _mprotect ( addr ,  len ,  size )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  syscallMunmap ( addr ,  len )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ( addr  |  0 )  ===  - 1  ||  len  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - 28 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  info  =  SYSCALLS . mappings [ addr ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! info )  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( len  ===  info . len )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . getStream ( info . fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( info . prot  &  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SYSCALLS . doMsync ( addr ,  stream ,  len ,  info . flags ,  info . offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   FS . munmap ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  SYSCALLS . mappings [ addr ]  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( info . allocated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   _free ( info . malloc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _munmap ( addr ,  len )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  syscallMunmap ( addr ,  len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _open ( path ,  flags ,  varargs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 SYSCALLS . varargs  =  varargs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pathname  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  mode  =  varargs  ?  SYSCALLS . get ( )  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  FS . open ( pathname ,  flags ,  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  stream . fd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _readlink ( path ,  buf ,  bufsize )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  SYSCALLS . doReadlink ( path ,  buf ,  bufsize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _rmdir ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . rmdir ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _stat64 ( path ,  buf )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  SYSCALLS . doStat ( FS . stat ,  path ,  buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _ _sys _unlink ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  path  =  SYSCALLS . getStr ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . unlink ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _abort ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _emscripten _get _now ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ENVIRONMENT _IS _NODE )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _emscripten _get _now  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  t  =  process [ "hrtime" ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  t [ 0 ]  *  1e3  +  t [ 1 ]  /  1e6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  if  ( typeof  dateNow  !==  "undefined" )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _emscripten _get _now  =  dateNow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  _emscripten _get _now  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  performance . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _emscripten _memcpy _big ( dest ,  src ,  num )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAPU8 . copyWithin ( dest ,  src ,  src  +  num ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _emscripten _get _heap _size ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  HEAPU8 . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  emscripten _realloc _buffer ( size )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wasmMemory . grow ( size  -  buffer . byteLength  +  65535  >>>  16 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  updateGlobalBufferAndViews ( wasmMemory . buffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  console . error ( "emscripten_realloc_buffer: Attempted to grow heap from "  +  buffer . byteLength  +  " bytes to "  +  size  +  " bytes, but got error: "  +  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _emscripten _resize _heap ( requestedSize )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 requestedSize  =  requestedSize  >>>  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  oldSize  =  _emscripten _get _heap _size ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( requestedSize  >  oldSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  maxHeapSize  =  2147483648 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( requestedSize  >  maxHeapSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  err ( "Cannot enlarge memory, asked to go up to "  +  requestedSize  +  " bytes, but the limit is "  +  maxHeapSize  +  " bytes!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  minHeapSize  =  16777216 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  cutDown  =  1 ;  cutDown  <=  4 ;  cutDown  *=  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  overGrownHeapSize  =  oldSize  *  ( 1  +  . 2  /  cutDown ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  overGrownHeapSize  =  Math . min ( overGrownHeapSize ,  requestedSize  +  100663296 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  newSize  =  Math . min ( maxHeapSize ,  alignUp ( Math . max ( minHeapSize ,  requestedSize ,  overGrownHeapSize ) ,  65536 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  replacement  =  emscripten _realloc _buffer ( newSize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( replacement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 err ( "Failed to grow the heap from "  +  oldSize  +  " bytes to "  +  newSize  +  " bytes, not enough memory!" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _emscripten _thread _sleep ( msecs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  start  =  _emscripten _get _now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( _emscripten _get _now ( )  -  start  <  msecs )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ENV  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getExecutableName ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  thisProgram  ||  "./this.program" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getEnvStrings ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! getEnvStrings . strings )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  lang  =  ( typeof  navigator  ===  "object"  &&  navigator . languages  &&  navigator . languages [ 0 ]  ||  "C" ) . replace ( "-" ,  "_" )  +  ".UTF-8" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  env  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "USER" :  "web_user" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "LOGNAME" :  "web_user" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "PATH" :  "/" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "PWD" :  "/" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "HOME" :  "/home/web_user" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "LANG" :  lang , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "_" :  getExecutableName ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  x  in  ENV )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   env [ x ]  =  ENV [ x ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  strings  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  x  in  env )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   strings . push ( x  +  "="  +  env [ x ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  getEnvStrings . strings  =  strings ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  getEnvStrings . strings ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _environ _get ( _ _environ ,  environ _buf )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bufSize  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  getEnvStrings ( ) . forEach ( function ( string ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ptr  =  environ _buf  +  bufSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   HEAP32 [ _ _environ  +  i  *  4  >>  2 ]  =  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   writeAsciiToMemory ( string ,  ptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   bufSize  +=  string . length  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _environ _sizes _get ( penviron _count ,  penviron _buf _size )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  strings  =  getEnvStrings ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ penviron _count  >>  2 ]  =  strings . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bufSize  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  strings . forEach ( function ( string )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   bufSize  +=  string . length  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ penviron _buf _size  >>  2 ]  =  bufSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _fd _close ( fd )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . close ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _fd _fdstat _get ( fd ,  pbuf )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  type  =  stream . tty  ?  2  :  FS . isDir ( stream . mode )  ?  3  :  FS . isLink ( stream . mode )  ?  7  :  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP8 [ pbuf  >>  0 ]  =  type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _fd _read ( fd ,  iov ,  iovcnt ,  pnum )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  num  =  SYSCALLS . doReadv ( stream ,  iov ,  iovcnt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ pnum  >>  2 ]  =  num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _fd _seek ( fd ,  offset _low ,  offset _high ,  whence ,  newOffset )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  HIGH _OFFSET  =  4294967296 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  offset  =  offset _high  *  HIGH _OFFSET  +  ( offset _low  >>>  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  DOUBLE _LIMIT  =  9007199254740992 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( offset  <=  - DOUBLE _LIMIT  ||  offset  >=  DOUBLE _LIMIT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - 61 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . llseek ( stream ,  offset ,  whence ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tempI64  =  [  stream . position  >>>  0 ,  ( tempDouble  =  stream . position ,  + Math . abs ( tempDouble )  >=  1  ?  tempDouble  >  0  ?  ( Math . min ( + Math . floor ( tempDouble  /  4294967296 ) ,  4294967295 )  |  0 )  >>>  0  :  ~ ~ + Math . ceil ( ( tempDouble  -  + ( ~ ~ tempDouble  >>>  0 ) )  /  4294967296 )  >>>  0  :  0 )  ] ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ newOffset  >>  2 ]  =  tempI64 [ 0 ] ,  HEAP32 [ newOffset  +  4  >>  2 ]  =  tempI64 [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stream . getdents  &&  offset  ===  0  &&  whence  ===  0 )  stream . getdents  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _fd _sync ( fd )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( stream . stream _ops  &&  stream . stream _ops . fsync )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  - stream . stream _ops . fsync ( stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _fd _write ( fd ,  iov ,  iovcnt ,  pnum )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  stream  =  SYSCALLS . getStreamFromFD ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  num  =  SYSCALLS . doWritev ( stream ,  iov ,  iovcnt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ pnum  >>  2 ]  =  num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  FS  ===  "undefined"  ||  ! ( e  instanceof  FS . ErrnoError ) )  abort ( e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  e . errno ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _gettimeofday ( ptr )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  now  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ ptr  >>  2 ]  =  now  /  1e3  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ ptr  +  4  >>  2 ]  =  now  %  1e3  *  1e3  |  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _setTempRet0 ( $i )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _isLeapYear ( year )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  year  %  4  ===  0  &&  ( year  %  100  !==  0  ||  year  %  400  ===  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _arraySum ( array ,  index )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  sum  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  i  =  0 ;  i  <=  index ;  sum  +=  array [ i ++ ] )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  sum ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _MONTH _DAYS _LEAP  =  [  31 ,  29 ,  31 ,  30 ,  31 ,  30 ,  31 ,  31 ,  30 ,  31 ,  30 ,  31  ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _MONTH _DAYS _REGULAR  =  [  31 ,  28 ,  31 ,  30 ,  31 ,  30 ,  31 ,  31 ,  30 ,  31 ,  30 ,  31  ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _ _addDays ( date ,  days )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  newDate  =  new  Date ( date . getTime ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( days  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  leap  =  _ _isLeapYear ( newDate . getFullYear ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  currentMonth  =  newDate . getMonth ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  daysInCurrentMonth  =  ( leap  ?  _ _MONTH _DAYS _LEAP  :  _ _MONTH _DAYS _REGULAR ) [ currentMonth ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( days  >  daysInCurrentMonth  -  newDate . getDate ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   days  -=  daysInCurrentMonth  -  newDate . getDate ( )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   newDate . setDate ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( currentMonth  <  11 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    newDate . setMonth ( currentMonth  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    newDate . setMonth ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    newDate . setFullYear ( newDate . getFullYear ( )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   newDate . setDate ( newDate . getDate ( )  +  days ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  newDate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  newDate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _strftime ( s ,  maxsize ,  format ,  tm )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  tm _zone  =  HEAP32 [ tm  +  40  >>  2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  date  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _sec :  HEAP32 [ tm  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _min :  HEAP32 [ tm  +  4  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _hour :  HEAP32 [ tm  +  8  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _mday :  HEAP32 [ tm  +  12  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _mon :  HEAP32 [ tm  +  16  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _year :  HEAP32 [ tm  +  20  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _wday :  HEAP32 [ tm  +  24  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _yday :  HEAP32 [ tm  +  28  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _isdst :  HEAP32 [ tm  +  32  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _gmtoff :  HEAP32 [ tm  +  36  >>  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tm _zone :  tm _zone  ?  UTF8ToString ( tm _zone )  :  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  pattern  =  UTF8ToString ( format ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  EXPANSION _RULES _1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%c" :  "%a %b %d %H:%M:%S %Y" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%D" :  "%m/%d/%y" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%F" :  "%Y-%m-%d" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%h" :  "%b" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%r" :  "%I:%M:%S %p" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%R" :  "%H:%M" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%T" :  "%H:%M:%S" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%x" :  "%m/%d/%y" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%X" :  "%H:%M:%S" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Ec" :  "%c" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%EC" :  "%C" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Ex" :  "%m/%d/%y" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%EX" :  "%H:%M:%S" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Ey" :  "%y" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%EY" :  "%Y" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Od" :  "%d" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Oe" :  "%e" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OH" :  "%H" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OI" :  "%I" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Om" :  "%m" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OM" :  "%M" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OS" :  "%S" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Ou" :  "%u" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OU" :  "%U" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OV" :  "%V" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Ow" :  "%w" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%OW" :  "%W" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Oy" :  "%y" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  rule  in  EXPANSION _RULES _1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pattern  =  pattern . replace ( new  RegExp ( rule ,  "g" ) ,  EXPANSION _RULES _1 [ rule ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  WEEKDAYS  =  [  "Sunday" ,  "Monday" ,  "Tuesday" ,  "Wednesday" ,  "Thursday" ,  "Friday" ,  "Saturday"  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  MONTHS  =  [  "January" ,  "February" ,  "March" ,  "April" ,  "May" ,  "June" ,  "July" ,  "August" ,  "September" ,  "October" ,  "November" ,  "December"  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  leadingSomething ( value ,  digits ,  character )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  str  =  typeof  value  ===  "number"  ?  value . toString ( )  :  value  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  ( str . length  <  digits )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   str  =  character [ 0 ]  +  str ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  str ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  leadingNulls ( value ,  digits )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  leadingSomething ( value ,  digits ,  "0" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  compareByDay ( date1 ,  date2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  sgn ( value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  value  <  0  ?  - 1  :  value  >  0  ?  1  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  compare ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ( compare  =  sgn ( date1 . getFullYear ( )  -  date2 . getFullYear ( ) ) )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ( compare  =  sgn ( date1 . getMonth ( )  -  date2 . getMonth ( ) ) )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    compare  =  sgn ( date1 . getDate ( )  -  date2 . getDate ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  compare ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  getFirstWeekStartDate ( janFourth )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( janFourth . getDay ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Date ( janFourth . getFullYear ( )  -  1 ,  11 ,  29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  janFourth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Date ( janFourth . getFullYear ( ) ,  0 ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Date ( janFourth . getFullYear ( ) ,  0 ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Date ( janFourth . getFullYear ( ) ,  0 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  5 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Date ( janFourth . getFullYear ( )  -  1 ,  11 ,  31 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case  6 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  new  Date ( janFourth . getFullYear ( )  -  1 ,  11 ,  30 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  getWeekBasedYear ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  thisDate  =  _ _addDays ( new  Date ( date . tm _year  +  1900 ,  0 ,  1 ) ,  date . tm _yday ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  janFourthThisYear  =  new  Date ( thisDate . getFullYear ( ) ,  0 ,  4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  janFourthNextYear  =  new  Date ( thisDate . getFullYear ( )  +  1 ,  0 ,  4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  firstWeekStartThisYear  =  getFirstWeekStartDate ( janFourthThisYear ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  firstWeekStartNextYear  =  getFirstWeekStartDate ( janFourthNextYear ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( compareByDay ( firstWeekStartThisYear ,  thisDate )  <=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( compareByDay ( firstWeekStartNextYear ,  thisDate )  <=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  thisDate . getFullYear ( )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  thisDate . getFullYear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  thisDate . getFullYear ( )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  EXPANSION _RULES _2  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%a" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  WEEKDAYS [ date . tm _wday ] . substring ( 0 ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%A" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  WEEKDAYS [ date . tm _wday ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%b" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  MONTHS [ date . tm _mon ] . substring ( 0 ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%B" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  MONTHS [ date . tm _mon ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%C" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  year  =  date . tm _year  +  1900 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( year  /  100  |  0 ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%d" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( date . tm _mday ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%e" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingSomething ( date . tm _mday ,  2 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%g" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  getWeekBasedYear ( date ) . toString ( ) . substring ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%G" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  getWeekBasedYear ( date ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%H" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( date . tm _hour ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%I" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  twelveHour  =  date . tm _hour ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( twelveHour  ==  0 )  twelveHour  =  12 ;  else  if  ( twelveHour  >  12 )  twelveHour  -=  12 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( twelveHour ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%j" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( date . tm _mday  +  _ _arraySum ( _ _isLeapYear ( date . tm _year  +  1900 )  ?  _ _MONTH _DAYS _LEAP  :  _ _MONTH _DAYS _REGULAR ,  date . tm _mon  -  1 ) ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%m" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( date . tm _mon  +  1 ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%M" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( date . tm _min ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%n" :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  "\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%p" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( date . tm _hour  >=  0  &&  date . tm _hour  <  12 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  "AM" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  "PM" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%S" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( date . tm _sec ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%t" :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  "\t" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%u" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  date . tm _wday  ||  7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%U" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  janFirst  =  new  Date ( date . tm _year  +  1900 ,  0 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  firstSunday  =  janFirst . getDay ( )  ===  0  ?  janFirst  :  _ _addDays ( janFirst ,  7  -  janFirst . getDay ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  endDate  =  new  Date ( date . tm _year  +  1900 ,  date . tm _mon ,  date . tm _mday ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( compareByDay ( firstSunday ,  endDate )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  februaryFirstUntilEndMonth  =  _ _arraySum ( _ _isLeapYear ( endDate . getFullYear ( ) )  ?  _ _MONTH _DAYS _LEAP  :  _ _MONTH _DAYS _REGULAR ,  endDate . getMonth ( )  -  1 )  -  31 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  firstSundayUntilEndJanuary  =  31  -  firstSunday . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  days  =  firstSundayUntilEndJanuary  +  februaryFirstUntilEndMonth  +  endDate . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  leadingNulls ( Math . ceil ( days  /  7 ) ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  compareByDay ( firstSunday ,  janFirst )  ===  0  ?  "01"  :  "00" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%V" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  janFourthThisYear  =  new  Date ( date . tm _year  +  1900 ,  0 ,  4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  janFourthNextYear  =  new  Date ( date . tm _year  +  1901 ,  0 ,  4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  firstWeekStartThisYear  =  getFirstWeekStartDate ( janFourthThisYear ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  firstWeekStartNextYear  =  getFirstWeekStartDate ( janFourthNextYear ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  endDate  =  _ _addDays ( new  Date ( date . tm _year  +  1900 ,  0 ,  1 ) ,  date . tm _yday ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( compareByDay ( endDate ,  firstWeekStartThisYear )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  "53" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( compareByDay ( firstWeekStartNextYear ,  endDate )  <=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  "01" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  daysDifference ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( firstWeekStartThisYear . getFullYear ( )  <  date . tm _year  +  1900 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    daysDifference  =  date . tm _yday  +  32  -  firstWeekStartThisYear . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    daysDifference  =  date . tm _yday  +  1  -  firstWeekStartThisYear . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  leadingNulls ( Math . ceil ( daysDifference  /  7 ) ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%w" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  date . tm _wday ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%W" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  janFirst  =  new  Date ( date . tm _year ,  0 ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  firstMonday  =  janFirst . getDay ( )  ===  1  ?  janFirst  :  _ _addDays ( janFirst ,  janFirst . getDay ( )  ===  0  ?  1  :  7  -  janFirst . getDay ( )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  endDate  =  new  Date ( date . tm _year  +  1900 ,  date . tm _mon ,  date . tm _mday ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( compareByDay ( firstMonday ,  endDate )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  februaryFirstUntilEndMonth  =  _ _arraySum ( _ _isLeapYear ( endDate . getFullYear ( ) )  ?  _ _MONTH _DAYS _LEAP  :  _ _MONTH _DAYS _REGULAR ,  endDate . getMonth ( )  -  1 )  -  31 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  firstMondayUntilEndJanuary  =  31  -  firstMonday . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  days  =  firstMondayUntilEndJanuary  +  februaryFirstUntilEndMonth  +  endDate . getDate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  leadingNulls ( Math . ceil ( days  /  7 ) ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  compareByDay ( firstMonday ,  janFirst )  ===  0  ?  "01"  :  "00" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%y" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ( date . tm _year  +  1900 ) . toString ( ) . substring ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Y" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  date . tm _year  +  1900 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%z" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  off  =  date . tm _gmtoff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  ahead  =  off  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   off  =  Math . abs ( off )  /  60 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   off  =  off  /  60  *  100  +  off  %  60 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ( ahead  ?  "+"  :  "-" )  +  String ( "0000"  +  off ) . slice ( - 4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%Z" :  function ( date )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  date . tm _zone ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "%%" :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  "%" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  rule  in  EXPANSION _RULES _2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pattern . indexOf ( rule )  >=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   pattern  =  pattern . replace ( new  RegExp ( rule ,  "g" ) ,  EXPANSION _RULES _2 [ rule ] ( date ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  bytes  =  intArrayFromString ( pattern ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( bytes . length  >  maxsize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 writeArrayToMemory ( bytes ,  s ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  bytes . length  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _strftime _l ( s ,  maxsize ,  format ,  tm )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  _strftime ( s ,  maxsize ,  format ,  tm ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _sysconf ( name )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 switch  ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  30 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  16384 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  85 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  maxHeapSize  =  2147483648 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  maxHeapSize  /  16384 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  132 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  133 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  12 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  137 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  138 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  15 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  235 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  16 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  17 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  18 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  19 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  20 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  149 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  13 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  10 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  236 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  153 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  9 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  21 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  22 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  159 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  154 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  14 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  77 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  78 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  139 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  82 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  68 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  67 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  164 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  11 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  29 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  47 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  48 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  95 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  52 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  51 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  46 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  200809 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  27 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  246 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  127 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  128 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  23 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  24 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  160 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  161 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  181 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  182 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  242 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  183 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  184 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  243 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  244 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  245 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  165 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  178 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  179 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  49 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  50 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  168 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  169 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  175 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  170 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  171 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  172 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  97 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  76 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  32 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  173 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  35 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  80 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  81 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  79 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  176 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  177 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  7 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  155 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  8 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  157 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  125 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  126 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  92 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  93 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  129 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  130 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  131 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  94 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  91 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  74 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  60 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  69 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  70 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  31 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  42 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  72 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  32 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  87 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  26 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  33 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  2147483647 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  34 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  47839 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  38 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  36 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  99 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  43 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  37 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  2048 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  2097152 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  65536 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  28 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  44 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  32767 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  75 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  16384 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  39 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1e3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  89 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  700 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  71 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  256 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  40 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  255 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  180 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  64 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  25 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  20 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  5 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  16 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  6 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  73 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 case  84 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( typeof  navigator  ===  "object" )  return  navigator [ "hardwareConcurrency" ]  ||  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 setErrNo ( 28 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setFileTime ( path ,  time )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 path  =  UTF8ToString ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FS . utime ( path ,  time ,  time ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( e  instanceof  FS . ErrnoError ) )  throw  e  +  " : "  +  stackTrace ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setErrNo ( e . errno ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  _utime ( path ,  times )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( times )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  time  =  HEAP32 [ times  +  4  >>  2 ]  *  1e3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  time  =  Date . now ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  setFileTime ( path ,  time ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  FSNode  =  function ( parent ,  name ,  mode ,  rdev )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parent  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . parent  =  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . mount  =  parent . mount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . mounted  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . id  =  FS . nextInode ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . name  =  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . mode  =  mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . node _ops  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . stream _ops  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . rdev  =  rdev ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  readMode  =  292  |  73 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  writeMode  =  146 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperties ( FSNode . prototype ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 read :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ( this . mode  &  readMode )  ===  readMode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   val  ?  this . mode  |=  readMode  :  this . mode  &=  ~ readMode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 write :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  ( this . mode  &  writeMode )  ===  writeMode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  set :  function ( val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   val  ?  this . mode  |=  writeMode  :  this . mode  &=  ~ writeMode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isFolder :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  FS . isDir ( this . mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 isDevice :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return  FS . isChrdev ( this . mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FS . FSNode  =  FSNode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FS . staticInit ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  intArrayFromString ( stringy ,  dontAddNull ,  length )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  len  =  length  >  0  ?  length  :  lengthBytesUTF8 ( stringy )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  u8array  =  new  Array ( len ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  numBytesWritten  =  stringToUTF8Array ( stringy ,  u8array ,  0 ,  u8array . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( dontAddNull )  u8array . length  =  numBytesWritten ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 return  u8array ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  asmLibraryArg  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__cxa_atexit" :  _ _ _cxa _atexit , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__localtime_r" :  _ _ _localtime _r , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_access" :  _ _ _sys _access , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_chmod" :  _ _ _sys _chmod , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_chown32" :  _ _ _sys _chown32 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_fchmod" :  _ _ _sys _fchmod , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_fchown32" :  _ _ _sys _fchown32 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_fcntl64" :  _ _ _sys _fcntl64 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_fstat64" :  _ _ _sys _fstat64 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_ftruncate64" :  _ _ _sys _ftruncate64 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_getcwd" :  _ _ _sys _getcwd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_geteuid32" :  _ _ _sys _geteuid32 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_getpid" :  _ _ _sys _getpid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_ioctl" :  _ _ _sys _ioctl , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_lstat64" :  _ _ _sys _lstat64 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_mkdir" :  _ _ _sys _mkdir , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_mmap2" :  _ _ _sys _mmap2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_mprotect" :  _ _ _sys _mprotect , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_munmap" :  _ _ _sys _munmap , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_open" :  _ _ _sys _open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_readlink" :  _ _ _sys _readlink , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_rmdir" :  _ _ _sys _rmdir , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_stat64" :  _ _ _sys _stat64 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "__sys_unlink" :  _ _ _sys _unlink , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "abort" :  _abort , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "emscripten_get_now" :  _emscripten _get _now , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "emscripten_memcpy_big" :  _emscripten _memcpy _big , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "emscripten_resize_heap" :  _emscripten _resize _heap , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "emscripten_thread_sleep" :  _emscripten _thread _sleep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "environ_get" :  _environ _get , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "environ_sizes_get" :  _environ _sizes _get , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "fd_close" :  _fd _close , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "fd_fdstat_get" :  _fd _fdstat _get , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "fd_read" :  _fd _read , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "fd_seek" :  _fd _seek , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "fd_sync" :  _fd _sync , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "fd_write" :  _fd _write , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "gettimeofday" :  _gettimeofday , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "setTempRet0" :  _setTempRet0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "strftime_l" :  _strftime _l , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "sysconf" :  _sysconf , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "utime" :  _utime 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  asm  =  createWasm ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _ _wasm _call _ctors  =  Module [ "___wasm_call_ctors" ]  =  createExportWrapper ( "__wasm_call_ctors" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _ _errno _location  =  Module [ "___errno_location" ]  =  createExportWrapper ( "__errno_location" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _memset  =  Module [ "_memset" ]  =  createExportWrapper ( "memset" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _free  =  Module [ "_free" ]  =  createExportWrapper ( "free" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_usleep" ]  =  createExportWrapper ( "usleep" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_trace_processor_rpc_init" ]  =  createExportWrapper ( "trace_processor_rpc_init" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_trace_processor_on_rpc_request" ]  =  createExportWrapper ( "trace_processor_on_rpc_request" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_main" ]  =  createExportWrapper ( "main" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _malloc  =  Module [ "_malloc" ]  =  createExportWrapper ( "malloc" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_fflush" ]  =  createExportWrapper ( "fflush" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _get _tzname  =  Module [ "__get_tzname" ]  =  createExportWrapper ( "_get_tzname" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _get _daylight  =  Module [ "__get_daylight" ]  =  createExportWrapper ( "_get_daylight" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _get _timezone  =  Module [ "__get_timezone" ]  =  createExportWrapper ( "_get_timezone" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_emscripten_main_thread_process_queued_calls" ]  =  createExportWrapper ( "emscripten_main_thread_process_queued_calls" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _emscripten _stack _get _end  =  Module [ "_emscripten_stack_get_end" ]  =  asm [ "emscripten_stack_get_end" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  stackSave  =  Module [ "stackSave" ]  =  createExportWrapper ( "stackSave" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  stackRestore  =  Module [ "stackRestore" ]  =  createExportWrapper ( "stackRestore" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  stackAlloc  =  Module [ "stackAlloc" ]  =  createExportWrapper ( "stackAlloc" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _emscripten _stack _init  =  Module [ "_emscripten_stack_init" ]  =  asm [ "emscripten_stack_init" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "_emscripten_stack_get_free" ]  =  asm [ "emscripten_stack_get_free" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _memalign  =  Module [ "_memalign" ]  =  createExportWrapper ( "memalign" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viiij" ]  =  createExportWrapper ( "dynCall_viiij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiiij" ]  =  createExportWrapper ( "dynCall_iiiij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iij" ]  =  createExportWrapper ( "dynCall_iij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iijii" ]  =  createExportWrapper ( "dynCall_iijii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiji" ]  =  createExportWrapper ( "dynCall_iiji" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiiiiij" ]  =  createExportWrapper ( "dynCall_iiiiiij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijii" ]  =  createExportWrapper ( "dynCall_viijii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viiiijii" ]  =  createExportWrapper ( "dynCall_viiiijii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viiji" ]  =  createExportWrapper ( "dynCall_viiji" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viij" ]  =  createExportWrapper ( "dynCall_viij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viji" ]  =  createExportWrapper ( "dynCall_viji" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiij" ]  =  createExportWrapper ( "dynCall_iiij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijdi" ]  =  createExportWrapper ( "dynCall_viijdi" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijdii" ]  =  createExportWrapper ( "dynCall_viijdii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iijijii" ]  =  createExportWrapper ( "dynCall_iijijii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijiiii" ]  =  createExportWrapper ( "dynCall_viijiiii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijiiiji" ]  =  createExportWrapper ( "dynCall_viijiiiji" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijiii" ]  =  createExportWrapper ( "dynCall_viijiii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_viijiiijiii" ]  =  createExportWrapper ( "dynCall_viijiiijiii" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_jiji" ]  =  createExportWrapper ( "dynCall_jiji" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiiiij" ]  =  createExportWrapper ( "dynCall_iiiiij" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiiiijj" ]  =  createExportWrapper ( "dynCall_iiiiijj" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "dynCall_iiiiiijj" ]  =  createExportWrapper ( "dynCall_iiiiiijj" ,  asm ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "intArrayFromString" ) )  Module [ "intArrayFromString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "intArrayToString" ) )  Module [ "intArrayToString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "ccall" ]  =  ccall ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "cwrap" ) )  Module [ "cwrap" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setValue" ) )  Module [ "setValue" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getValue" ) )  Module [ "getValue" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "allocate" ) )  Module [ "allocate" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "UTF8ArrayToString" ) )  Module [ "UTF8ArrayToString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "UTF8ToString" ) )  Module [ "UTF8ToString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stringToUTF8Array" ) )  Module [ "stringToUTF8Array" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stringToUTF8" ) )  Module [ "stringToUTF8" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "lengthBytesUTF8" ) )  Module [ "lengthBytesUTF8" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stackTrace" ) )  Module [ "stackTrace" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "addOnPreRun" ) )  Module [ "addOnPreRun" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "addOnInit" ) )  Module [ "addOnInit" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "addOnPreMain" ) )  Module [ "addOnPreMain" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "addOnExit" ) )  Module [ "addOnExit" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "addOnPostRun" ) )  Module [ "addOnPostRun" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeStringToMemory" ) )  Module [ "writeStringToMemory" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeArrayToMemory" ) )  Module [ "writeArrayToMemory" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeAsciiToMemory" ) )  Module [ "writeAsciiToMemory" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "addRunDependency" ) )  Module [ "addRunDependency" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "removeRunDependency" ) )  Module [ "removeRunDependency" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createFolder" ) )  Module [ "FS_createFolder" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createPath" ) )  Module [ "FS_createPath" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createDataFile" ) )  Module [ "FS_createDataFile" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createPreloadedFile" ) )  Module [ "FS_createPreloadedFile" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createLazyFile" ) )  Module [ "FS_createLazyFile" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createLink" ) )  Module [ "FS_createLink" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_createDevice" ) )  Module [ "FS_createDevice" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "FS_unlink" ) )  Module [ "FS_unlink" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getLEB" ) )  Module [ "getLEB" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getFunctionTables" ) )  Module [ "getFunctionTables" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "alignFunctionTables" ) )  Module [ "alignFunctionTables" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerFunctions" ) )  Module [ "registerFunctions" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "addFunction" ]  =  addFunction ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "removeFunction" ) )  Module [ "removeFunction" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getFuncWrapper" ) )  Module [ "getFuncWrapper" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "prettyPrint" ) )  Module [ "prettyPrint" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "makeBigInt" ) )  Module [ "makeBigInt" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "dynCall" ) )  Module [ "dynCall" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getCompilerSetting" ) )  Module [ "getCompilerSetting" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "print" ) )  Module [ "print" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "printErr" ) )  Module [ "printErr" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getTempRet0" ) )  Module [ "getTempRet0" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setTempRet0" ) )  Module [ "setTempRet0" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "callMain" ]  =  callMain ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "abort" ) )  Module [ "abort" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stringToNewUTF8" ) )  Module [ "stringToNewUTF8" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setFileTime" ) )  Module [ "setFileTime" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setFileTime' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "emscripten_realloc_buffer" ) )  Module [ "emscripten_realloc_buffer" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ENV" ) )  Module [ "ENV" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ERRNO_CODES" ) )  Module [ "ERRNO_CODES" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ERRNO_MESSAGES" ) )  Module [ "ERRNO_MESSAGES" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setErrNo" ) )  Module [ "setErrNo" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setErrNo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "DNS" ) )  Module [ "DNS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getHostByName" ) )  Module [ "getHostByName" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getHostByName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "GAI_ERRNO_MESSAGES" ) )  Module [ "GAI_ERRNO_MESSAGES" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "Protocols" ) )  Module [ "Protocols" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "Sockets" ) )  Module [ "Sockets" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getRandomDevice" ) )  Module [ "getRandomDevice" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getRandomDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "traverseStack" ) )  Module [ "traverseStack" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'traverseStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "UNWIND_CACHE" ) )  Module [ "UNWIND_CACHE" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "withBuiltinMalloc" ) )  Module [ "withBuiltinMalloc" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'withBuiltinMalloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "readAsmConstArgsArray" ) )  Module [ "readAsmConstArgsArray" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'readAsmConstArgsArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "readAsmConstArgs" ) )  Module [ "readAsmConstArgs" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "mainThreadEM_ASM" ) )  Module [ "mainThreadEM_ASM" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'mainThreadEM_ASM' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "jstoi_q" ) )  Module [ "jstoi_q" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "jstoi_s" ) )  Module [ "jstoi_s" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getExecutableName" ) )  Module [ "getExecutableName" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getExecutableName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "listenOnce" ) )  Module [ "listenOnce" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'listenOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "autoResumeAudioContext" ) )  Module [ "autoResumeAudioContext" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'autoResumeAudioContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "dynCallLegacy" ) )  Module [ "dynCallLegacy" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'dynCallLegacy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getDynCaller" ) )  Module [ "getDynCaller" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getDynCaller' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "dynCall" ) )  Module [ "dynCall" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "callRuntimeCallbacks" ) )  Module [ "callRuntimeCallbacks" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'callRuntimeCallbacks' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "abortStackOverflow" ) )  Module [ "abortStackOverflow" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "reallyNegative" ) )  Module [ "reallyNegative" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'reallyNegative' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "unSign" ) )  Module [ "unSign" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'unSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "reSign" ) )  Module [ "reSign" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'reSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "formatString" ) )  Module [ "formatString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'formatString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "PATH" ) )  Module [ "PATH" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "PATH_FS" ) )  Module [ "PATH_FS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SYSCALLS" ) )  Module [ "SYSCALLS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "syscallMmap2" ) )  Module [ "syscallMmap2" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "syscallMunmap" ) )  Module [ "syscallMunmap" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "JSEvents" ) )  Module [ "JSEvents" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerKeyEventCallback" ) )  Module [ "registerKeyEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerKeyEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "specialHTMLTargets" ) )  Module [ "specialHTMLTargets" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'specialHTMLTargets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "maybeCStringToJsString" ) )  Module [ "maybeCStringToJsString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'maybeCStringToJsString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "findEventTarget" ) )  Module [ "findEventTarget" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'findEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "findCanvasEventTarget" ) )  Module [ "findCanvasEventTarget" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'findCanvasEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getBoundingClientRect" ) )  Module [ "getBoundingClientRect" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getBoundingClientRect' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillMouseEventData" ) )  Module [ "fillMouseEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillMouseEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerMouseEventCallback" ) )  Module [ "registerMouseEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerMouseEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerWheelEventCallback" ) )  Module [ "registerWheelEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerWheelEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerUiEventCallback" ) )  Module [ "registerUiEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerUiEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerFocusEventCallback" ) )  Module [ "registerFocusEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerFocusEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillDeviceOrientationEventData" ) )  Module [ "fillDeviceOrientationEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillDeviceOrientationEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerDeviceOrientationEventCallback" ) )  Module [ "registerDeviceOrientationEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerDeviceOrientationEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillDeviceMotionEventData" ) )  Module [ "fillDeviceMotionEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillDeviceMotionEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerDeviceMotionEventCallback" ) )  Module [ "registerDeviceMotionEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerDeviceMotionEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "screenOrientation" ) )  Module [ "screenOrientation" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'screenOrientation' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillOrientationChangeEventData" ) )  Module [ "fillOrientationChangeEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillOrientationChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerOrientationChangeEventCallback" ) )  Module [ "registerOrientationChangeEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerOrientationChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillFullscreenChangeEventData" ) )  Module [ "fillFullscreenChangeEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillFullscreenChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerFullscreenChangeEventCallback" ) )  Module [ "registerFullscreenChangeEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerFullscreenChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerRestoreOldStyle" ) )  Module [ "registerRestoreOldStyle" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerRestoreOldStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "hideEverythingExceptGivenElement" ) )  Module [ "hideEverythingExceptGivenElement" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'hideEverythingExceptGivenElement' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "restoreHiddenElements" ) )  Module [ "restoreHiddenElements" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'restoreHiddenElements' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setLetterbox" ) )  Module [ "setLetterbox" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setLetterbox' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "currentFullscreenStrategy" ) )  Module [ "currentFullscreenStrategy" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'currentFullscreenStrategy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "restoreOldWindowedStyle" ) )  Module [ "restoreOldWindowedStyle" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'restoreOldWindowedStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "softFullscreenResizeWebGLRenderTarget" ) )  Module [ "softFullscreenResizeWebGLRenderTarget" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "doRequestFullscreen" ) )  Module [ "doRequestFullscreen" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'doRequestFullscreen' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillPointerlockChangeEventData" ) )  Module [ "fillPointerlockChangeEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillPointerlockChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerPointerlockChangeEventCallback" ) )  Module [ "registerPointerlockChangeEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerPointerlockChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerPointerlockErrorEventCallback" ) )  Module [ "registerPointerlockErrorEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerPointerlockErrorEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "requestPointerLock" ) )  Module [ "requestPointerLock" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'requestPointerLock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillVisibilityChangeEventData" ) )  Module [ "fillVisibilityChangeEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillVisibilityChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerVisibilityChangeEventCallback" ) )  Module [ "registerVisibilityChangeEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerVisibilityChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerTouchEventCallback" ) )  Module [ "registerTouchEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerTouchEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillGamepadEventData" ) )  Module [ "fillGamepadEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillGamepadEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerGamepadEventCallback" ) )  Module [ "registerGamepadEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerGamepadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerBeforeUnloadEventCallback" ) )  Module [ "registerBeforeUnloadEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerBeforeUnloadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "fillBatteryEventData" ) )  Module [ "fillBatteryEventData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'fillBatteryEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "battery" ) )  Module [ "battery" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'battery' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "registerBatteryEventCallback" ) )  Module [ "registerBatteryEventCallback" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'registerBatteryEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setCanvasElementSize" ) )  Module [ "setCanvasElementSize" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getCanvasElementSize" ) )  Module [ "getCanvasElementSize" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "polyfillSetImmediate" ) )  Module [ "polyfillSetImmediate" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'polyfillSetImmediate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "demangle" ) )  Module [ "demangle" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "demangleAll" ) )  Module [ "demangleAll" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "jsStackTrace" ) )  Module [ "jsStackTrace" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stackTrace" ) )  Module [ "stackTrace" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getEnvStrings" ) )  Module [ "getEnvStrings" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getEnvStrings' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "checkWasiClock" ) )  Module [ "checkWasiClock" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'checkWasiClock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeI53ToI64" ) )  Module [ "writeI53ToI64" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeI53ToI64Clamped" ) )  Module [ "writeI53ToI64Clamped" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeI53ToI64Signaling" ) )  Module [ "writeI53ToI64Signaling" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeI53ToU64Clamped" ) )  Module [ "writeI53ToU64Clamped" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeI53ToU64Signaling" ) )  Module [ "writeI53ToU64Signaling" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "readI53FromI64" ) )  Module [ "readI53FromI64" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "readI53FromU64" ) )  Module [ "readI53FromU64" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "convertI32PairToI53" ) )  Module [ "convertI32PairToI53" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "convertU32PairToI53" ) )  Module [ "convertU32PairToI53" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "uncaughtExceptionCount" ) )  Module [ "uncaughtExceptionCount" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'uncaughtExceptionCount' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "exceptionLast" ) )  Module [ "exceptionLast" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'exceptionLast' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "exceptionCaught" ) )  Module [ "exceptionCaught" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'exceptionCaught' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ExceptionInfoAttrs" ) )  Module [ "ExceptionInfoAttrs" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'ExceptionInfoAttrs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ExceptionInfo" ) )  Module [ "ExceptionInfo" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'ExceptionInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "CatchInfo" ) )  Module [ "CatchInfo" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'CatchInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "exception_addRef" ) )  Module [ "exception_addRef" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'exception_addRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "exception_decRef" ) )  Module [ "exception_decRef" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'exception_decRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "Browser" ) )  Module [ "Browser" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "funcWrappers" ) )  Module [ "funcWrappers" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'funcWrappers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "getFuncWrapper" ) )  Module [ "getFuncWrapper" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "setMainLoop" ) )  Module [ "setMainLoop" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'setMainLoop' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "FS" ]  =  FS ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "mmapAlloc" ) )  Module [ "mmapAlloc" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'mmapAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "MEMFS" ) )  Module [ "MEMFS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "TTY" ) )  Module [ "TTY" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "PIPEFS" ) )  Module [ "PIPEFS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SOCKFS" ) )  Module [ "SOCKFS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "tempFixedLengthArray" ) )  Module [ "tempFixedLengthArray" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'tempFixedLengthArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "miniTempWebGLFloatBuffers" ) )  Module [ "miniTempWebGLFloatBuffers" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'miniTempWebGLFloatBuffers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "heapObjectForWebGLType" ) )  Module [ "heapObjectForWebGLType" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'heapObjectForWebGLType' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "heapAccessShiftForWebGLHeap" ) )  Module [ "heapAccessShiftForWebGLHeap" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'heapAccessShiftForWebGLHeap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "GL" ) )  Module [ "GL" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "emscriptenWebGLGet" ) )  Module [ "emscriptenWebGLGet" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "computeUnpackAlignedImageSize" ) )  Module [ "computeUnpackAlignedImageSize" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'computeUnpackAlignedImageSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "emscriptenWebGLGetTexPixelData" ) )  Module [ "emscriptenWebGLGetTexPixelData" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "emscriptenWebGLGetUniform" ) )  Module [ "emscriptenWebGLGetUniform" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "emscriptenWebGLGetVertexAttrib" ) )  Module [ "emscriptenWebGLGetVertexAttrib" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "writeGLArray" ) )  Module [ "writeGLArray" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'writeGLArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "AL" ) )  Module [ "AL" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SDL_unicode" ) )  Module [ "SDL_unicode" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SDL_unicode' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SDL_ttfContext" ) )  Module [ "SDL_ttfContext" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SDL_ttfContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SDL_audio" ) )  Module [ "SDL_audio" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SDL_audio' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SDL" ) )  Module [ "SDL" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "SDL_gfx" ) )  Module [ "SDL_gfx" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "GLUT" ) )  Module [ "GLUT" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "EGL" ) )  Module [ "EGL" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "GLFW_Window" ) )  Module [ "GLFW_Window" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "GLFW" ) )  Module [ "GLFW" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "GLEW" ) )  Module [ "GLEW" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "IDBStore" ) )  Module [ "IDBStore" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "runAndAbortIfError" ) )  Module [ "runAndAbortIfError" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "WORKERFS" ) )  Module [ "WORKERFS" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'WORKERFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "warnOnce" ) )  Module [ "warnOnce" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stackSave" ) )  Module [ "stackSave" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stackRestore" ) )  Module [ "stackRestore" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stackAlloc" ) )  Module [ "stackAlloc" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "AsciiToString" ) )  Module [ "AsciiToString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stringToAscii" ) )  Module [ "stringToAscii" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "UTF16ToString" ) )  Module [ "UTF16ToString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stringToUTF16" ) )  Module [ "stringToUTF16" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "lengthBytesUTF16" ) )  Module [ "lengthBytesUTF16" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "UTF32ToString" ) )  Module [ "UTF32ToString" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "stringToUTF32" ) )  Module [ "stringToUTF32" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "lengthBytesUTF32" ) )  Module [ "lengthBytesUTF32" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "allocateUTF8" ) )  Module [ "allocateUTF8" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "allocateUTF8OnStack" ) )  Module [ "allocateUTF8OnStack" ]  =  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 abort ( "'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "writeStackCookie" ]  =  writeStackCookie ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "checkStackCookie" ]  =  checkStackCookie ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ALLOC_NORMAL" ) )  Object . defineProperty ( Module ,  "ALLOC_NORMAL" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! Object . getOwnPropertyDescriptor ( Module ,  "ALLOC_STACK" ) )  Object . defineProperty ( Module ,  "ALLOC_STACK" ,  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 get :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  abort ( "'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  calledRun ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ExitStatus ( status )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . name  =  "ExitStatus" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . message  =  "Program terminated with exit("  +  status  +  ")" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 this . status  =  status ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								dependenciesFulfilled  =  function  runCaller ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! calledRun )  run ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( ! calledRun )  dependenciesFulfilled  =  runCaller ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  callMain ( args )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( runDependencies  ==  0 ,  'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 assert ( _ _ATPRERUN _ _ . length  ==  0 ,  "cannot call main when preRun functions remain to be called" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  entryFunction  =  Module [ "_main" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 args  =  args  ||  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  argc  =  args . length  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  argv  =  stackAlloc ( ( argc  +  1 )  *  4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ argv  >>  2 ]  =  allocateUTF8OnStack ( thisProgram ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 for  ( var  i  =  1 ;  i  <  argc ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HEAP32 [ ( argv  >>  2 )  +  i ]  =  allocateUTF8OnStack ( args [ i  -  1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 HEAP32 [ ( argv  >>  2 )  +  argc ]  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  ret  =  entryFunction ( argc ,  argv ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exit ( ret ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( e  instanceof  ExitStatus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( e  ==  "unwind" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   noExitRuntime  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  toLog  =  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( e  &&  typeof  e  ===  "object"  &&  e . stack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toLog  =  [  e ,  e . stack  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( "exception thrown: "  +  toLog ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   quit _ ( 1 ,  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  run ( args )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 args  =  args  ||  arguments _ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( runDependencies  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 _emscripten _stack _init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 writeStackCookie ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 preRun ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( runDependencies  >  0 )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function  doRun ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( calledRun )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  calledRun  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "calledRun" ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ABORT )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  initRuntime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  preMain ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  readyPromiseResolve ( Module ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( Module [ "onRuntimeInitialized" ] )  Module [ "onRuntimeInitialized" ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( shouldRunNow )  callMain ( args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  postRun ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( Module [ "setStatus" ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "setStatus" ] ( "Running..." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setTimeout ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   setTimeout ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Module [ "setStatus" ] ( "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   doRun ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  doRun ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 checkStackCookie ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Module [ "run" ]  =  run ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkUnflushedContent ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  oldOut  =  out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  oldErr  =  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 var  has  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 out  =  err  =  function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  has  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  flush  =  Module [ "_fflush" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( flush )  flush ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [  "stdout" ,  "stderr"  ] . forEach ( function ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  info  =  FS . analyzePath ( "/dev/"  +  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( ! info )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  stream  =  info . object ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  rdev  =  stream . rdev ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  tty  =  TTY . ttys [ rdev ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   if  ( tty  &&  tty . output  &&  tty . output . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    has  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  catch  ( e )  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 out  =  oldOut ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 err  =  oldErr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( has )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  warnOnce ( "stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exit ( status ,  implicit )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 checkUnflushedContent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( implicit  &&  noExitRuntime  &&  status  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( noExitRuntime )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! implicit )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   var  msg  =  "program exited (with status: "  +  status  +  "), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   readyPromiseReject ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   err ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exitRuntime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( Module [ "onExit" ] )  Module [ "onExit" ] ( status ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ABORT  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 quit _ ( status ,  new  ExitStatus ( status ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "preInit" ] )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 if  ( typeof  Module [ "preInit" ]  ==  "function" )  Module [ "preInit" ]  =  [  Module [ "preInit" ]  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 while  ( Module [ "preInit" ] . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Module [ "preInit" ] . pop ( ) ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  shouldRunNow  =  true ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( Module [ "noInitialRun" ] )  shouldRunNow  =  false ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								noExitRuntime  =  true ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								run ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  trace _processor _wasm 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  trace _processor _wasm ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  wasm _bridge  =  createCommonjsModule ( function  ( module ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2018 The Android Open Source Project
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Licensed under the Apache License, Version 2.0 (the "License");
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// you may not use this file except in compliance with the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may obtain a copy of the License at
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//      http://www.apache.org/licenses/LICENSE-2.0
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unless required by applicable law or agreed to in writing, software
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distributed under the License is distributed on an "AS IS" BASIS,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See the License for the specific language governing permissions and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// limitations under the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . WasmBridge  =  void  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The Initialize() call will allocate a buffer of REQ_BUF_SIZE bytes which
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// will be used to copy the input request data. This is to avoid passing the
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// input data on the stack, which has a limited (~1MB) size.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The buffer will be allocated by the C++ side and reachable at
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// HEAPU8[reqBufferAddr, +REQ_BUFFER_SIZE].
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  REQ _BUF _SIZE  =  32  *  1024  *  1024 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The end-to-end interaction between JS and Wasm is as follows:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - [JS] Inbound data received by the worker (onmessage() in engine/index.ts).
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   - [JS] onRpcDataReceived() (this file)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     - [C++] trace_processor_on_rpc_request (wasm_bridge.cc)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//       - [C++] some TraceProcessor::method()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//         for (batch in result_rows)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//           - [C++] RpcResponseFunction(bytes) (wasm_bridge.cc)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//             - [JS] onReply() (this file)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//               - [JS] postMessage() (this file)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  WasmBridge  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . reqBufferAddr  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . lastStderr  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . aborted  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  deferredRuntimeInitialized  =  deferred . defer ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . connection  =  trace _processor ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            locateFile :  ( s )  =>  s , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print :  ( line )  =>  console . log ( line ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            printErr :  ( line )  =>  this . appendAndLogErr ( line ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            onRuntimeInitialized :  ( )  =>  deferredRuntimeInitialized . resolve ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . whenInitialized  =  deferredRuntimeInitialized . then ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  fn  =  this . connection . addFunction ( this . onReply . bind ( this ) ,  'vii' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . reqBufferAddr  =  this . connection . ccall ( 'trace_processor_rpc_init' ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /*return=*/  'number' ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /*args=*/  [ 'number' ,  'number' ] ,  [ fn ,  REQ _BUF _SIZE ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    initialize ( port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Ensure that initialize() is called only once.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        logging . assertTrue ( this . messagePort  ===  undefined ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . messagePort  =  port ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Note: setting .onmessage implicitly calls port.start() and dispatches the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // queued messages. addEventListener('message') doesn't.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . messagePort . onmessage  =  this . onMessage . bind ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onMessage ( msg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . aborted )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( 'Wasm module crashed' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        logging . assertTrue ( msg . data  instanceof  Uint8Array ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  msg . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  wrSize  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If the request data is larger than our JS<>Wasm interop buffer, split it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // into multiple writes. The RPC channel is byte-oriented and is designed to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // deal with arbitrary fragmentations.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( wrSize  <  data . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  sliceLen  =  Math . min ( data . length  -  wrSize ,  REQ _BUF _SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  dataSlice  =  data . subarray ( wrSize ,  wrSize  +  sliceLen ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . connection . HEAPU8 . set ( dataSlice ,  this . reqBufferAddr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            wrSize  +=  sliceLen ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . connection . ccall ( 'trace_processor_on_rpc_request' ,  // C function name.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'void' ,  // Return type.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                [ 'number' ] ,  // Arg types.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                [ sliceLen ]  // Args.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . aborted  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  abortReason  =  ` ${ err } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err  instanceof  Error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    abortReason  =  ` ${ err . name } :  ${ err . message } \n ${ err . stack } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                abortReason  +=  '\n\nstderr: \n'  +  this . lastStderr . join ( '\n' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( abortReason ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  // while(wrSize < data.length)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This function is bound and passed to Initialize and is called by the C++
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // code while in the ccall(trace_processor_on_rpc_request).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onReply ( heapPtr ,  size )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  this . connection . HEAPU8 . slice ( heapPtr ,  heapPtr  +  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        logging . assertExists ( this . messagePort ) . postMessage ( data ,  [ data . buffer ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    appendAndLogErr ( line )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        console . warn ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Keep the last N lines in the |lastStderr| buffer.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . lastStderr . push ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . lastStderr . length  >  512 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . lastStderr . shift ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . WasmBridge  =  WasmBridge ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  engine  =  createCommonjsModule ( function  ( module ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) 2018 The Android Open Source Project
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Licensed under the Apache License, Version 2.0 (the "License");
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// you may not use this file except in compliance with the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may obtain a copy of the License at
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//      http://www.apache.org/licenses/LICENSE-2.0
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unless required by applicable law or agreed to in writing, software
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distributed under the License is distributed on an "AS IS" BASIS,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See the License for the specific language governing permissions and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// limitations under the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  selfWorker  =  self ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  wasmBridge  =  new  wasm _bridge . WasmBridge ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// There are two message handlers here:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 1. The Worker (self.onmessage) handler.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 2. The MessagePort handler.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// When the app bootstraps, frontend/index.ts creates a MessageChannel and sends
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// one end to the controller (the other worker) and the other end to us, so that
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the controller can interact with the Wasm worker without roundtrips through
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the frontend.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The sequence of actions is the following:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 1. The frontend does one postMessage({port: MessagePort}) on the Worker
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//    scope. This message transfers the MessagePort (whose other end is
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//    connected to the Conotroller). This is the only postMessage we'll ever
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//    receive here.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 2. All the other messages (i.e. the TraceProcessor RPC binary pipe) will be
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//    received on the MessagePort.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Receives the boostrap message from the frontend with the MessagePort.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								selfWorker . onmessage  =  ( msg )  =>  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  port  =  logging . assertExists ( msg . data . enginePort ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wasmBridge . initialize ( port ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return  engine ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ( ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=engine_bundle.js.map