text: // 此文件在worker环境下运行。
  importScripts('md5.js');
  
  var fr = new FileReader();
  
  var Md5File = (function() {
      /*var throttle = 3,
          pool = [],
          wating = [];
  
      function _tick() {
          var avaibles = [],
              i, fr, cb;
  
          for ( i = 0; i < throttle; i++ ) {
              fr = pool[ i ];
              fr && fr.readyState === 2 && avaibles.push( fr );
          }
  
          while ( avaibles.length && wating.length ) {
              fr = avaibles.shift();
              cb = wating.shift();
              fr.onload = fr.onerror = null;
              cb( fr );
              fr.onloadend = _tick;
          }
      }
  
      function getReader( cb ) {
          var fr;
  
          if ( pool.length < throttle ) {
              fr = new FileReader();
              pool.push( fr );
              cb( fr );
              fr.onloadend = _tick;
              return;
          }
  
          wating.push( cb );
          _tick();
      }*/
  
      return function( file, cb ) {
          var reader = new FileReader();
  
          reader.onload = function() {
              cb( md5( this.result ) );
              reader.onload = reader.onerror = null;
  
              reader.readAsBinaryString( new Blob() );
              reader = null;
          };
  
          reader.onerror = function( e ) {
              reader = reader.onload = reader.onerror = null;
          };
  
          reader.readAsBinaryString( file );
      }
  })();
  
  onmessage = function( e ) {
      var file = e.data;
      Md5File( file, function( ret ) {
          postMessage( ret );
      });
  }