2016-12-31 08:11:36 +00:00
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ; else { var f ; "undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof self && ( f = self ) , f . JSZip = e ( ) } } ( function ( ) { var define , module , exports ; return function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; throw new Error ( "Cannot find module '" + o + "'" ) } var f = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( f . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , f , f . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ( { 1 : [ function ( _dereq _ , module , exports ) { "use strict" ; var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; exports . encode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 , enc1 , enc2 , enc3 , enc4 ; var i = 0 ; while ( i < input . length ) { chr1 = input . charCodeAt ( i ++ ) ; chr2 = input . charCodeAt ( i ++ ) ; chr3 = input . charCodeAt ( i ++ ) ; enc1 = chr1 >> 2 ; enc2 = ( chr1 & 3 ) << 4 | chr2 >> 4 ; enc3 = ( chr2 & 15 ) << 2 | chr3 >> 6 ; enc4 = chr3 & 63 ; if ( isNaN ( chr2 ) ) { enc3 = enc4 = 64 } else if ( isNaN ( chr3 ) ) { enc4 = 64 } output = output + _keyStr . charAt ( enc1 ) + _keyStr . charAt ( enc2 ) + _keyStr . charAt ( enc3 ) + _keyStr . charAt ( enc4 ) } return output } ; exports . decode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 ; var enc1 , enc2 , enc3 , enc4 ; var i = 0 ; input = input . replace ( /[^A-Za-z0-9\+\/\=]/g , "" ) ; while ( i < input . length ) { enc1 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc2 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc3 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc4 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; chr1 = enc1 << 2 | enc2 >> 4 ; chr2 = ( enc2 & 15 ) << 4 | enc3 >> 2 ; chr3 = ( enc3 & 3 ) << 6 | enc4 ; output = output + String . fromCharCode ( chr1 ) ; if ( enc3 != 64 ) { output = output + String . fromCharCode ( chr2 ) } if ( enc4 != 64 ) { output = output + String . fromCharCode ( chr3 ) } } return output } } , { } ] , 2 : [ function ( _dereq _ , module , exports ) { "use strict" ; function CompressedObject ( ) { this . compressedSize = 0 ; this . uncompressedSize = 0 ; this . crc32 = 0 ; this . compressionMethod = null ; this . compressedContent = null } CompressedObject . prototype = { getContent : function ( ) { return null } , getCompressedContent : function ( ) { return null } } ; module . exports = CompressedObject } , { } ] , 3 : [ function ( _dereq _ , module , exports ) { "use strict" ; exports . STORE = { magic : "\0\0" , compress : function ( content ) { return content } , uncompress : function ( content ) { return content } , compressInputType : null , uncompressInputType : null } ; exports . DEFLATE = _dereq _ ( "./flate" ) } , { "./flate" : 8 } ] , 4 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "./utils" ) ; var table = [ 0 , 1996959894 , 3993919788 , 2567524794 , 124634137 , 1886057615 , 3915621685 , 2657392035 , 249268274 , 2044508324 , 3772115230 , 2547177864 , 162941995 , 2125561021 , 3887607047 , 2428444049 , 498536548 , 1789927666 , 4089016648 , 2227061214 , 450548861 , 1843258603 , 4107580753 , 2211677639 , 325883990 , 1684777152 , 4251122042 , 2321926636 , 335633487 , 1661365465 , 4195302755 , 2366115317 , 997073096 , 1281953886 , 3579855332 , 2724688242 , 1006888145 , 1258607687 , 3524101629 , 2768942443 , 901097722 , 1119000684 , 3686517206 , 2898065728 , 853044451 , 1172266101 , 3705015759 , 2882616665 , 651767980 , 1373503546 , 3369554304 , 3218104598 , 565507253 , 1454621731 , 3485111705 , 3099436303 , 671266974 , 1594198024 , 3322730930 , 2970347812 , 795835527 , 1483230225 , 3244367275 , 3060149565 , 1994146192 , 31158534 , 2563907772 , 4023717930 , 1907459465 , 112637215 , 2680153253 , 3904427059 , 2013776290 , 251722036 , 2517215374 , 3775830040 , 2137656763 , 141376813 , 2439277719 , 3865271297 , 1802195444 , 476864866 , 2238001368 , 4066508878 , 1812370925 , 453092731 , 2181625025 , 4111451223 , 1706088902 , 314042704 , 2344532202 , 4240017532 , 1658658271 , 366619977 , 2362670323 , 4224994405 , 1303535960 , 984961486 , 2747007092 , 3569037538 , 1256170817 , 1037604311 , 2765210733 , 3554079995 , 1131014506 , 879679996 , 2909243462 , 3663771856 , 1141124467 , 855842277 , 2852801631 , 3708648649 , 1342533948 , 654459306 , 3188396048 , 3373015174 , 1466479909 , 544179635 , 3110523913 , 3462522015 , 1591671054 , 702138776 , 2966460450 , 3352799412 , 1504918807 , 783551873 , 3082640443 , 3233442989 , 3988292384 , 2596254646 , 62317068 , 1957810842 , 3939845945 , 2647816111 , 81470997 , 1943803523 , 3814918930 , 2489596804 , 225274430 , 2053790376 , 3826175755 , 2466906013 , 167816743 , 20
} ; exports . findCompression = function ( compressionMethod ) { for ( var method in compressions ) { if ( ! compressions . hasOwnProperty ( method ) ) { continue } if ( compressions [ method ] . magic === compressionMethod ) { return compressions [ method ] } } return null } ; exports . isRegExp = function ( object ) { return Object . prototype . toString . call ( object ) === "[object RegExp]" } } , { "./compressions" : 3 , "./nodeBuffer" : 11 , "./support" : 17 } ] , 22 : [ function ( _dereq _ , module , exports ) { "use strict" ; var StringReader = _dereq _ ( "./stringReader" ) ; var NodeBufferReader = _dereq _ ( "./nodeBufferReader" ) ; var Uint8ArrayReader = _dereq _ ( "./uint8ArrayReader" ) ; var utils = _dereq _ ( "./utils" ) ; var sig = _dereq _ ( "./signature" ) ; var ZipEntry = _dereq _ ( "./zipEntry" ) ; var support = _dereq _ ( "./support" ) ; var jszipProto = _dereq _ ( "./object" ) ; function ZipEntries ( data , loadOptions ) { this . files = [ ] ; this . loadOptions = loadOptions ; if ( data ) { this . load ( data ) } } ZipEntries . prototype = { checkSignature : function ( expectedSignature ) { var signature = this . reader . readString ( 4 ) ; if ( signature !== expectedSignature ) { throw new Error ( "Corrupted zip or bug : unexpected signature " + "(" + utils . pretty ( signature ) + ", expected " + utils . pretty ( expectedSignature ) + ")" ) } } , readBlockEndOfCentral : function ( ) { this . diskNumber = this . reader . readInt ( 2 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 2 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 2 ) ; this . centralDirRecords = this . reader . readInt ( 2 ) ; this . centralDirSize = this . reader . readInt ( 4 ) ; this . centralDirOffset = this . reader . readInt ( 4 ) ; this . zipCommentLength = this . reader . readInt ( 2 ) ; this . zipComment = this . reader . readString ( this . zipCommentLength ) ; this . zipComment = jszipProto . utf8decode ( this . zipComment ) } , readBlockZip64EndOfCentral : function ( ) { this . zip64EndOfCentralSize = this . reader . readInt ( 8 ) ; this . versionMadeBy = this . reader . readString ( 2 ) ; this . versionNeeded = this . reader . readInt ( 2 ) ; this . diskNumber = this . reader . readInt ( 4 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 4 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 8 ) ; this . centralDirRecords = this . reader . readInt ( 8 ) ; this . centralDirSize = this . reader . readInt ( 8 ) ; this . centralDirOffset = this . reader . readInt ( 8 ) ; this . zip64ExtensibleData = { } ; var extraDataSize = this . zip64EndOfCentralSize - 44 , index = 0 , extraFieldId , extraFieldLength , extraFieldValue ; while ( index < extraDataSize ) { extraFieldId = this . reader . readInt ( 2 ) ; extraFieldLength = this . reader . readInt ( 4 ) ; extraFieldValue = this . reader . readString ( extraFieldLength ) ; this . zip64ExtensibleData [ extraFieldId ] = { id : extraFieldId , length : extraFieldLength , value : extraFieldValue } } } , readBlockZip64EndOfCentralLocator : function ( ) { this . diskWithZip64CentralDirStart = this . reader . readInt ( 4 ) ; this . relativeOffsetEndOfZip64CentralDir = this . reader . readInt ( 8 ) ; this . disksCount = this . reader . readInt ( 4 ) ; if ( this . disksCount > 1 ) { throw new Error ( "Multi-volumes zip are not supported" ) } } , readLocalFiles : function ( ) { var i , file ; for ( i = 0 ; i < this . files . length ; i ++ ) { file = this . files [ i ] ; this . reader . setIndex ( file . localHeaderOffset ) ; this . checkSignature ( sig . LOCAL _FILE _HEADER ) ; file . readLocalPart ( this . reader ) ; file . handleUTF8 ( ) } } , readCentralDir : function ( ) { var file ; this . reader . setIndex ( this . centralDirOffset ) ; while ( this . reader . readString ( 4 ) === sig . CENTRAL _FILE _HEADER ) { file = new ZipEntry ( { zip64 : this . zip64 } , this . loadOptions ) ; file . readCentralPart ( this . reader ) ; this . files . push ( file ) } } , readEndOfCentral : function ( ) { var offset = this . reader . lastIndexOfSignature ( sig . CENTRAL _DIRECTORY _END ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find end of central directory" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . CENTRAL _DIRECTORY _END ) ; this . readBlockEndOfCentral ( ) ; if ( this . diskNumber === utils . MAX _VALUE _16BITS || this . diskWithCentralDirStart === utils . MAX _VALUE _16BITS || this . centralDirRecordsOnThisDisk === utils . MAX _VALUE _16BITS || this . centralDirRecords === utils . MAX _VALUE _16BITS || this . centralDirSize === utils . MAX _VALUE _32BITS || this . centralDirOffset === utils . MAX _VALUE _32BITS ) { this . zip64 = true ; offset = this . reader . lastIndexOfSignature ( sig . ZIP64 _CENTRAL _DIRECTORY _LOCATOR ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find the ZIP64 end of central directory locator" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . ZIP64 _CENTRAL _DIRECTORY _LO
var bflush ; for ( ; ; ) { if ( s . lookahead === 0 ) { fill _window ( s ) ; if ( s . lookahead === 0 ) { if ( flush === Z _NO _FLUSH ) { return BS _NEED _MORE } break } } s . match _length = 0 ; bflush = trees . _tr _tally ( s , 0 , s . window [ s . strstart ] ) ; s . lookahead -- ; s . strstart ++ ; if ( bflush ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } } s . insert = 0 ; if ( flush === Z _FINISH ) { flush _block _only ( s , true ) ; if ( s . strm . avail _out === 0 ) { return BS _FINISH _STARTED } return BS _FINISH _DONE } if ( s . last _lit ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } return BS _BLOCK _DONE } var Config = function ( good _length , max _lazy , nice _length , max _chain , func ) { this . good _length = good _length ; this . max _lazy = max _lazy ; this . nice _length = nice _length ; this . max _chain = max _chain ; this . func = func } ; var configuration _table ; configuration _table = [ new Config ( 0 , 0 , 0 , 0 , deflate _stored ) , new Config ( 4 , 4 , 8 , 4 , deflate _fast ) , new Config ( 4 , 5 , 16 , 8 , deflate _fast ) , new Config ( 4 , 6 , 32 , 32 , deflate _fast ) , new Config ( 4 , 4 , 16 , 16 , deflate _slow ) , new Config ( 8 , 16 , 32 , 32 , deflate _slow ) , new Config ( 8 , 16 , 128 , 128 , deflate _slow ) , new Config ( 8 , 32 , 128 , 256 , deflate _slow ) , new Config ( 32 , 128 , 258 , 1024 , deflate _slow ) , new Config ( 32 , 258 , 258 , 4096 , deflate _slow ) ] ; function lm _init ( s ) { s . window _size = 2 * s . w _size ; zero ( s . head ) ; s . max _lazy _match = configuration _table [ s . level ] . max _lazy ; s . good _match = configuration _table [ s . level ] . good _length ; s . nice _match = configuration _table [ s . level ] . nice _length ; s . max _chain _length = configuration _table [ s . level ] . max _chain ; s . strstart = 0 ; s . block _start = 0 ; s . lookahead = 0 ; s . insert = 0 ; s . match _length = s . prev _length = MIN _MATCH - 1 ; s . match _available = 0 ; s . ins _h = 0 } function DeflateState ( ) { this . strm = null ; this . status = 0 ; this . pending _buf = null ; this . pending _buf _size = 0 ; this . pending _out = 0 ; this . pending = 0 ; this . wrap = 0 ; this . gzhead = null ; this . gzindex = 0 ; this . method = Z _DEFLATED ; this . last _flush = - 1 ; this . w _size = 0 ; this . w _bits = 0 ; this . w _mask = 0 ; this . window = null ; this . window _size = 0 ; this . prev = null ; this . head = null ; this . ins _h = 0 ; this . hash _size = 0 ; this . hash _bits = 0 ; this . hash _mask = 0 ; this . hash _shift = 0 ; this . block _start = 0 ; this . match _length = 0 ; this . prev _match = 0 ; this . match _available = 0 ; this . strstart = 0 ; this . match _start = 0 ; this . lookahead = 0 ; this . prev _length = 0 ; this . max _chain _length = 0 ; this . max _lazy _match = 0 ; this . level = 0 ; this . strategy = 0 ; this . good _match = 0 ; this . nice _match = 0 ; this . dyn _ltree = new utils . Buf16 ( HEAP _SIZE * 2 ) ; this . dyn _dtree = new utils . Buf16 ( ( 2 * D _CODES + 1 ) * 2 ) ; this . bl _tree = new utils . Buf16 ( ( 2 * BL _CODES + 1 ) * 2 ) ; zero ( this . dyn _ltree ) ; zero ( this . dyn _dtree ) ; zero ( this . bl _tree ) ; this . l _desc = null ; this . d _desc = null ; this . bl _desc = null ; this . bl _count = new utils . Buf16 ( MAX _BITS + 1 ) ; this . heap = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . heap ) ; this . heap _len = 0 ; this . heap _max = 0 ; this . depth = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . depth ) ; this . l _buf = 0 ; this . lit _bufsize = 0 ; this . last _lit = 0 ; this . d _buf = 0 ; this . opt _len = 0 ; this . static _len = 0 ; this . matches = 0 ; this . insert = 0 ; this . bi _buf = 0 ; this . bi _valid = 0 } function deflateResetKeep ( strm ) { var s ; if ( ! strm || ! strm . state ) { return err ( strm , Z _STREAM _ERROR ) } strm . total _in = strm . total _out = 0 ; strm . data _type = Z _UNKNOWN ; s = strm . state ; s . pending = 0 ; s . pending _out = 0 ; if ( s . wrap < 0 ) { s . wrap = - s . wrap } s . status = s . wrap ? INIT _STATE : BUSY _STATE ; strm . adler = s . wrap === 2 ? 0 : 1 ; s . last _flush = Z _NO _FLUSH ; trees . _tr _init ( s ) ; return Z _OK } function deflateReset ( strm ) { var ret = deflateResetKeep ( strm ) ; if ( ret === Z _OK ) { lm _init ( strm . state ) } return ret } function deflateSetHeader ( strm , head ) { if ( ! strm || ! strm . state ) { return Z _STREAM _ERROR } if ( strm . state . wrap !== 2 ) { return Z _STREAM _ERROR } strm . state . gzhead = head ; return Z _OK } function deflateInit2 ( strm , level , method , windowBits , memLevel , strategy ) { if ( ! strm ) { return Z _STREAM _ERROR } var wrap = 1 ; if ( level === Z _DEFAULT _COMPRESSION ) { level = 6 } if ( windowBits < 0 ) { wrap = 0 ; windowBits = - windowBits } else if ( windowBits > 15 ) { wrap = 2 ; windowBits -= 16 } if ( memLevel < 1 || memLevel > MAX _MEM _LEVEL || method !== Z _DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z _FIXED ) { return err ( strm , Z _STREAM _ERROR ) } if ( windowBits === 8 ) { windowBits = 9 } var s = new DeflateState ; strm . state = s ; s . strm = strm ; s . wrap = wrap ; s . gzhead = null ; s . w _bits = windowBits ; s . w _size = 1 << s . w _bits ; s . w _mask = s . w _size - 1 ; s . hash _bits = memLevel + 7 ; s . hash _size = 1 << s . hash _bits ; s . hash _mask = s . hash _size - 1 ; s . hash _shift = ~ ~ ( ( s . hash _b
2017-02-04 00:39:38 +00:00
exports . inflateInfo = "pako inflate (from Nodeca project)" } , { "../utils/common" : 27 , "./adler32" : 29 , "./crc32" : 31 , "./inffast" : 34 , "./inftrees" : 36 } ] , 36 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var MAXBITS = 15 ; var ENOUGH _LENS = 852 ; var ENOUGH _DISTS = 592 ; var CODES = 0 ; var LENS = 1 ; var DISTS = 2 ; var lbase = [ 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 15 , 17 , 19 , 23 , 27 , 31 , 35 , 43 , 51 , 59 , 67 , 83 , 99 , 115 , 131 , 163 , 195 , 227 , 258 , 0 , 0 ] ; var lext = [ 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 17 , 17 , 17 , 17 , 18 , 18 , 18 , 18 , 19 , 19 , 19 , 19 , 20 , 20 , 20 , 20 , 21 , 21 , 21 , 21 , 16 , 72 , 78 ] ; var dbase = [ 1 , 2 , 3 , 4 , 5 , 7 , 9 , 13 , 17 , 25 , 33 , 49 , 65 , 97 , 129 , 193 , 257 , 385 , 513 , 769 , 1025 , 1537 , 2049 , 3073 , 4097 , 6145 , 8193 , 12289 , 16385 , 24577 , 0 , 0 ] ; var dext = [ 16 , 16 , 16 , 16 , 17 , 17 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , 27 , 27 , 28 , 28 , 29 , 29 , 64 , 64 ] ; module . exports = function inflate _table ( type , lens , lens _index , codes , table , table _index , work , opts ) { var bits = opts . bits ; var len = 0 ; var sym = 0 ; var min = 0 , max = 0 ; var root = 0 ; var curr = 0 ; var drop = 0 ; var left = 0 ; var used = 0 ; var huff = 0 ; var incr ; var fill ; var low ; var mask ; var next ; var base = null ; var base _index = 0 ; var end ; var count = new utils . Buf16 ( MAXBITS + 1 ) ; var offs = new utils . Buf16 ( MAXBITS + 1 ) ; var extra = null ; var extra _index = 0 ; var here _bits , here _op , here _val ; for ( len = 0 ; len <= MAXBITS ; len ++ ) { count [ len ] = 0 } for ( sym = 0 ; sym < codes ; sym ++ ) { count [ lens [ lens _index + sym ] ] ++ } root = bits ; for ( max = MAXBITS ; max >= 1 ; max -- ) { if ( count [ max ] !== 0 ) { break } } if ( root > max ) { root = max } if ( max === 0 ) { table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; opts . bits = 1 ; return 0 } for ( min = 1 ; min < max ; min ++ ) { if ( count [ min ] !== 0 ) { break } } if ( root < min ) { root = min } left = 1 ; for ( len = 1 ; len <= MAXBITS ; len ++ ) { left <<= 1 ; left -= count [ len ] ; if ( left < 0 ) { return - 1 } } if ( left > 0 && ( type === CODES || max !== 1 ) ) { return - 1 } offs [ 1 ] = 0 ; for ( len = 1 ; len < MAXBITS ; len ++ ) { offs [ len + 1 ] = offs [ len ] + count [ len ] } for ( sym = 0 ; sym < codes ; sym ++ ) { if ( lens [ lens _index + sym ] !== 0 ) { work [ offs [ lens [ lens _index + sym ] ] ++ ] = sym } } if ( type === CODES ) { base = extra = work ; end = 19 } else if ( type === LENS ) { base = lbase ; base _index -= 257 ; extra = lext ; extra _index -= 257 ; end = 256 } else { base = dbase ; extra = dext ; end = - 1 } huff = 0 ; sym = 0 ; len = min ; next = table _index ; curr = root ; drop = 0 ; low = - 1 ; used = 1 << root ; mask = used - 1 ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } var i = 0 ; for ( ; ; ) { i ++ ; here _bits = len - drop ; if ( work [ sym ] < end ) { here _op = 0 ; here _val = work [ sym ] } else if ( work [ sym ] > end ) { here _op = extra [ extra _index + work [ sym ] ] ; here _val = base [ base _index + work [ sym ] ] } else { here _op = 32 + 64 ; here _val = 0 } incr = 1 << len - drop ; fill = 1 << curr ; min = fill ; do { fill -= incr ; table [ next + ( huff >> drop ) + fill ] = here _bits << 24 | here _op << 16 | here _val | 0 } while ( fill !== 0 ) ; incr = 1 << len - 1 ; while ( huff & incr ) { incr >>= 1 } if ( incr !== 0 ) { huff &= incr - 1 ; huff += incr } else { huff = 0 } sym ++ ; if ( -- count [ len ] === 0 ) { if ( len === max ) { break } len = lens [ lens _index + work [ sym ] ] } if ( len > root && ( huff & mask ) !== low ) { if ( drop === 0 ) { drop = root } next += min ; curr = len - drop ; left = 1 << curr ; while ( curr + drop < max ) { left -= count [ curr + drop ] ; if ( left <= 0 ) { break } curr ++ ; left <<= 1 } used += 1 << curr ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } low = huff & mask ; table [ low ] = root << 24 | curr << 16 | next - table _index | 0 } } if ( huff !== 0 ) { table [ next + huff ] = len - drop << 24 | 64 << 16 | 0 } opts . bits = root ; return 0 } } , { "../utils/common" : 27 } ] , 37 : [ function ( _dereq _ , module , exports ) { "use strict" ; module . exports = { 2 : "need dictionary" , 1 : "stream end" , 0 : "" , "-1" : "file error" , "-2" : "stream error" , "-3" : "data error" , "-4" : "insufficient memory" , "-5" : "buffer error" , "-6" : "incompatible version" } } , { } ] , 38 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var Z _FIXED = 4 ; var Z _BINARY = 0 ; var Z _TEXT = 1 ; var Z _UNKNOWN = 2 ; function zero ( buf ) { var len = buf . length ; while ( -- len >= 0 ) { buf [ len ] = 0 } } var STORED _BLOCK = 0 ; var STATIC _TREES = 1 ; var DYN _TREES = 2 ; var MIN _MATCH = 3 ; var MAX _MATCH = 258 ; var LENGTH _CODES = 29 ; var LITERALS = 256 ; var L _CODES = LITERALS + 1 + LENGTH _CODES ; var D _CODES = 30 ; var BL _CODES = 19 ; var HEAP _SIZE = 2 * L _CODES + 1 ; var MAX _BITS = 15 ; var Buf _size = 16 ; var MAX _BL _BITS = 7 ; var END _BLOCK = 256 ; var REP _3 _6 = 16 ; var REPZ _3 _10 = 17 ; var REPZ _11 _138 = 18 ; var extra _lbits = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 0 ] ; var extra _dbits = [ 0 , 0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , 11 , 11 , 12 , 12 , 13 , 13 ] ; var extra _blbits = [ 0 , 0 , 0
} fmt = fmt . replace ( /^#+([0.])/ , "$1" ) ; if ( ( r = fmt . match ( /^(0*)\.(#*)$/ ) ) !== null ) { return sign + ( "" + aval ) . replace ( /\.(\d*[1-9])0*$/ , ".$1" ) . replace ( /^(-?\d*)$/ , "$1." ) . replace ( /^0\./ , r [ 1 ] . length ? "0." : "." ) } if ( ( r = fmt . match ( /^#,##0(\.?)$/ ) ) !== null ) return sign + commaify ( "" + aval ) ; if ( ( r = fmt . match ( /^#,##0\.([#0]*0)$/ ) ) !== null ) { return val < 0 ? "-" + write _num _int ( type , fmt , - val ) : commaify ( "" + val ) + "." + fill ( "0" , r [ 1 ] . length ) } if ( ( r = fmt . match ( /^#,#*,#0/ ) ) !== null ) return write _num _int ( type , fmt . replace ( /^#,#*,/ , "" ) , val ) ; if ( ( r = fmt . match ( /^([0#]+)(\\?-([0#]+))+$/ ) ) !== null ) { o = _strrev ( write _num _int ( type , fmt . replace ( /[\\-]/g , "" ) , val ) ) ; ri = 0 ; return _strrev ( _strrev ( fmt . replace ( /\\/g , "" ) ) . replace ( /[0#]/g , function ( x ) { return ri < o . length ? o [ ri ++ ] : x === "0" ? "0" : "" } ) ) } if ( fmt . match ( phone ) !== null ) { o = write _num _int ( type , "##########" , val ) ; return "(" + o . substr ( 0 , 3 ) + ") " + o . substr ( 3 , 3 ) + "-" + o . substr ( 6 ) } var oa = "" ; if ( ( r = fmt . match ( /^([#0?]+)( ?)\/( ?)([#0?]+)/ ) ) !== null ) { ri = Math . min ( r [ 4 ] . length , 7 ) ; ff = frac ( aval , Math . pow ( 10 , ri ) - 1 , false ) ; o = "" + sign ; oa = write _num ( "n" , r [ 1 ] , ff [ 1 ] ) ; if ( oa [ oa . length - 1 ] == " " ) oa = oa . substr ( 0 , oa . length - 1 ) + "0" ; o += oa + r [ 2 ] + "/" + r [ 3 ] ; oa = rpad _ ( ff [ 2 ] , ri ) ; if ( oa . length < r [ 4 ] . length ) oa = hashq ( r [ 4 ] . substr ( r [ 4 ] . length - oa . length ) ) + oa ; o += oa ; return o } if ( ( r = fmt . match ( /^# ([#0?]+)( ?)\/( ?)([#0?]+)/ ) ) !== null ) { ri = Math . min ( Math . max ( r [ 1 ] . length , r [ 4 ] . length ) , 7 ) ; ff = frac ( aval , Math . pow ( 10 , ri ) - 1 , true ) ; return sign + ( ff [ 0 ] || ( ff [ 1 ] ? "" : "0" ) ) + " " + ( ff [ 1 ] ? pad _ ( ff [ 1 ] , ri ) + r [ 2 ] + "/" + r [ 3 ] + rpad _ ( ff [ 2 ] , ri ) : fill ( " " , 2 * ri + 1 + r [ 2 ] . length + r [ 3 ] . length ) ) } if ( ( r = fmt . match ( /^[#0?]+$/ ) ) !== null ) { o = "" + val ; if ( fmt . length <= o . length ) return o ; return hashq ( fmt . substr ( 0 , fmt . length - o . length ) ) + o } if ( ( r = fmt . match ( /^([#0]+)\.([#0]+)$/ ) ) !== null ) { o = "" + val . toFixed ( Math . min ( r [ 2 ] . length , 10 ) ) . replace ( /([^0])0+$/ , "$1" ) ; ri = o . indexOf ( "." ) ; var lres = fmt . indexOf ( "." ) - ri , rres = fmt . length - o . length - lres ; return hashq ( fmt . substr ( 0 , lres ) + o + fmt . substr ( fmt . length - rres ) ) } if ( ( r = fmt . match ( /^00,000\.([#0]*0)$/ ) ) !== null ) { return val < 0 ? "-" + write _num _int ( type , fmt , - val ) : commaify ( "" + val ) . replace ( /^\d,\d{3}$/ , "0$&" ) . replace ( /^\d*$/ , function ( $$ ) { return "00," + ( $$ . length < 3 ? pad0 ( 0 , 3 - $$ . length ) : "" ) + $$ } ) + "." + pad0 ( 0 , r [ 1 ] . length ) } switch ( fmt ) { case "#,###" : var x = commaify ( "" + aval ) ; return x !== "0" ? sign + x : "" ; default : } throw new Error ( "unsupported format |" + fmt + "|" ) } return function write _num ( type , fmt , val ) { return ( val | 0 ) === val ? write _num _int ( type , fmt , val ) : write _num _flt ( type , fmt , val ) } } ( ) ; function split _fmt ( fmt ) { var out = [ ] ; var in _str = false , cc ; for ( var i = 0 , j = 0 ; i < fmt . length ; ++ i ) switch ( cc = fmt . charCodeAt ( i ) ) { case 34 : in _str = ! in _str ; break ; case 95 : case 42 : case 92 : ++ i ; break ; case 59 : out [ out . length ] = fmt . substr ( j , i - j ) ; j = i + 1 } out [ out . length ] = fmt . substr ( j ) ; if ( in _str === true ) throw new Error ( "Format |" + fmt + "| unterminated string " ) ; return out } SSF . _split = split _fmt ; var abstime = /\[[HhMmSs]*\]/ ; function eval _fmt ( fmt , v , opts , flen ) { var out = [ ] , o = "" , i = 0 , c = "" , lst = "t" , q , dt , j , cc ; var hr = "H" ; while ( i < fmt . length ) { switch ( c = fmt [ i ] ) { case "G" : if ( ! isgeneral ( fmt , i ) ) throw new Error ( "unrecognized character " + c + " in " + fmt ) ; out [ out . length ] = { t : "G" , v : "General" } ; i += 7 ; break ; case '"' : for ( o = "" ; ( cc = fmt . charCodeAt ( ++ i ) ) !== 34 && i < fmt . length ; ) o += String . fromCharCode ( cc ) ; out [ out . length ] = { t : "t" , v : o } ; ++ i ; break ; case "\\" : var w = fmt [ ++ i ] , t = w === "(" || w === ")" ? w : "t" ; out [ out . length ] = { t : t , v : w } ; ++ i ; break ; case "_" : out [ out . length ] = { t : "t" , v : " " } ; i += 2 ; break ; case "@" : out [ out . length ] = { t : "T" , v : v } ; ++ i ; break ; case "B" : case "b" : if ( fmt [ i + 1 ] === "1" || fmt [ i + 1 ] === "2" ) { if ( dt == null ) { dt = parse _date _code ( v , opts , fmt [ i + 1 ] === "2" ) ; if ( dt == null ) return "" } out [ out . length ] = { t : "X" , v : fmt . substr ( i , 2 ) } ; lst = c ; i += 2 ; break } case "M" : case "D" : case "Y" : case "H" : case "S" : case "E" : c = c . toLowerCase ( ) ; case "m" : case "d" : case "y" : case "h" : case "s" : case "e" : case "g" : if ( v < 0 ) return "" ; if ( dt == null ) { dt = parse _date _code ( v , opts ) ; if ( dt == null ) return "" } o = c ; while ( ++ i < fmt . length && fmt [ i ] . toLowerCase ( ) === c ) o += c ; if ( c === "m" && lst . toLowerCase ( ) === "h" ) c = "M" ; if ( c === "h" ) c = hr ; out [ out . length ] = { t : c , v : o } ; lst = c ; break ; case "A" : q = { t : c , v : "A" } ; if ( dt == null ) dt = parse _date _code ( v , opts ) ; if ( fmt . substr ( i , 3 ) === "A/P" ) { if ( dt != null ) q . v = dt . H >= 12 ? "P" : "A" ; q . t = "T" ; hr = "h" ; i += 3 } else if ( fmt . substr ( i , 5 ) === "AM/PM" ) { if ( dt != null ) q . v = dt . H >= 12 ? "PM" : "AM" ; q . t = "T" ; i += 5 ; hr = "h" } else
break ; case 3 : size = 3 ; this [ this . l ] = val & 255 ; val >>>= 8 ; this [ this . l + 1 ] = val & 255 ; val >>>= 8 ; this [ this . l + 2 ] = val & 255 ; break ; case 4 : size = 4 ; this . writeUInt32LE ( val , this . l ) ; break ; case 8 : size = 8 ; if ( f === "f" ) { this . writeDoubleLE ( val , this . l ) ; break } case 16 : break ; case - 4 : size = 4 ; this . writeInt32LE ( val , this . l ) ; break } this . l += size ; return this } function CheckField ( hexstr , fld ) { var m = _ _hexlify ( this , this . l , hexstr . length >> 1 ) ; if ( m !== hexstr ) throw fld + "Expected " + hexstr + " saw " + m ; this . l += hexstr . length >> 1 } function prep _blob ( blob , pos ) { blob . l = pos ; blob . read _shift = ReadShift ; blob . chk = CheckField ; blob . write _shift = WriteShift } function parsenoop ( blob , length ) { blob . l += length } function writenoop ( blob , length ) { blob . l += length } function new _buf ( sz ) { var o = new _raw _buf ( sz ) ; prep _blob ( o , 0 ) ; return o } function recordhopper ( data , cb , opts ) { var tmpbyte , cntbyte , length ; prep _blob ( data , data . l || 0 ) ; while ( data . l < data . length ) { var RT = data . read _shift ( 1 ) ; if ( RT & 128 ) RT = ( RT & 127 ) + ( ( data . read _shift ( 1 ) & 127 ) << 7 ) ; var R = XLSBRecordEnum [ RT ] || XLSBRecordEnum [ 65535 ] ; tmpbyte = data . read _shift ( 1 ) ; length = tmpbyte & 127 ; for ( cntbyte = 1 ; cntbyte < 4 && tmpbyte & 128 ; ++ cntbyte ) length += ( ( tmpbyte = data . read _shift ( 1 ) ) & 127 ) << 7 * cntbyte ; var d = R . f ( data , length , opts ) ; if ( cb ( d , R , RT ) ) return } } function buf _array ( ) { var bufs = [ ] , blksz = 2048 ; var newblk = function ba _newblk ( sz ) { var o = new _buf ( sz ) ; prep _blob ( o , 0 ) ; return o } ; var curbuf = newblk ( blksz ) ; var endbuf = function ba _endbuf ( ) { if ( curbuf . length > curbuf . l ) curbuf = curbuf . slice ( 0 , curbuf . l ) ; if ( curbuf . length > 0 ) bufs . push ( curbuf ) ; curbuf = null } ; var next = function ba _next ( sz ) { if ( sz < curbuf . length - curbuf . l ) return curbuf ; endbuf ( ) ; return curbuf = newblk ( Math . max ( sz + 1 , blksz ) ) } ; var end = function ba _end ( ) { endbuf ( ) ; return _ _toBuffer ( [ bufs ] ) } ; var push = function ba _push ( buf ) { endbuf ( ) ; curbuf = buf ; next ( blksz ) } ; return { next : next , push : push , end : end , _bufs : bufs } } function write _record ( ba , type , payload , length ) { var t = evert _RE [ type ] , l ; if ( ! length ) length = XLSBRecordEnum [ t ] . p || ( payload || [ ] ) . length || 0 ; l = 1 + ( t >= 128 ? 1 : 0 ) + 1 + length ; if ( length >= 128 ) ++ l ; if ( length >= 16384 ) ++ l ; if ( length >= 2097152 ) ++ l ; var o = ba . next ( l ) ; if ( t <= 127 ) o . write _shift ( 1 , t ) ; else { o . write _shift ( 1 , ( t & 127 ) + 128 ) ; o . write _shift ( 1 , t >> 7 ) } for ( var i = 0 ; i != 4 ; ++ i ) { if ( length >= 128 ) { o . write _shift ( 1 , ( length & 127 ) + 128 ) ; length >>= 7 } else { o . write _shift ( 1 , length ) ; break } } if ( length > 0 && is _buf ( payload ) ) ba . push ( payload ) } function shift _cell _xls ( cell , tgt ) { if ( tgt . s ) { if ( cell . cRel ) cell . c += tgt . s . c ; if ( cell . rRel ) cell . r += tgt . s . r } else { cell . c += tgt . c ; cell . r += tgt . r } cell . cRel = cell . rRel = 0 ; while ( cell . c >= 256 ) cell . c -= 256 ; while ( cell . r >= 65536 ) cell . r -= 65536 ; return cell } function shift _range _xls ( cell , range ) { cell . s = shift _cell _xls ( cell . s , range . s ) ; cell . e = shift _cell _xls ( cell . e , range . s ) ; return cell } var OFFCRYPTO = { } ; var make _offcrypto = function ( O , _crypto ) { var crypto ; if ( typeof _crypto !== "undefined" ) crypto = _crypto ; else if ( typeof require !== "undefined" ) { try { crypto = require ( "cry" + "pto" ) } catch ( e ) { crypto = null } } O . rc4 = function ( key , data ) { var S = new Array ( 256 ) ; var c = 0 , i = 0 , j = 0 , t = 0 ; for ( i = 0 ; i != 256 ; ++ i ) S [ i ] = i ; for ( i = 0 ; i != 256 ; ++ i ) { j = j + S [ i ] + key [ i % key . length ] . charCodeAt ( 0 ) & 255 ; t = S [ i ] ; S [ i ] = S [ j ] ; S [ j ] = t } i = j = 0 ; out = Buffer ( data . length ) ; for ( c = 0 ; c != data . length ; ++ c ) { i = i + 1 & 255 ; j = ( j + S [ i ] ) % 256 ; t = S [ i ] ; S [ i ] = S [ j ] ; S [ j ] = t ; out [ c ] = data [ c ] ^ S [ S [ i ] + S [ j ] & 255 ] } return out } ; if ( crypto ) { O . md5 = function ( hex ) { return crypto . createHash ( "md5" ) . update ( hex ) . digest ( "hex" ) } } else { O . md5 = function ( hex ) { throw "unimplemented" } } } ; make _offcrypto ( OFFCRYPTO , typeof crypto !== "undefined" ? crypto : undefined ) ; function parse _StrRun ( data , length ) { return { ich : data . read _shift ( 2 ) , ifnt : data . read _shift ( 2 ) } } function parse _RichStr ( data , length ) { var start = data . l ; var flags = data . read _shift ( 1 ) ; var str = parse _XLWideString ( data ) ; var rgsStrRun = [ ] ; var z = { t : str , h : str } ; if ( ( flags & 1 ) !== 0 ) { var dwSizeStrRun = data . read _shift ( 4 ) ; for ( var i = 0 ; i != dwSizeStrRun ; ++ i ) rgsStrRun . push ( parse _StrRun ( data ) ) ; z . r = rgsStrRun } else z . r = "<t>" + escapexml ( str ) + "</t>" ; if ( ( flags & 2 ) !== 0 ) { } data . l = start + length ; return z } function write _RichStr ( str , o ) { if ( o == null ) o = new _buf ( 5 + 2 * str . t . length ) ; o . write _shift ( 1 , 0 ) ; write _XLWideString ( str . t , o ) ; return o } function parse _XLSBCell ( data ) { var col = data . read _shift ( 4 ) ; var iStyleRef = data . read _shift ( 2 ) ; iStyleRef += data . read _shift ( 1 ) << 16 ; var fPhShow = data . read _
while ( len -- !== 0 ) arr . push ( cb ( blob , target - blob . l ) ) ; if ( target !== blob . l ) throw new Error ( "Slurp error" ) ; return arr } function parsebool ( blob , length ) { return blob . read _shift ( length ) === 1 } function parseuint16 ( blob ) { return blob . read _shift ( 2 , "u" ) } function parseuint16a ( blob , length ) { return parslurp ( blob , length , parseuint16 ) } var parse _Boolean = parsebool ; function parse _Bes ( blob ) { var v = blob . read _shift ( 1 ) , t = blob . read _shift ( 1 ) ; return t === 1 ? v : v === 1 } function parse _ShortXLUnicodeString ( blob , length , opts ) { var cch = blob . read _shift ( 1 ) ; var width = 1 , encoding = "sbcs-cont" ; var cp = current _codepage ; if ( opts && opts . biff >= 8 ) current _codepage = 1200 ; if ( opts === undefined || opts . biff !== 5 ) { var fHighByte = blob . read _shift ( 1 ) ; if ( fHighByte ) { width = 2 ; encoding = "dbcs-cont" } } var o = cch ? blob . read _shift ( cch , encoding ) : "" ; current _codepage = cp ; return o } function parse _XLUnicodeRichExtendedString ( blob ) { var cp = current _codepage ; current _codepage = 1200 ; var cch = blob . read _shift ( 2 ) , flags = blob . read _shift ( 1 ) ; var fHighByte = flags & 1 , fExtSt = flags & 4 , fRichSt = flags & 8 ; var width = 1 + ( flags & 1 ) ; var cRun , cbExtRst ; var z = { } ; if ( fRichSt ) cRun = blob . read _shift ( 2 ) ; if ( fExtSt ) cbExtRst = blob . read _shift ( 4 ) ; var encoding = flags & 1 ? "dbcs-cont" : "sbcs-cont" ; var msg = cch === 0 ? "" : blob . read _shift ( cch , encoding ) ; if ( fRichSt ) blob . l += 4 * cRun ; if ( fExtSt ) blob . l += cbExtRst ; z . t = msg ; if ( ! fRichSt ) { z . raw = "<t>" + z . t + "</t>" ; z . r = z . t } current _codepage = cp ; return z } function parse _XLUnicodeStringNoCch ( blob , cch , opts ) { var retval ; var fHighByte = blob . read _shift ( 1 ) ; if ( fHighByte === 0 ) { retval = blob . read _shift ( cch , "sbcs-cont" ) } else { retval = blob . read _shift ( cch , "dbcs-cont" ) } return retval } function parse _XLUnicodeString ( blob , length , opts ) { var cch = blob . read _shift ( opts !== undefined && opts . biff > 0 && opts . biff < 8 ? 1 : 2 ) ; if ( cch === 0 ) { blob . l ++ ; return "" } return parse _XLUnicodeStringNoCch ( blob , cch , opts ) } function parse _XLUnicodeString2 ( blob , length , opts ) { if ( opts . biff !== 5 && opts . biff !== 2 ) return parse _XLUnicodeString ( blob , length , opts ) ; var cch = blob . read _shift ( 1 ) ; if ( cch === 0 ) { blob . l ++ ; return "" } return blob . read _shift ( cch , "sbcs-cont" ) } var parse _ControlInfo = parsenoop ; var parse _URLMoniker = function ( blob , length ) { var len = blob . read _shift ( 4 ) , start = blob . l ; var extra = false ; if ( len > 24 ) { blob . l += len - 24 ; if ( blob . read _shift ( 16 ) === "795881f43b1d7f48af2c825dc4852763" ) extra = true ; blob . l = start } var url = blob . read _shift ( ( extra ? len - 24 : len ) >> 1 , "utf16le" ) . replace ( chr0 , "" ) ; if ( extra ) blob . l += 24 ; return url } ; var parse _FileMoniker = function ( blob , length ) { var cAnti = blob . read _shift ( 2 ) ; var ansiLength = blob . read _shift ( 4 ) ; var ansiPath = blob . read _shift ( ansiLength , "cstr" ) ; var endServer = blob . read _shift ( 2 ) ; var versionNumber = blob . read _shift ( 2 ) ; var cbUnicodePathSize = blob . read _shift ( 4 ) ; if ( cbUnicodePathSize === 0 ) return ansiPath . replace ( /\\/g , "/" ) ; var cbUnicodePathBytes = blob . read _shift ( 4 ) ; var usKeyValue = blob . read _shift ( 2 ) ; var unicodePath = blob . read _shift ( cbUnicodePathBytes >> 1 , "utf16le" ) . replace ( chr0 , "" ) ; return unicodePath } ; var parse _HyperlinkMoniker = function ( blob , length ) { var clsid = blob . read _shift ( 16 ) ; length -= 16 ; switch ( clsid ) { case "e0c9ea79f9bace118c8200aa004ba90b" : return parse _URLMoniker ( blob , length ) ; case "0303000000000000c000000000000046" : return parse _FileMoniker ( blob , length ) ; default : throw "unsupported moniker " + clsid } } ; var parse _HyperlinkString = function ( blob , length ) { var len = blob . read _shift ( 4 ) ; var o = blob . read _shift ( len , "utf16le" ) . replace ( chr0 , "" ) ; return o } ; var parse _Hyperlink = function ( blob , length ) { var end = blob . l + length ; var sVer = blob . read _shift ( 4 ) ; if ( sVer !== 2 ) throw new Error ( "Unrecognized streamVersion: " + sVer ) ; var flags = blob . read _shift ( 2 ) ; blob . l += 2 ; var displayName , targetFrameName , moniker , oleMoniker , location , guid , fileTime ; if ( flags & 16 ) displayName = parse _HyperlinkString ( blob , end - blob . l ) ; if ( flags & 128 ) targetFrameName = parse _HyperlinkString ( blob , end - blob . l ) ; if ( ( flags & 257 ) === 257 ) moniker = parse _HyperlinkString ( blob , end - blob . l ) ; if ( ( flags & 257 ) === 1 ) oleMoniker = parse _HyperlinkMoniker ( blob , end - blob . l ) ; if ( flags & 8 ) location = parse _HyperlinkString ( blob , end - blob . l ) ; if ( flags & 32 ) guid = blob . read _shift ( 16 ) ; if ( flags & 64 ) fileTime = parse _FILETIME ( blob , 8 ) ; blob . l = end ; var target = targetFrameName || moniker || oleMoniker ; if ( location ) target += "#" + location ; return { Target : target } } ; function parse _LongRGBA ( b
var Ror = function ( Byte ) { return ( Byte / 2 | Byte * 128 ) & 255 } ; var XorRor = function ( byte1 , byte2 ) { return Ror ( byte1 ^ byte2 ) } ; var CreateXorKey _Method1 = function ( Password ) { var XorKey = InitialCode [ Password . length - 1 ] ; var CurrentElement = 104 ; for ( var i = Password . length - 1 ; i >= 0 ; -- i ) { var Char = Password [ i ] ; for ( var j = 0 ; j != 7 ; ++ j ) { if ( Char & 64 ) XorKey ^= XorMatrix [ CurrentElement ] ; Char *= 2 ; -- CurrentElement } } return XorKey } ; return function ( password ) { var Password = _JS2ANSI ( password ) ; var XorKey = CreateXorKey _Method1 ( Password ) ; var Index = Password . length ; var ObfuscationArray = new _raw _buf ( 16 ) ; for ( var i = 0 ; i != 16 ; ++ i ) ObfuscationArray [ i ] = 0 ; var Temp , PasswordLastChar , PadIndex ; if ( ( Index & 1 ) === 1 ) { Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( PadArray [ 0 ] , Temp ) ; -- Index ; Temp = XorKey & 255 ; PasswordLastChar = Password [ Password . length - 1 ] ; ObfuscationArray [ Index ] = XorRor ( PasswordLastChar , Temp ) } while ( Index > 0 ) { -- Index ; Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) ; -- Index ; Temp = XorKey & 255 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) } Index = 15 ; PadIndex = 15 - Password . length ; while ( PadIndex > 0 ) { Temp = XorKey >> 8 ; ObfuscationArray [ Index ] = XorRor ( PadArray [ PadIndex ] , Temp ) ; -- Index ; -- PadIndex ; Temp = XorKey & 255 ; ObfuscationArray [ Index ] = XorRor ( Password [ Index ] , Temp ) ; -- Index ; -- PadIndex } return ObfuscationArray } } ( ) ; var crypto _DecryptData _Method1 = function ( password , Data , XorArrayIndex , XorArray , O ) { if ( ! O ) O = Data ; if ( ! XorArray ) XorArray = crypto _CreateXorArray _Method1 ( password ) ; var Index , Value ; for ( Index = 0 ; Index != Data . length ; ++ Index ) { Value = Data [ Index ] ; Value ^= XorArray [ XorArrayIndex ] ; Value = ( Value >> 5 | Value << 3 ) & 255 ; O [ Index ] = Value ; ++ XorArrayIndex } return [ O , XorArrayIndex , XorArray ] } ; var crypto _MakeXorDecryptor = function ( password ) { var XorArrayIndex = 0 , XorArray = crypto _CreateXorArray _Method1 ( password ) ; return function ( Data ) { var O = crypto _DecryptData _Method1 ( null , Data , XorArrayIndex , XorArray ) ; XorArrayIndex = O [ 1 ] ; return O [ 0 ] } } ; function parse _XORObfuscation ( blob , length , opts , out ) { var o = { key : parseuint16 ( blob ) , verificationBytes : parseuint16 ( blob ) } ; if ( opts . password ) o . verifier = crypto _CreatePasswordVerifier _Method1 ( opts . password ) ; out . valid = o . verificationBytes === o . verifier ; if ( out . valid ) out . insitu _decrypt = crypto _MakeXorDecryptor ( opts . password ) ; return o } function parse _FilePassHeader ( blob , length , oo ) { var o = oo || { } ; o . Info = blob . read _shift ( 2 ) ; blob . l -= 2 ; if ( o . Info === 1 ) o . Data = parse _RC4Header ( blob , length ) ; else o . Data = parse _RC4CryptoHeader ( blob , length ) ; return o } function parse _FilePass ( blob , length , opts ) { var o = { Type : blob . read _shift ( 2 ) } ; if ( o . Type ) parse _FilePassHeader ( blob , length - 2 , o ) ; else parse _XORObfuscation ( blob , length - 2 , opts , o ) ; return o } function hex2RGB ( h ) { var o = h . substr ( h [ 0 ] === "#" ? 1 : 0 , 6 ) ; return [ parseInt ( o . substr ( 0 , 2 ) , 16 ) , parseInt ( o . substr ( 0 , 2 ) , 16 ) , parseInt ( o . substr ( 0 , 2 ) , 16 ) ] } function rgb2Hex ( rgb ) { for ( var i = 0 , o = 1 ; i != 3 ; ++ i ) o = o * 256 + ( rgb [ i ] > 255 ? 255 : rgb [ i ] < 0 ? 0 : rgb [ i ] ) ; return o . toString ( 16 ) . toUpperCase ( ) . substr ( 1 ) } function rgb2HSL ( rgb ) { var R = rgb [ 0 ] / 255 , G = rgb [ 1 ] / 255 , B = rgb [ 2 ] / 255 ; var M = Math . max ( R , G , B ) , m = Math . min ( R , G , B ) , C = M - m ; if ( C === 0 ) return [ 0 , 0 , R ] ; var H6 = 0 , S = 0 , L2 = M + m ; S = C / ( L2 > 1 ? 2 - L2 : L2 ) ; switch ( M ) { case R : H6 = ( ( G - B ) / C + 6 ) % 6 ; break ; case G : H6 = ( B - R ) / C + 2 ; break ; case B : H6 = ( R - G ) / C + 4 ; break } return [ H6 / 6 , S , L2 / 2 ] } function hsl2RGB ( hsl ) { var H = hsl [ 0 ] , S = hsl [ 1 ] , L = hsl [ 2 ] ; var C = S * 2 * ( L < . 5 ? L : 1 - L ) , m = L - C / 2 ; var rgb = [ m , m , m ] , h6 = 6 * H ; var X ; if ( S !== 0 ) switch ( h6 | 0 ) { case 0 : case 6 : X = C * h6 ; rgb [ 0 ] += C ; rgb [ 1 ] += X ; break ; case 1 : X = C * ( 2 - h6 ) ; rgb [ 0 ] += X ; rgb [ 1 ] += C ; break ; case 2 : X = C * ( h6 - 2 ) ; rgb [ 1 ] += C ; rgb [ 2 ] += X ; break ; case 3 : X = C * ( 4 - h6 ) ; rgb [ 1 ] += X ; rgb [ 2 ] += C ; break ; case 4 : X = C * ( h6 - 4 ) ; rgb [ 2 ] += C ; rgb [ 0 ] += X ; break ; case 5 : X = C * ( 6 - h6 ) ; rgb [ 2 ] += X ; rgb [ 0 ] += C ; break } for ( var i = 0 ; i != 3 ; ++ i ) rgb [ i ] = Math . round ( rgb [ i ] * 255 ) ; return rgb } function rgb _tint ( hex , tint ) { if ( tint === 0 ) return hex ; var hsl = rgb2HSL ( hex2RGB ( hex ) ) ; if ( tint < 0 ) hsl [ 2 ] = hsl [ 2 ] * ( 1 + tint ) ; else hsl [ 2 ] = 1 - ( 1 - hsl [ 2 ] ) * ( 1 - tint ) ; return rgb2Hex ( hsl2RGB ( hsl ) ) } var DEF _MDW = 7 , MAX _MDW = 15 , MIN _MDW = 1 , MDW = DEF _MDW ; function width2px ( width ) { return ( width + ( 128 / MDW | 0 ) / 256 ) * MDW | 0 } function px2char ( px ) { return ( ( px - 5 ) / MDW * 100 + . 5 | 0 ) / 100 } function char2width ( chr ) { return ( ( chr * MDW + 5 ) / MDW * 256 | 0 ) / 256 } function cycle _width ( collw ) { return char2width ( px2char ( width2px ( collw ) ) ) } function find _mdw ( collw , coll ) { if ( cycle _wid
case 2 : val [ 1 ] = parse _XLUnicodeString ( blob ) ; break } return val } function parse _PtgExtraMem ( blob , cce ) { var count = blob . read _shift ( 2 ) ; var out = [ ] ; for ( var i = 0 ; i != count ; ++ i ) out . push ( parse _Ref8U ( blob , 8 ) ) ; return out } function parse _PtgExtraArray ( blob ) { var cols = 1 + blob . read _shift ( 1 ) ; var rows = 1 + blob . read _shift ( 2 ) ; for ( var i = 0 , o = [ ] ; i != rows && ( o [ i ] = [ ] ) ; ++ i ) for ( var j = 0 ; j != cols ; ++ j ) o [ i ] [ j ] = parse _SerAr ( blob ) ; return o } function parse _PtgName ( blob , length ) { var type = blob . read _shift ( 1 ) >>> 5 & 3 ; var nameindex = blob . read _shift ( 4 ) ; return [ type , 0 , nameindex ] } function parse _PtgNameX ( blob , length ) { var type = blob . read _shift ( 1 ) >>> 5 & 3 ; var ixti = blob . read _shift ( 2 ) ; var nameindex = blob . read _shift ( 4 ) ; return [ type , ixti , nameindex ] } function parse _PtgMemArea ( blob , length ) { var type = blob . read _shift ( 1 ) >>> 5 & 3 ; blob . l += 4 ; var cce = blob . read _shift ( 2 ) ; return [ type , cce ] } function parse _PtgMemFunc ( blob , length ) { var type = blob . read _shift ( 1 ) >>> 5 & 3 ; var cce = blob . read _shift ( 2 ) ; return [ type , cce ] } function parse _PtgRefErr ( blob , length ) { var type = blob . read _shift ( 1 ) >>> 5 & 3 ; blob . l += 4 ; return [ type ] } var parse _PtgAdd = parseread1 ; var parse _PtgDiv = parseread1 ; var parse _PtgEq = parseread1 ; var parse _PtgGe = parseread1 ; var parse _PtgGt = parseread1 ; var parse _PtgIsect = parseread1 ; var parse _PtgLe = parseread1 ; var parse _PtgLt = parseread1 ; var parse _PtgMissArg = parseread1 ; var parse _PtgMul = parseread1 ; var parse _PtgNe = parseread1 ; var parse _PtgParen = parseread1 ; var parse _PtgPercent = parseread1 ; var parse _PtgPower = parseread1 ; var parse _PtgRange = parseread1 ; var parse _PtgSub = parseread1 ; var parse _PtgUminus = parseread1 ; var parse _PtgUnion = parseread1 ; var parse _PtgUplus = parseread1 ; var parse _PtgMemErr = parsenoop ; var parse _PtgMemNoMem = parsenoop ; var parse _PtgRefErr3d = parsenoop ; var parse _PtgTbl = parsenoop ; var PtgTypes = { 1 : { n : "PtgExp" , f : parse _PtgExp } , 2 : { n : "PtgTbl" , f : parse _PtgTbl } , 3 : { n : "PtgAdd" , f : parse _PtgAdd } , 4 : { n : "PtgSub" , f : parse _PtgSub } , 5 : { n : "PtgMul" , f : parse _PtgMul } , 6 : { n : "PtgDiv" , f : parse _PtgDiv } , 7 : { n : "PtgPower" , f : parse _PtgPower } , 8 : { n : "PtgConcat" , f : parse _PtgConcat } , 9 : { n : "PtgLt" , f : parse _PtgLt } , 10 : { n : "PtgLe" , f : parse _PtgLe } , 11 : { n : "PtgEq" , f : parse _PtgEq } , 12 : { n : "PtgGe" , f : parse _PtgGe } , 13 : { n : "PtgGt" , f : parse _PtgGt } , 14 : { n : "PtgNe" , f : parse _PtgNe } , 15 : { n : "PtgIsect" , f : parse _PtgIsect } , 16 : { n : "PtgUnion" , f : parse _PtgUnion } , 17 : { n : "PtgRange" , f : parse _PtgRange } , 18 : { n : "PtgUplus" , f : parse _PtgUplus } , 19 : { n : "PtgUminus" , f : parse _PtgUminus } , 20 : { n : "PtgPercent" , f : parse _PtgPercent } , 21 : { n : "PtgParen" , f : parse _PtgParen } , 22 : { n : "PtgMissArg" , f : parse _PtgMissArg } , 23 : { n : "PtgStr" , f : parse _PtgStr } , 28 : { n : "PtgErr" , f : parse _PtgErr } , 29 : { n : "PtgBool" , f : parse _PtgBool } , 30 : { n : "PtgInt" , f : parse _PtgInt } , 31 : { n : "PtgNum" , f : parse _PtgNum } , 32 : { n : "PtgArray" , f : parse _PtgArray } , 33 : { n : "PtgFunc" , f : parse _PtgFunc } , 34 : { n : "PtgFuncVar" , f : parse _PtgFuncVar } , 35 : { n : "PtgName" , f : parse _PtgName } , 36 : { n : "PtgRef" , f : parse _PtgRef } , 37 : { n : "PtgArea" , f : parse _PtgArea } , 38 : { n : "PtgMemArea" , f : parse _PtgMemArea } , 39 : { n : "PtgMemErr" , f : parse _PtgMemErr } , 40 : { n : "PtgMemNoMem" , f : parse _PtgMemNoMem } , 41 : { n : "PtgMemFunc" , f : parse _PtgMemFunc } , 42 : { n : "PtgRefErr" , f : parse _PtgRefErr } , 43 : { n : "PtgAreaErr" , f : parse _PtgAreaErr } , 44 : { n : "PtgRefN" , f : parse _PtgRefN } , 45 : { n : "PtgAreaN" , f : parse _PtgAreaN } , 57 : { n : "PtgNameX" , f : parse _PtgNameX } , 58 : { n : "PtgRef3d" , f : parse _PtgRef3d } , 59 : { n : "PtgArea3d" , f : parse _PtgArea3d } , 60 : { n : "PtgRefErr3d" , f : parse _PtgRefErr3d } , 61 : { n : "PtgAreaErr3d" , f : parse _PtgAreaErr3d } , 255 : { } } ; var PtgDupes = { 64 : 32 , 96 : 32 , 65 : 33 , 97 : 33 , 66 : 34 , 98 : 34 , 67 : 35 , 99 : 35 , 68 : 36 , 100 : 36 , 69 : 37 , 101 : 37 , 70 : 38 , 102 : 38 , 71 : 39 , 103 : 39 , 72 : 40 , 104 : 40 , 73 : 41 , 105 : 41 , 74 : 42 , 106 : 42 , 75 : 43 , 107 : 43 , 76 : 44 , 108 : 44 , 77 : 45 , 109 : 45 , 89 : 57 , 121 : 57 , 90 : 58 , 122 : 58 , 91 : 59 , 123 : 59 , 92 : 60 , 124 : 60 , 93 : 61 , 125 : 61 } ; ( function ( ) { for ( var y in PtgDupes ) PtgTypes [ y ] = PtgTypes [ PtgDupes [ y ] ] } ) ( ) ; var Ptg18 = { } ; var Ptg19 = { 1 : { n : "PtgAttrSemi" , f : parse _PtgAttrSemi } , 2 : { n : "PtgAttrIf" , f : parse _PtgAttrIf } , 4 : { n : "PtgAttrChoose" , f : parse _PtgAttrChoose } , 8 : { n : "PtgAttrGoto" , f : parse _PtgAttrGoto } , 16 : { n : "PtgAttrSum" , f : parse _PtgAttrSum } , 32 : { n : "PtgAttrBaxcel" , f : parse _PtgAttrBaxcel } , 64 : { n : "PtgAttrSpace" , f : parse _PtgAttrSpace } , 65 : { n : "PtgAttrSpaceSemi" , f : parse _PtgAttrSpaceSemi } , 255 : { } } ; function parse _Formula ( blob , length , opts ) { var cell = parse _XLSCell ( blob , 6 ) ; var val = parse _FormulaValue ( blob , 8 ) ; var flag
} while ( colm <= colM ) columns [ colm ++ ] = coll } } function write _ws _xml _cols ( ws , cols ) { var o = [ "<cols>" ] , col , width ; for ( var i = 0 ; i != cols . length ; ++ i ) { if ( ! ( col = cols [ i ] ) ) continue ; var p = { min : i + 1 , max : i + 1 } ; width = - 1 ; if ( col . wpx ) width = px2char ( col . wpx ) ; else if ( col . wch ) width = col . wch ; if ( width > - 1 ) { p . width = char2width ( width ) ; p . customWidth = 1 } o [ o . length ] = writextag ( "col" , null , p ) } o [ o . length ] = "</cols>" ; return o . join ( "" ) } function write _ws _xml _cell ( cell , ref , ws , opts , idx , wb ) { if ( cell . v === undefined ) return "" ; var vv = "" ; var oldt = cell . t , oldv = cell . v ; switch ( cell . t ) { case "b" : vv = cell . v ? "1" : "0" ; break ; case "n" : vv = "" + cell . v ; break ; case "e" : vv = BErr [ cell . v ] ; break ; case "d" : if ( opts . cellDates ) vv = new Date ( cell . v ) . toISOString ( ) ; else { cell . t = "n" ; vv = "" + ( cell . v = datenum ( cell . v ) ) ; if ( typeof cell . z === "undefined" ) cell . z = SSF . _table [ 14 ] } break ; default : vv = cell . v ; break } var v = writetag ( "v" , escapexml ( vv ) ) , o = { r : ref } ; var os = get _cell _style ( opts . cellXfs , cell , opts ) ; if ( os !== 0 ) o . s = os ; switch ( cell . t ) { case "n" : break ; case "d" : o . t = "d" ; break ; case "b" : o . t = "b" ; break ; case "e" : o . t = "e" ; break ; default : if ( opts . bookSST ) { v = writetag ( "v" , "" + get _sst _id ( opts . Strings , cell . v ) ) ; o . t = "s" ; break } o . t = "str" ; break } if ( cell . t != oldt ) { cell . t = oldt ; cell . v = oldv } return writextag ( "c" , v , o ) } var parse _ws _xml _data = function parse _ws _xml _data _factory ( ) { var cellregex = /<(?:\w+:)?c[ >]/ , rowregex = /<\/(?:\w+:)?row>/ ; var rregex = /r=["']([^"']*)["']/ , isregex = /<is>([\S\s]*?)<\/is>/ ; var match _v = matchtag ( "v" ) , match _f = matchtag ( "f" ) ; return function parse _ws _xml _data ( sdata , s , opts , guess ) { var ri = 0 , x = "" , cells = [ ] , cref = [ ] , idx = 0 , i = 0 , cc = 0 , d = "" , p ; var tag , tagr = 0 , tagc = 0 ; var sstr ; var fmtid = 0 , fillid = 0 , do _format = Array . isArray ( styles . CellXf ) , cf ; for ( var marr = sdata . split ( rowregex ) , mt = 0 , marrlen = marr . length ; mt != marrlen ; ++ mt ) { x = marr [ mt ] . trim ( ) ; var xlen = x . length ; if ( xlen === 0 ) continue ; for ( ri = 0 ; ri < xlen ; ++ ri ) if ( x . charCodeAt ( ri ) === 62 ) break ; ++ ri ; tag = parsexmltag ( x . substr ( 0 , ri ) , true ) ; tagr = typeof tag . r !== "undefined" ? parseInt ( tag . r , 10 ) : tagr + 1 ; tagc = - 1 ; if ( opts . sheetRows && opts . sheetRows < tagr ) continue ; if ( guess . s . r > tagr - 1 ) guess . s . r = tagr - 1 ; if ( guess . e . r < tagr - 1 ) guess . e . r = tagr - 1 ; cells = x . substr ( ri ) . split ( cellregex ) ; for ( ri = typeof tag . r === "undefined" ? 0 : 1 ; ri != cells . length ; ++ ri ) { x = cells [ ri ] . trim ( ) ; if ( x . length === 0 ) continue ; cref = x . match ( rregex ) ; idx = ri ; i = 0 ; cc = 0 ; x = "<c " + ( x . substr ( 0 , 1 ) == "<" ? ">" : "" ) + x ; if ( cref !== null && cref . length === 2 ) { idx = 0 ; d = cref [ 1 ] ; for ( i = 0 ; i != d . length ; ++ i ) { if ( ( cc = d . charCodeAt ( i ) - 64 ) < 1 || cc > 26 ) break ; idx = 26 * idx + cc } -- idx ; tagc = idx } else ++ tagc ; for ( i = 0 ; i != x . length ; ++ i ) if ( x . charCodeAt ( i ) === 62 ) break ; ++ i ; tag = parsexmltag ( x . substr ( 0 , i ) , true ) ; if ( ! tag . r ) tag . r = utils . encode _cell ( { r : tagr - 1 , c : tagc } ) ; d = x . substr ( i ) ; p = { t : "" } ; if ( ( cref = d . match ( match _v ) ) !== null && cref [ 1 ] !== "" ) p . v = unescapexml ( cref [ 1 ] ) ; if ( opts . cellFormula && ( cref = d . match ( match _f ) ) !== null ) p . f = unescapexml ( cref [ 1 ] ) ; if ( tag . t === undefined && p . v === undefined ) { if ( ! opts . sheetStubs ) continue ; p . t = "stub" } else p . t = tag . t || "n" ; if ( guess . s . c > idx ) guess . s . c = idx ; if ( guess . e . c < idx ) guess . e . c = idx ; switch ( p . t ) { case "n" : p . v = parseFloat ( p . v ) ; break ; case "s" : sstr = strs [ parseInt ( p . v , 10 ) ] ; p . v = sstr . t ; p . r = sstr . r ; if ( opts . cellHTML ) p . h = sstr . h ; break ; case "str" : p . t = "s" ; p . v = p . v != null ? utf8read ( p . v ) : "" ; if ( opts . cellHTML ) p . h = p . v ; break ; case "inlineStr" : cref = d . match ( isregex ) ; p . t = "s" ; if ( cref !== null ) { sstr = parse _si ( cref [ 1 ] ) ; p . v = sstr . t } else p . v = "" ; break ; case "b" : p . v = parsexmlbool ( p . v ) ; break ; case "d" : if ( ! opts . cellDates ) { p . v = datenum ( p . v ) ; p . t = "n" } break ; case "e" : p . w = p . v ; p . v = RBErr [ p . v ] ; break } fmtid = fillid = 0 ; if ( do _format && tag . s !== undefined ) { cf = styles . CellXf [ tag . s ] ; if ( cf != null ) { if ( cf . numFmtId != null ) fmtid = cf . numFmtId ; if ( opts . cellStyles && cf . fillId != null ) fillid = cf . fillId } } safe _format ( p , fmtid , fillid , opts ) ; s [ tag . r ] = p } } } } ( ) ; function write _ws _xml _data ( ws , opts , idx , wb ) { var o = [ ] , r = [ ] , range = safe _decode _range ( ws [ "!ref" ] ) , cell , ref , rr = "" , cols = [ ] , R , C ; for ( C = range . s . c ; C <= range . e . c ; ++ C ) cols [ C ] = encode _col ( C ) ; for ( R = range . s . r ; R <= range . e . r ; ++ R ) { r = [ ] ; rr = encode _row ( R ) ; for ( C = range . s . c ; C <= range . e . c ; ++ C ) { ref = cols [ C ] + rr ; if ( ws [ ref ] === undefined ) continue ; if ( ( cell = write _ws _xml _cell ( ws [ ref ] , ref , ws , opts , idx , wb ) ) != null ) r . push ( cell ) } if ( r . length > 0 ) o [ o . length ] = writextag ( "row" , r . join ( "" ) , { r : rr } ) } return o . join ( "" ) } var WS _XML _ROOT = writextag ( "worksheet" , null , { xmlns : XMLNS
case "LastSaved" : case "LastPrinted" : case "Version" : case "Revision" : case "TotalTime" : case "HyperlinkBase" : case "Manager" : if ( Rn [ 0 ] . substr ( - 2 ) === "/>" ) break ; else if ( Rn [ 1 ] === "/" ) xlml _set _prop ( Props , Rn [ 3 ] , str . slice ( pidx , Rn . index ) ) ; else pidx = Rn . index + Rn [ 0 ] . length ; break ; case "Paragraphs" : break ; case "Styles" : case "Workbook" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw "Bad state: " + tmp } else state . push ( [ Rn [ 3 ] , false ] ) ; break ; case "Comment" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw "Bad state: " + tmp ; xlml _clean _comment ( comment ) ; comments . push ( comment ) } else { state . push ( [ Rn [ 3 ] , false ] ) ; tmp = xlml _parsexmltag ( Rn [ 0 ] ) ; comment = { a : tmp . Author } } break ; case "Name" : break ; case "ComponentOptions" : case "DocumentProperties" : case "CustomDocumentProperties" : case "OfficeDocumentSettings" : case "PivotTable" : case "PivotCache" : case "Names" : case "MapInfo" : case "PageBreaks" : case "QueryTable" : case "DataValidation" : case "AutoFilter" : case "Sorting" : case "Schema" : case "data" : case "ConditionalFormatting" : case "SmartTagType" : case "SmartTags" : case "ExcelWorkbook" : case "WorkbookOptions" : case "WorksheetOptions" : if ( Rn [ 1 ] === "/" ) { if ( ( tmp = state . pop ( ) ) [ 0 ] !== Rn [ 3 ] ) throw "Bad state: " + tmp } else if ( Rn [ 0 ] . charAt ( Rn [ 0 ] . length - 2 ) !== "/" ) state . push ( [ Rn [ 3 ] , true ] ) ; break ; default : var seen = true ; switch ( state [ state . length - 1 ] [ 0 ] ) { case "OfficeDocumentSettings" : switch ( Rn [ 3 ] ) { case "AllowPNG" : break ; case "RemovePersonalInformation" : break ; case "DownloadComponents" : break ; case "LocationOfComponents" : break ; case "Colors" : break ; case "Color" : break ; case "Index" : break ; case "RGB" : break ; case "PixelsPerInch" : break ; case "TargetScreenSize" : break ; case "ReadOnlyRecommended" : break ; default : seen = false } break ; case "ComponentOptions" : switch ( Rn [ 3 ] ) { case "Toolbar" : break ; case "HideOfficeLogo" : break ; case "SpreadsheetAutoFit" : break ; case "Label" : break ; case "Caption" : break ; case "MaxHeight" : break ; case "MaxWidth" : break ; case "NextSheetNumber" : break ; default : seen = false } break ; case "ExcelWorkbook" : switch ( Rn [ 3 ] ) { case "WindowHeight" : break ; case "WindowWidth" : break ; case "WindowTopX" : break ; case "WindowTopY" : break ; case "TabRatio" : break ; case "ProtectStructure" : break ; case "ProtectWindows" : break ; case "ActiveSheet" : break ; case "DisplayInkNotes" : break ; case "FirstVisibleSheet" : break ; case "SupBook" : break ; case "SheetName" : break ; case "SheetIndex" : break ; case "SheetIndexFirst" : break ; case "SheetIndexLast" : break ; case "Dll" : break ; case "AcceptLabelsInFormulas" : break ; case "DoNotSaveLinkValues" : break ; case "Date1904" : break ; case "Iteration" : break ; case "MaxIterations" : break ; case "MaxChange" : break ; case "Path" : break ; case "Xct" : break ; case "Count" : break ; case "SelectedSheets" : break ; case "Calculation" : break ; case "Uncalced" : break ; case "StartupPrompt" : break ; case "Crn" : break ; case "ExternName" : break ; case "Formula" : break ; case "ColFirst" : break ; case "ColLast" : break ; case "WantAdvise" : break ; case "Boolean" : break ; case "Error" : break ; case "Text" : break ; case "OLE" : break ; case "NoAutoRecover" : break ; case "PublishObjects" : break ; case "DoNotCalculateBeforeSave" : break ; case "Number" : break ; case "RefModeR1C1" : break ; case "EmbedSaveSmartTags" : break ; default : seen = false } break ; case "WorkbookOptions" : switch ( Rn [ 3 ] ) { case "OWCVersion" : break ; case "Height" : break ; case "Width" : break ; default : seen = false } break ; case "WorksheetOptions" : switch ( Rn [ 3 ] ) { case "Unsynced" : break ; case "Visible" : break ; case "Print" : break ; case "Panes" : break ; case "Scale" : break ; case "Pane" : break ; case "Number" : break ; case "Layout" : break ; case "Header" : break ; case "Footer" : break ; case "PageSetup" : break ; case "PageMargins" : break ; case "Selected" : break ; case "ProtectObjects" : break ; case "EnableSelection" : break ; case "ProtectScenarios" : break ; case "ValidPrinterInfo" : break ; case "HorizontalResolution" : break ; case "VerticalResolution" : break ; case "NumberofCopies" : break ; case "ActiveRow" : break ; case "ActiveCol" : break ; case "ActivePane" : break ; case "TopRowVisible" : break ; case "TopRowBottomPane" : break ; case "LeftColumnVisible" : break ; case "LeftColumnRightPane" : break ; case "FitToPage" : break ; case "RangeSelection" : break ; case "PaperSizeIndex" : break ; case "PageLayoutZoom" : break ; case "PageBreakZoom" : break ; case "FilterOn" : break ; case "DoNotDisplayGridlines" : break ; case "SplitHorizontal" : break ; case "SplitVertical" : break ; case "FreezePanes" : break ; case "FrozenNoSplit" : break ; case "FitWidth" : break ; case " FitHei
} , 254 : { n : "BrtEndPNames" , f : parsenoop } , 255 : { n : "BrtBeginPName" , f : parsenoop } , 256 : { n : "BrtEndPName" , f : parsenoop } , 257 : { n : "BrtBeginPNPairs" , f : parsenoop } , 258 : { n : "BrtEndPNPairs" , f : parsenoop } , 259 : { n : "BrtBeginPNPair" , f : parsenoop } , 260 : { n : "BrtEndPNPair" , f : parsenoop } , 261 : { n : "BrtBeginECWebProps" , f : parsenoop } , 262 : { n : "BrtEndECWebProps" , f : parsenoop } , 263 : { n : "BrtBeginEcWpTables" , f : parsenoop } , 264 : { n : "BrtEndECWPTables" , f : parsenoop } , 265 : { n : "BrtBeginECParams" , f : parsenoop } , 266 : { n : "BrtEndECParams" , f : parsenoop } , 267 : { n : "BrtBeginECParam" , f : parsenoop } , 268 : { n : "BrtEndECParam" , f : parsenoop } , 269 : { n : "BrtBeginPCDKPIs" , f : parsenoop } , 270 : { n : "BrtEndPCDKPIs" , f : parsenoop } , 271 : { n : "BrtBeginPCDKPI" , f : parsenoop } , 272 : { n : "BrtEndPCDKPI" , f : parsenoop } , 273 : { n : "BrtBeginDims" , f : parsenoop } , 274 : { n : "BrtEndDims" , f : parsenoop } , 275 : { n : "BrtBeginDim" , f : parsenoop } , 276 : { n : "BrtEndDim" , f : parsenoop } , 277 : { n : "BrtIndexPartEnd" , f : parsenoop } , 278 : { n : "BrtBeginStyleSheet" , f : parsenoop } , 279 : { n : "BrtEndStyleSheet" , f : parsenoop } , 280 : { n : "BrtBeginSXView" , f : parsenoop } , 281 : { n : "BrtEndSXVI" , f : parsenoop } , 282 : { n : "BrtBeginSXVI" , f : parsenoop } , 283 : { n : "BrtBeginSXVIs" , f : parsenoop } , 284 : { n : "BrtEndSXVIs" , f : parsenoop } , 285 : { n : "BrtBeginSXVD" , f : parsenoop } , 286 : { n : "BrtEndSXVD" , f : parsenoop } , 287 : { n : "BrtBeginSXVDs" , f : parsenoop } , 288 : { n : "BrtEndSXVDs" , f : parsenoop } , 289 : { n : "BrtBeginSXPI" , f : parsenoop } , 290 : { n : "BrtEndSXPI" , f : parsenoop } , 291 : { n : "BrtBeginSXPIs" , f : parsenoop } , 292 : { n : "BrtEndSXPIs" , f : parsenoop } , 293 : { n : "BrtBeginSXDI" , f : parsenoop } , 294 : { n : "BrtEndSXDI" , f : parsenoop } , 295 : { n : "BrtBeginSXDIs" , f : parsenoop } , 296 : { n : "BrtEndSXDIs" , f : parsenoop } , 297 : { n : "BrtBeginSXLI" , f : parsenoop } , 298 : { n : "BrtEndSXLI" , f : parsenoop } , 299 : { n : "BrtBeginSXLIRws" , f : parsenoop } , 300 : { n : "BrtEndSXLIRws" , f : parsenoop } , 301 : { n : "BrtBeginSXLICols" , f : parsenoop } , 302 : { n : "BrtEndSXLICols" , f : parsenoop } , 303 : { n : "BrtBeginSXFormat" , f : parsenoop } , 304 : { n : "BrtEndSXFormat" , f : parsenoop } , 305 : { n : "BrtBeginSXFormats" , f : parsenoop } , 306 : { n : "BrtEndSxFormats" , f : parsenoop } , 307 : { n : "BrtBeginSxSelect" , f : parsenoop } , 308 : { n : "BrtEndSxSelect" , f : parsenoop } , 309 : { n : "BrtBeginISXVDRws" , f : parsenoop } , 310 : { n : "BrtEndISXVDRws" , f : parsenoop } , 311 : { n : "BrtBeginISXVDCols" , f : parsenoop } , 312 : { n : "BrtEndISXVDCols" , f : parsenoop } , 313 : { n : "BrtEndSXLocation" , f : parsenoop } , 314 : { n : "BrtBeginSXLocation" , f : parsenoop } , 315 : { n : "BrtEndSXView" , f : parsenoop } , 316 : { n : "BrtBeginSXTHs" , f : parsenoop } , 317 : { n : "BrtEndSXTHs" , f : parsenoop } , 318 : { n : "BrtBeginSXTH" , f : parsenoop } , 319 : { n : "BrtEndSXTH" , f : parsenoop } , 320 : { n : "BrtBeginISXTHRws" , f : parsenoop } , 321 : { n : "BrtEndISXTHRws" , f : parsenoop } , 322 : { n : "BrtBeginISXTHCols" , f : parsenoop } , 323 : { n : "BrtEndISXTHCols" , f : parsenoop } , 324 : { n : "BrtBeginSXTDMPS" , f : parsenoop } , 325 : { n : "BrtEndSXTDMPs" , f : parsenoop } , 326 : { n : "BrtBeginSXTDMP" , f : parsenoop } , 327 : { n : "BrtEndSXTDMP" , f : parsenoop } , 328 : { n : "BrtBeginSXTHItems" , f : parsenoop } , 329 : { n : "BrtEndSXTHItems" , f : parsenoop } , 330 : { n : "BrtBeginSXTHItem" , f : parsenoop } , 331 : { n : "BrtEndSXTHItem" , f : parsenoop } , 332 : { n : "BrtBeginMetadata" , f : parsenoop } , 333 : { n : "BrtEndMetadata" , f : parsenoop } , 334 : { n : "BrtBeginEsmdtinfo" , f : parsenoop } , 335 : { n : "BrtMdtinfo" , f : parsenoop } , 336 : { n : "BrtEndEsmdtinfo" , f : parsenoop } , 337 : { n : "BrtBeginEsmdb" , f : parsenoop } , 338 : { n : "BrtEndEsmdb" , f : parsenoop } , 339 : { n : "BrtBeginEsfmd" , f : parsenoop } , 340 : { n : "BrtEndEsfmd" , f : parsenoop } , 341 : { n : "BrtBeginSingleCells" , f : parsenoop } , 342 : { n : "BrtEndSingleCells" , f : parsenoop } , 343 : { n : "BrtBeginList" , f : parsenoop } , 344 : { n : "BrtEndList" , f : parsenoop } , 345 : { n : "BrtBeginListCols" , f : parsenoop } , 346 : { n : "BrtEndListCols" , f : parsenoop } , 347 : { n : "BrtBeginListCol" , f : parsenoop } , 348 : { n : "BrtEndListCol" , f : parsenoop } , 349 : { n : "BrtBeginListXmlCPr" , f : parsenoop } , 350 : { n : "BrtEndListXmlCPr" , f : parsenoop } , 351 : { n : "BrtListCCFmla" , f : parsenoop } , 352 : { n : "BrtListTrFmla" , f : parsenoop } , 353 : { n : "BrtBeginExternals" , f : parsenoop } , 354 : { n : "BrtEndExternals" , f : parsenoop } , 355 : { n : "BrtSupBookSrc" , f : parsenoop } , 357 : { n : "BrtSupSelf" , f : parsenoop } , 358 : { n : "BrtSupSame" , f : parsenoop } , 359 : { n : "BrtSupTabs" , f : parsenoop } , 360 : { n : "BrtBeginSupBook" , f : parsenoop } , 361 : { n : "BrtPlaceholderName" , f : parsenoop } , 362 : { n : "BrtExternSheet" , f : parsenoop } , 363 : { n : "BrtExternTableStart" , f : parsenoop } , 364 : { n : "BrtExternTableEnd" , f : parsenoop } , 366 : { n : "BrtExternRowHdr" , f : parsenoop } , 367 : { n : "
} , 566 : { n : "Table" , f : parse _Table } , 574 : { n : "Window2" , f : parse _Window2 } , 638 : { n : "RK" , f : parse _RK } , 659 : { n : "Style" , f : parse _Style } , 1048 : { n : "BigName" , f : parse _BigName } , 1054 : { n : "Format" , f : parse _Format } , 1084 : { n : "ContinueBigName" , f : parse _ContinueBigName } , 1212 : { n : "ShrFmla" , f : parse _ShrFmla } , 2048 : { n : "HLinkTooltip" , f : parse _HLinkTooltip } , 2049 : { n : "WebPub" , f : parse _WebPub } , 2050 : { n : "QsiSXTag" , f : parse _QsiSXTag } , 2051 : { n : "DBQueryExt" , f : parse _DBQueryExt } , 2052 : { n : "ExtString" , f : parse _ExtString } , 2053 : { n : "TxtQry" , f : parse _TxtQry } , 2054 : { n : "Qsir" , f : parse _Qsir } , 2055 : { n : "Qsif" , f : parse _Qsif } , 2056 : { n : "RRDTQSIF" , f : parse _RRDTQSIF } , 2057 : { n : "BOF" , f : parse _BOF } , 2058 : { n : "OleDbConn" , f : parse _OleDbConn } , 2059 : { n : "WOpt" , f : parse _WOpt } , 2060 : { n : "SXViewEx" , f : parse _SXViewEx } , 2061 : { n : "SXTH" , f : parse _SXTH } , 2062 : { n : "SXPIEx" , f : parse _SXPIEx } , 2063 : { n : "SXVDTEx" , f : parse _SXVDTEx } , 2064 : { n : "SXViewEx9" , f : parse _SXViewEx9 } , 2066 : { n : "ContinueFrt" , f : parse _ContinueFrt } , 2067 : { n : "RealTimeData" , f : parse _RealTimeData } , 2128 : { n : "ChartFrtInfo" , f : parse _ChartFrtInfo } , 2129 : { n : "FrtWrapper" , f : parse _FrtWrapper } , 2130 : { n : "StartBlock" , f : parse _StartBlock } , 2131 : { n : "EndBlock" , f : parse _EndBlock } , 2132 : { n : "StartObject" , f : parse _StartObject } , 2133 : { n : "EndObject" , f : parse _EndObject } , 2134 : { n : "CatLab" , f : parse _CatLab } , 2135 : { n : "YMult" , f : parse _YMult } , 2136 : { n : "SXViewLink" , f : parse _SXViewLink } , 2137 : { n : "PivotChartBits" , f : parse _PivotChartBits } , 2138 : { n : "FrtFontList" , f : parse _FrtFontList } , 2146 : { n : "SheetExt" , f : parse _SheetExt } , 2147 : { n : "BookExt" , f : parse _BookExt , r : 12 } , 2148 : { n : "SXAddl" , f : parse _SXAddl } , 2149 : { n : "CrErr" , f : parse _CrErr } , 2150 : { n : "HFPicture" , f : parse _HFPicture } , 2151 : { n : "FeatHdr" , f : parse _FeatHdr } , 2152 : { n : "Feat" , f : parse _Feat } , 2154 : { n : "DataLabExt" , f : parse _DataLabExt } , 2155 : { n : "DataLabExtContents" , f : parse _DataLabExtContents } , 2156 : { n : "CellWatch" , f : parse _CellWatch } , 2161 : { n : "FeatHdr11" , f : parse _FeatHdr11 } , 2162 : { n : "Feature11" , f : parse _Feature11 } , 2164 : { n : "DropDownObjIds" , f : parse _DropDownObjIds } , 2165 : { n : "ContinueFrt11" , f : parse _ContinueFrt11 } , 2166 : { n : "DConn" , f : parse _DConn } , 2167 : { n : "List12" , f : parse _List12 } , 2168 : { n : "Feature12" , f : parse _Feature12 } , 2169 : { n : "CondFmt12" , f : parse _CondFmt12 } , 2170 : { n : "CF12" , f : parse _CF12 } , 2171 : { n : "CFEx" , f : parse _CFEx } , 2172 : { n : "XFCRC" , f : parse _XFCRC , r : 12 } , 2173 : { n : "XFExt" , f : parse _XFExt , r : 12 } , 2174 : { n : "AutoFilter12" , f : parse _AutoFilter12 } , 2175 : { n : "ContinueFrt12" , f : parse _ContinueFrt12 } , 2180 : { n : "MDTInfo" , f : parse _MDTInfo } , 2181 : { n : "MDXStr" , f : parse _MDXStr } , 2182 : { n : "MDXTuple" , f : parse _MDXTuple } , 2183 : { n : "MDXSet" , f : parse _MDXSet } , 2184 : { n : "MDXProp" , f : parse _MDXProp } , 2185 : { n : "MDXKPI" , f : parse _MDXKPI } , 2186 : { n : "MDB" , f : parse _MDB } , 2187 : { n : "PLV" , f : parse _PLV } , 2188 : { n : "Compat12" , f : parse _Compat12 , r : 12 } , 2189 : { n : "DXF" , f : parse _DXF } , 2190 : { n : "TableStyles" , f : parse _TableStyles , r : 12 } , 2191 : { n : "TableStyle" , f : parse _TableStyle } , 2192 : { n : "TableStyleElement" , f : parse _TableStyleElement } , 2194 : { n : "StyleExt" , f : parse _StyleExt } , 2195 : { n : "NamePublish" , f : parse _NamePublish } , 2196 : { n : "NameCmt" , f : parse _NameCmt } , 2197 : { n : "SortData" , f : parse _SortData } , 2198 : { n : "Theme" , f : parse _Theme , r : 12 } , 2199 : { n : "GUIDTypeLib" , f : parse _GUIDTypeLib } , 2200 : { n : "FnGrp12" , f : parse _FnGrp12 } , 2201 : { n : "NameFnGrp12" , f : parse _NameFnGrp12 } , 2202 : { n : "MTRSettings" , f : parse _MTRSettings , r : 12 } , 2203 : { n : "CompressPictures" , f : parse _CompressPictures } , 2204 : { n : "HeaderFooter" , f : parse _HeaderFooter } , 2205 : { n : "CrtLayout12" , f : parse _CrtLayout12 } , 2206 : { n : "CrtMlFrt" , f : parse _CrtMlFrt } , 2207 : { n : "CrtMlFrtContinue" , f : parse _CrtMlFrtContinue } , 2211 : { n : "ForceFullCalculation" , f : parse _ForceFullCalculation } , 2212 : { n : "ShapePropsStream" , f : parse _ShapePropsStream } , 2213 : { n : "TextPropsStream" , f : parse _TextPropsStream } , 2214 : { n : "RichTextStream" , f : parse _RichTextStream } , 2215 : { n : "CrtLayout12A" , f : parse _CrtLayout12A } , 4097 : { n : "Units" , f : parse _Units } , 4098 : { n : "Chart" , f : parse _Chart } , 4099 : { n : "Series" , f : parse _Series } , 4102 : { n : "DataFormat" , f : parse _DataFormat } , 4103 : { n : "LineFormat" , f : parse _LineFormat } , 4105 : { n : "MarkerFormat" , f : parse _MarkerFormat } , 4106 : { n : "AreaFormat" , f : parse _AreaFormat } , 4107 : { n : "PieFormat" , f : parse _PieFormat } , 4108 : { n : "AttachedLabel" , f : parse _AttachedLabel } , 4109 : { n : "SeriesText" , f : parse _SeriesText } , 4116 : { n : "ChartFormat" , f : parse _ChartFormat } , 4117 : { n : "Legend" , f : parse _Le