diff --git a/.eslintignore b/.eslintignore index 65b9ea36c..7ddb8ccfe 100644 --- a/.eslintignore +++ b/.eslintignore @@ -26,3 +26,8 @@ test/blanket_mocha.js # TypeScript generated files ts/**/*.js + +# Libloki specific files +libloki/test/components.js +libloki/mnemonic.js +libloki/sc_reduce32.js diff --git a/.eslintrc.js b/.eslintrc.js index 9bc431d91..34ab52aaa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -39,6 +39,9 @@ module.exports = { // consistently place operators at end of line except ternaries 'operator-linebreak': 'error', + // Use LF to stay consistent + 'linebreak-style': ['error', 'unix'], + quotes: [ 'error', 'single', diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..b83a209d5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text=auto +*.js text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +*.scss text eol=lf +*.json text eol=lf +*.css text eol=lf +*.html text eol=lf +*.yaml text eol=lf +*.yml text eol=lf diff --git a/.prettierignore b/.prettierignore index c75a6c5ce..50862cc2d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -19,6 +19,10 @@ ts/protobuf/*.js stylesheets/manifest.css ts/util/lint/exceptions.json +# Libloki specific files +libloki/test/test.js +libloki/test/components.js + # Third-party files node_modules/** components/** diff --git a/.travis.yml b/.travis.yml index 74ba422ca..9de89d951 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ install: - travis_wait 30 yarn install --frozen-lockfile --network-timeout 1000000 script: - yarn generate + - yarn lint-windows - yarn test env: global: @@ -35,3 +36,9 @@ matrix: cache: false env: - YARN_GPG=no + before_install: + - cd ../.. + - mv $TRAVIS_REPO_SLUG _old + - git config --global core.autocrlf false + - git clone --depth=50 _old $TRAVIS_REPO_SLUG + - cd $TRAVIS_REPO_SLUG diff --git a/Gruntfile.js b/Gruntfile.js index 8921a0d79..49aa631b0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -181,7 +181,7 @@ module.exports = grunt => { tasks: ['sass'], }, transpile: { - files: ['./ts/**/*.ts','./ts/**/*.tsx'], + files: ['./ts/**/*.ts', './ts/**/*.tsx'], tasks: ['exec:transpile'], }, }, @@ -491,7 +491,11 @@ module.exports = grunt => { 'locale-patch', ]); grunt.registerTask('dev', ['default', 'watch']); - grunt.registerTask('test', ['unit-tests', 'lib-unit-tests', 'loki-unit-tests']); + grunt.registerTask('test', [ + 'unit-tests', + 'lib-unit-tests', + 'loki-unit-tests', + ]); grunt.registerTask('date', ['gitinfo', 'getExpireTime']); grunt.registerTask('default', [ 'exec:build-protobuf', diff --git a/_locales/en/messages.json b/_locales/en/messages.json index adf54dd88..cb2a0c8c0 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1084,11 +1084,13 @@ "description": "Title of the Message TTL setting" }, "messageTTLSettingDescription": { - "message": "Time to live (how long the recipient will have to collect their messages)", + "message": + "Time to live (how long the recipient will have to collect their messages)", "description": "Description of the time to live setting" }, "messageTTLSettingWarning": { - "message": "Warning! Lowering the TTL could result in messages being lost if the recipient doesn't collect them in time!", + "message": + "Warning! Lowering the TTL could result in messages being lost if the recipient doesn't collect them in time!", "description": "Warning for the time to live setting" }, "notificationSettingsDialog": { @@ -1629,23 +1631,28 @@ }, "friendRequestPending": { "message": "Friend request", - "description": "Shown in the conversation history when the user sends or recieves a friend request" + "description": + "Shown in the conversation history when the user sends or recieves a friend request" }, "friendRequestAccepted": { "message": "Friend request accepted", - "description": "Shown in the conversation history when the user accepts a friend request" + "description": + "Shown in the conversation history when the user accepts a friend request" }, "friendRequestDeclined": { "message": "Friend request declined", - "description": "Shown in the conversation history when the user declines a friend request" + "description": + "Shown in the conversation history when the user declines a friend request" }, "friendRequestExpired": { "message": "Friend request expired", - "description": "Shown in the conversation history when the users friend request expires" + "description": + "Shown in the conversation history when the users friend request expires" }, "friendRequestNotificationTitle": { "message": "Friend request", - "description": "Shown in a notification title when receiving a friend request" + "description": + "Shown in a notification title when receiving a friend request" }, "friendRequestNotificationMessage": { "message": "$name$ sent you a friend request", @@ -1660,7 +1667,8 @@ }, "friendRequestAcceptedNotificationTitle": { "message": "Friend request accepted", - "description": "Shown in a notification title when friend request was accepted by the other user" + "description": + "Shown in a notification title when friend request was accepted by the other user" }, "friendRequestAcceptedNotificationMessage": { "message": "$name$ accepted your friend request", @@ -1681,7 +1689,8 @@ }, "settingsUnblockHeader": { "message": "Blocked Users", - "description": "Shown in the settings page as the heading for the blocked user settings" + "description": + "Shown in the settings page as the heading for the blocked user settings" }, "editProfileTitle": { "message": "Change your own display name", @@ -1694,7 +1703,8 @@ "copyPublicKey": { "message": "Copy public key", - "description": "Button action that the user can click to copy their public keys" + "description": + "Button action that the user can click to copy their public keys" }, "copiedPublicKey": { "message": "Copied public key", @@ -1702,21 +1712,25 @@ }, "editDisplayName": { "message": "Edit display name", - "description": "Button action that the user can click to edit their display name" + "description": + "Button action that the user can click to edit their display name" }, "showSeed": { "message": "Show seed", - "description": "Button action that the user can click to view their unique seed" + "description": + "Button action that the user can click to view their unique seed" }, "copiedMnemonic": { "message": "Copied seed to clipboard", - "description": "A toast message telling the user that the mnemonic seed was copied" + "description": + "A toast message telling the user that the mnemonic seed was copied" }, "passwordViewTitle": { "message": "Type in your password", - "description": "The title shown when user needs to type in a password to unlock the messenger" + "description": + "The title shown when user needs to type in a password to unlock the messenger" }, "unlock": { "message": "Unlock" @@ -1765,15 +1779,18 @@ }, "passwordLengthError": { "message": "Password must be between 6 and 50 characters long", - "description": "Error string shown to the user when password doesn't meet length criteria" + "description": + "Error string shown to the user when password doesn't meet length criteria" }, "passwordTypeError": { "message": "Password must be a string", - "description": "Error string shown to the user when password is not a string" + "description": + "Error string shown to the user when password is not a string" }, "passwordCharacterError": { "message": "Password must only contain letters, numbers and symbols", - "description": "Error string shown to the user when password contains an invalid character" + "description": + "Error string shown to the user when password contains an invalid character" }, "change": { "message": "Change" @@ -1784,5 +1801,4 @@ "remove": { "message": "Remove" } - } diff --git a/app/password_util.js b/app/password_util.js index def0b90bb..49a774f55 100644 --- a/app/password_util.js +++ b/app/password_util.js @@ -6,8 +6,9 @@ const ERRORS = { CHARACTER: 'Password must only contain letters, numbers and symbols', }; -const generateHash = (phrase) => phrase && sha512(phrase.trim()); -const matchesHash = (phrase, hash) => phrase && sha512(phrase.trim()) === hash.trim(); +const generateHash = phrase => phrase && sha512(phrase.trim()); +const matchesHash = (phrase, hash) => + phrase && sha512(phrase.trim()) === hash.trim(); const validatePassword = (phrase, i18n) => { if (!phrase || typeof phrase !== 'string') { @@ -20,13 +21,13 @@ const validatePassword = (phrase, i18n) => { } // Restrict characters to letters, numbers and symbols - const characterRegex = /^[a-zA-Z0-9-!()._`~@#$%^&*+=[\]{}|<>,;: ]+$/ + const characterRegex = /^[a-zA-Z0-9-!()._`~@#$%^&*+=[\]{}|<>,;: ]+$/; if (!characterRegex.test(trimmed)) { return i18n ? i18n('passwordCharacterError') : ERRORS.CHARACTER; } return null; -} +}; module.exports = { generateHash, diff --git a/app/profile_images.js b/app/profile_images.js index d416894a2..339f80fed 100644 --- a/app/profile_images.js +++ b/app/profile_images.js @@ -15,8 +15,7 @@ const hasImage = pubKey => fs.existsSync(getImagePath(pubKey)); const getImagePath = pubKey => `${PATH}/${pubKey}.png`; const getOrCreateImagePath = pubKey => { // If the image doesn't exist then create it - if (!hasImage(pubKey)) - return generateImage(pubKey); + if (!hasImage(pubKey)) return generateImage(pubKey); return getImagePath(pubKey); }; @@ -25,10 +24,11 @@ const removeImage = pubKey => { if (hasImage(pubKey)) { fs.unlinkSync(getImagePath(pubKey)); } -} +}; const removeImagesNotInArray = pubKeyArray => { - fs.readdirSync(PATH) + fs + .readdirSync(PATH) // Get all files that end with png .filter(file => file.includes('.png')) // Strip the extension @@ -37,7 +37,7 @@ const removeImagesNotInArray = pubKeyArray => { .filter(i => !pubKeyArray.includes(i)) // Remove them .forEach(i => removeImage(i)); -} +}; const generateImage = pubKey => { const imagePath = getImagePath(pubKey); @@ -52,8 +52,8 @@ const generateImage = pubKey => { background: [0, 0, 0, 0], }).toString(); fs.writeFileSync(imagePath, png, 'base64'); - return imagePath -} + return imagePath; +}; module.exports = { generateImage, diff --git a/app/sql.js b/app/sql.js index 2134db456..8f8122cc9 100644 --- a/app/sql.js +++ b/app/sql.js @@ -724,9 +724,12 @@ async function getPreKeyById(id) { return getById(PRE_KEYS_TABLE, id); } async function getPreKeyByRecipient(recipient) { - const row = await db.get(`SELECT * FROM ${PRE_KEYS_TABLE} WHERE recipient = $recipient;`, { - $recipient: recipient, - }); + const row = await db.get( + `SELECT * FROM ${PRE_KEYS_TABLE} WHERE recipient = $recipient;`, + { + $recipient: recipient, + } + ); if (!row) { return null; @@ -769,9 +772,12 @@ async function getContactPreKeyById(id) { return getById(CONTACT_PRE_KEYS_TABLE, id); } async function getContactPreKeyByIdentityKey(key) { - const row = await db.get(`SELECT * FROM ${CONTACT_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString ORDER BY keyId DESC LIMIT 1;`, { - $identityKeyString: key, - }); + const row = await db.get( + `SELECT * FROM ${CONTACT_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString ORDER BY keyId DESC LIMIT 1;`, + { + $identityKeyString: key, + } + ); if (!row) { return null; @@ -792,9 +798,12 @@ async function bulkAddContactPreKeys(array) { return bulkAdd(CONTACT_PRE_KEYS_TABLE, array); } async function removeContactPreKeyByIdentityKey(key) { - await db.run(`DELETE FROM ${CONTACT_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString;`, { - $identityKeyString: key, - }); + await db.run( + `DELETE FROM ${CONTACT_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString;`, + { + $identityKeyString: key, + } + ); } async function removeAllContactPreKeys() { return removeAllFromTable(CONTACT_PRE_KEYS_TABLE); @@ -825,9 +834,12 @@ async function getContactSignedPreKeyById(id) { return getById(CONTACT_SIGNED_PRE_KEYS_TABLE, id); } async function getContactSignedPreKeyByIdentityKey(key) { - const row = await db.get(`SELECT * FROM ${CONTACT_SIGNED_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString;`, { - $identityKeyString: key, - }); + const row = await db.get( + `SELECT * FROM ${CONTACT_SIGNED_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString;`, + { + $identityKeyString: key, + } + ); if (!row) { return null; @@ -847,9 +859,12 @@ async function bulkAddContactSignedPreKeys(array) { return bulkAdd(CONTACT_SIGNED_PRE_KEYS_TABLE, array); } async function removeContactSignedPreKeyByIdentityKey(key) { - await db.run(`DELETE FROM ${CONTACT_SIGNED_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString;`, { - $identityKeyString: key, - }); + await db.run( + `DELETE FROM ${CONTACT_SIGNED_PRE_KEYS_TABLE} WHERE identityKeyString = $identityKeyString;`, + { + $identityKeyString: key, + } + ); } async function removeAllContactSignedPreKeys() { return removeAllFromTable(CONTACT_SIGNED_PRE_KEYS_TABLE); @@ -1049,8 +1064,16 @@ async function getConversationCount() { } async function saveConversation(data) { - // eslint-disable-next-line camelcase - const { id, active_at, type, members, name, friendRequestStatus, profileName } = data; + const { + id, + // eslint-disable-next-line camelcase + active_at, + type, + members, + name, + friendRequestStatus, + profileName, + } = data; await db.run( `INSERT INTO conversations ( @@ -1105,8 +1128,16 @@ async function saveConversations(arrayOfConversations) { } async function updateConversation(data) { - // eslint-disable-next-line camelcase - const { id, active_at, type, members, name, friendRequestStatus, profileName } = data; + const { + id, + // eslint-disable-next-line camelcase + active_at, + type, + members, + name, + friendRequestStatus, + profileName, + } = data; await db.run( `UPDATE conversations SET @@ -1366,10 +1397,7 @@ async function saveSeenMessageHashes(arrayOfHashes) { } async function saveSeenMessageHash(data) { - const { - expiresAt, - hash, - } = data; + const { expiresAt, hash } = data; await db.run( `INSERT INTO seenMessages ( expiresAt, @@ -1377,7 +1405,8 @@ async function saveSeenMessageHash(data) { ) values ( $expiresAt, $hash - );`, { + );`, + { $expiresAt: expiresAt, $hash: hash, } @@ -1489,7 +1518,8 @@ async function getMessagesByConversation( conversationId, { limit = 100, receivedAt = Number.MAX_VALUE, type = '%' } = {} ) { - const rows = await db.all(` + const rows = await db.all( + ` SELECT json FROM messages WHERE conversationId = $conversationId AND received_at < $received_at AND @@ -1522,7 +1552,9 @@ async function getMessagesBySentAt(sentAt) { async function getSeenMessagesByHashList(hashes) { const rows = await db.all( - `SELECT * FROM seenMessages WHERE hash IN ( ${hashes.map(() => '?').join(', ')} );`, + `SELECT * FROM seenMessages WHERE hash IN ( ${hashes + .map(() => '?') + .join(', ')} );`, hashes ); diff --git a/js/background.js b/js/background.js index f266fb6c8..f086a83e5 100644 --- a/js/background.js +++ b/js/background.js @@ -12,7 +12,7 @@ */ // eslint-disable-next-line func-names -(async function () { +(async function() { 'use strict'; // Globally disable drag and drop @@ -240,12 +240,11 @@ setMessageTTL: value => { // Make sure the ttl is between a given range and is valid const intValue = parseInt(value, 10); - const ttl = Number.isNaN(intValue) ? 24 : intValue; + const ttl = Number.isNaN(intValue) ? 24 : intValue; storage.put('message-ttl', ttl); }, - getReadReceiptSetting: () => - storage.get('read-receipt-setting'), + getReadReceiptSetting: () => storage.get('read-receipt-setting'), setReadReceiptSetting: value => storage.put('read-receipt-setting', value), getNotificationSetting: () => @@ -331,12 +330,19 @@ window.log.info('Cleanup: starting...'); const results = await Promise.all([ - window.Signal.Data.getOutgoingWithoutExpiresAt({ MessageCollection: Whisper.MessageCollection }), - window.Signal.Data.getAllUnsentMessages({ MessageCollection: Whisper.MessageCollection }), + window.Signal.Data.getOutgoingWithoutExpiresAt({ + MessageCollection: Whisper.MessageCollection, + }), + window.Signal.Data.getAllUnsentMessages({ + MessageCollection: Whisper.MessageCollection, + }), ]); // Combine the models - const messagesForCleanup = results.reduce((array, current) => array.concat(current.toArray()), []); + const messagesForCleanup = results.reduce( + (array, current) => array.concat(current.toArray()), + [] + ); window.log.info( `Cleanup: Found ${messagesForCleanup.length} messages for cleanup` @@ -350,7 +356,10 @@ ); // Make sure we only target outgoing messages - if (message.isFriendRequest() && message.get('direction') === 'incoming') { + if ( + message.isFriendRequest() && + message.get('direction') === 'incoming' + ) { return; } @@ -392,7 +401,7 @@ let isMigrationWithIndexComplete = false; window.log.info( `Starting background data migration. Target version: ${ - Message.CURRENT_SCHEMA_VERSION + Message.CURRENT_SCHEMA_VERSION }` ); idleDetector.on('idle', async () => { @@ -589,7 +598,7 @@ title: window.i18n('editProfileTitle'), message: window.i18n('editProfileDisplayNameWarning'), nickname: displayName, - onOk: async (newName) => { + onOk: async newName => { await storage.setProfileName(newName); // Update the conversation if we have it @@ -599,7 +608,7 @@ conversation.setProfile(newProfile); } }, - }) + }); } }); @@ -1346,7 +1355,7 @@ type: 'friend-request', friendStatus: 'pending', direction: 'incoming', - } + }; } const message = new Whisper.Message(messageData); @@ -1371,7 +1380,7 @@ } catch (error) { window.log.error( `Failed to send delivery receipt to ${data.source} for message ${ - data.timestamp + data.timestamp }:`, error && error.stack ? error.stack : error ); diff --git a/js/blocked_number_controller.js b/js/blocked_number_controller.js index 7f4b3792c..918a21749 100644 --- a/js/blocked_number_controller.js +++ b/js/blocked_number_controller.js @@ -21,7 +21,9 @@ window.log.info('BlockedNumberController: starting initial fetch'); if (!storage) { - throw new Error('BlockedNumberController: Could not load blocked numbers'); + throw new Error( + 'BlockedNumberController: Could not load blocked numbers' + ); } // Add the numbers to the collection @@ -40,8 +42,7 @@ storage.addBlockedNumber(number); // Make sure we don't add duplicates - if (blockedNumbers.getModel(number)) - return; + if (blockedNumbers.getModel(number)) return; blockedNumbers.add({ number }); }, diff --git a/js/conversation_controller.js b/js/conversation_controller.js index 3abe9561a..feaa2e1eb 100644 --- a/js/conversation_controller.js +++ b/js/conversation_controller.js @@ -80,9 +80,16 @@ const contactCollection = new (Backbone.Collection.extend({ initialize() { - this.on('change:timestamp change:name change:number change:profileName', this.sort); + this.on( + 'change:timestamp change:name change:number change:profileName', + this.sort + ); - this.listenTo(conversations, 'add change:active_at change:friendRequestStatus', this.addActive); + this.listenTo( + conversations, + 'add change:active_at change:friendRequestStatus', + this.addActive + ); this.listenTo(conversations, 'reset', () => this.reset([])); this.collator = new Intl.Collator(); @@ -193,7 +200,9 @@ return conversation; }; - conversation.initialPromise = create().then(() => conversation.updateProfileAvatar()); + conversation.initialPromise = create().then(() => + conversation.updateProfileAvatar() + ); return conversation; }, @@ -265,7 +274,9 @@ await Promise.all(promises); // Remove any unused images - window.profileImages.removeImagesNotInArray(conversations.map(c => c.id)); + window.profileImages.removeImagesNotInArray( + conversations.map(c => c.id) + ); window.log.info('ConversationController: done with initial fetch'); } catch (error) { diff --git a/js/logging.js b/js/logging.js index f93073362..e2fec0d44 100644 --- a/js/logging.js +++ b/js/logging.js @@ -54,7 +54,7 @@ if (window.console) { console._log = console.log; console.log = log; console._trace = console.trace; - console._debug = console.debug + console._debug = console.debug; console._info = console.info; console._warn = console.warn; console._error = console.error; @@ -101,7 +101,7 @@ function fetch() { } const publish = debuglogs.upload; -const development = (window.getEnvironment() !== 'production'); +const development = window.getEnvironment() !== 'production'; // A modern logging interface for the browser diff --git a/js/models/blockedNumbers.js b/js/models/blockedNumbers.js index f61716d68..b4604c2fc 100644 --- a/js/models/blockedNumbers.js +++ b/js/models/blockedNumbers.js @@ -89,5 +89,4 @@ return this.models.find(m => m.get('number') === number); }, }); - })(); diff --git a/js/models/conversations.js b/js/models/conversations.js index 2e3b70b7e..82035aef9 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -11,7 +11,7 @@ /* eslint-disable more/no-then */ // eslint-disable-next-line func-names -(function () { +(function() { 'use strict'; window.Whisper = window.Whisper || {}; @@ -35,6 +35,7 @@ upgradeMessageSchema, loadAttachmentData, getAbsoluteAttachmentPath, + // eslint-disable-next-line no-unused-vars writeNewAttachmentData, deleteAttachmentData, } = window.Signal.Migrations; @@ -323,7 +324,9 @@ if (this.id !== pubKey) return; // Go through our messages and find the one that we need to update - const messages = this.messageCollection.models.filter(m => m.get('sent_at') === timestamp); + const messages = this.messageCollection.models.filter( + m => m.get('sent_at') === timestamp + ); await Promise.all(messages.map(m => m.setCalculatingPoW())); }, @@ -372,8 +375,7 @@ // Get the pending friend requests that match the direction // If no direction is supplied then return all pending friend requests return messages.models.filter(m => { - if (m.get('friendStatus') !== 'pending') - return false; + if (m.get('friendStatus') !== 'pending') return false; return direction === null || m.get('direction') === direction; }); }, @@ -462,7 +464,7 @@ if (!this.isPrivate()) { throw new Error( 'You cannot verify a group conversation. ' + - 'You must verify individual contacts.' + 'You must verify individual contacts.' ); } @@ -547,18 +549,27 @@ }, isPendingFriendRequest() { const status = this.get('friendRequestStatus'); - return status === FriendRequestStatusEnum.requestSent || + return ( + status === FriendRequestStatusEnum.requestSent || status === FriendRequestStatusEnum.requestReceived || - status === FriendRequestStatusEnum.pendingSend; + status === FriendRequestStatusEnum.pendingSend + ); }, hasSentFriendRequest() { - return this.get('friendRequestStatus') === FriendRequestStatusEnum.requestSent; + return ( + this.get('friendRequestStatus') === FriendRequestStatusEnum.requestSent + ); }, hasReceivedFriendRequest() { - return this.get('friendRequestStatus') === FriendRequestStatusEnum.requestReceived; + return ( + this.get('friendRequestStatus') === + FriendRequestStatusEnum.requestReceived + ); }, isFriend() { - return this.get('friendRequestStatus') === FriendRequestStatusEnum.friends; + return ( + this.get('friendRequestStatus') === FriendRequestStatusEnum.friends + ); }, updateTextInputState() { switch (this.get('friendRequestStatus')) { @@ -582,8 +593,7 @@ }, async setFriendRequestStatus(newStatus) { // Ensure that the new status is a valid FriendStatusEnum value - if (!(newStatus in Object.values(FriendRequestStatusEnum))) - return; + if (!(newStatus in Object.values(FriendRequestStatusEnum))) return; if (this.get('friendRequestStatus') !== newStatus) { this.set({ friendRequestStatus: newStatus }); await window.Signal.Data.updateConversation(this.id, this.attributes, { @@ -610,7 +620,9 @@ ); }, async resetPendingSend() { - if (this.get('friendRequestStatus') === FriendRequestStatusEnum.pendingSend) { + if ( + this.get('friendRequestStatus') === FriendRequestStatusEnum.pendingSend + ) { await this.setFriendRequestStatus(FriendRequestStatusEnum.none); } }, @@ -645,8 +657,7 @@ }, async onFriendRequestTimeout() { // Unset the timer - if (this.unlockTimer) - clearTimeout(this.unlockTimer); + if (this.unlockTimer) clearTimeout(this.unlockTimer); this.unlockTimer = null; @@ -745,7 +756,7 @@ if (!this.isPrivate()) { throw new Error( 'You cannot set a group conversation as trusted. ' + - 'You must set individual contacts as trusted.' + 'You must set individual contacts as trusted.' ); } @@ -1055,9 +1066,9 @@ fileName: fileName || null, thumbnail: thumbnail ? { - ...(await loadAttachmentData(thumbnail)), - objectUrl: getAbsoluteAttachmentPath(thumbnail.path), - } + ...(await loadAttachmentData(thumbnail)), + objectUrl: getAbsoluteAttachmentPath(thumbnail.path), + } : null, }; }) @@ -1067,8 +1078,7 @@ async sendMessage(body, attachments, quote) { // Input should be blocked if there is a pending friend request - if (this.isPendingFriendRequest()) - return; + if (this.isPendingFriendRequest()) return; this.clearTypingTimers(); @@ -1108,7 +1118,9 @@ }); } else { // Check if we have sent a friend request - const outgoingRequests = await this.getPendingFriendRequests('outgoing'); + const outgoingRequests = await this.getPendingFriendRequests( + 'outgoing' + ); if (outgoingRequests.length > 0) { // Check if the requests have errored, if so then remove them // and send the new request if possible @@ -1128,7 +1140,9 @@ // because one of them was sent successfully if (friendRequestSent) return null; } - await this.setFriendRequestStatus(FriendRequestStatusEnum.pendingSend); + await this.setFriendRequestStatus( + FriendRequestStatusEnum.pendingSend + ); // Send the friend request! messageWithSchema = await upgradeMessageSchema({ @@ -1213,7 +1227,7 @@ options ) ) - ) + ); }); return true; @@ -1375,8 +1389,8 @@ accessKey && sealedSender === SEALED_SENDER.ENABLED ? accessKey : window.Signal.Crypto.arrayBufferToBase64( - window.Signal.Crypto.getRandomBytes(16) - ), + window.Signal.Crypto.getRandomBytes(16) + ), }, }; }, @@ -1533,8 +1547,7 @@ }, async setSessionResetStatus(newStatus) { // Ensure that the new status is a valid SessionResetEnum value - if (!(newStatus in Object.values(SessionResetEnum))) - return; + if (!(newStatus in Object.values(SessionResetEnum))) return; if (this.get('sessionResetStatus') !== newStatus) { this.set({ sessionResetStatus: newStatus }); await window.Signal.Data.updateConversation(this.id, this.attributes, { @@ -1553,7 +1566,9 @@ }, isSessionResetReceived() { - return this.get('sessionResetStatus') === SessionResetEnum.request_received; + return ( + this.get('sessionResetStatus') === SessionResetEnum.request_received + ); }, isSessionResetOngoing() { @@ -1585,7 +1600,10 @@ // send empty message to confirm that we have adopted the new session await window.libloki.api.sendEmptyMessage(this.id); } - await this.createAndStoreEndSessionMessage({ type: 'incoming', endSessionType: 'done' }); + await this.createAndStoreEndSessionMessage({ + type: 'incoming', + endSessionType: 'done', + }); await this.setSessionResetStatus(SessionResetEnum.none); }, @@ -1594,13 +1612,22 @@ // Only create a new message if *we* initiated the session reset. // On the receiver side, the actual message containing the END_SESSION flag // will ensure the "session reset" message will be added to their conversation. - if (this.get('sessionResetStatus') !== SessionResetEnum.request_received) { + if ( + this.get('sessionResetStatus') !== SessionResetEnum.request_received + ) { await this.onSessionResetInitiated(); - const message = await this.createAndStoreEndSessionMessage({ type: 'outgoing', endSessionType: 'ongoing' }); + const message = await this.createAndStoreEndSessionMessage({ + type: 'outgoing', + endSessionType: 'ongoing', + }); const options = this.getSendOptions(); await message.send( this.wrapSend( - textsecure.messaging.resetSession(this.id, message.get('sent_at'), options) + textsecure.messaging.resetSession( + this.id, + message.get('sent_at'), + options + ) ) ); if (message.hasErrors()) { @@ -1700,7 +1727,7 @@ } else { window.log.warn( 'Marked a message as read in the database, but ' + - 'it was not in messageCollection.' + 'it was not in messageCollection.' ); } @@ -2063,7 +2090,8 @@ const color = this.getColor(); const avatar = this.get('avatar') || this.get('profileAvatar'); - const url = avatar && avatar.path ? getAbsoluteAttachmentPath(avatar.path) : avatar; + const url = + avatar && avatar.path ? getAbsoluteAttachmentPath(avatar.path) : avatar; if (url) { return { url, color }; @@ -2091,7 +2119,7 @@ notify(message) { if (message.isFriendRequest()) { if (this.hasSentFriendRequest()) - return this.notifyFriendRequest(message.get('source'), 'accepted') + return this.notifyFriendRequest(message.get('source'), 'accepted'); return this.notifyFriendRequest(message.get('source'), 'requested'); } if (!message.isIncoming()) return Promise.resolve(); @@ -2127,8 +2155,7 @@ // Notification for friend request received async notifyFriendRequest(source, type) { // Data validation - if (!source) - throw new Error('Invalid source'); + if (!source) throw new Error('Invalid source'); if (!['accepted', 'requested'].includes(type)) throw new Error('Type must be accepted or requested.'); diff --git a/js/models/messages.js b/js/models/messages.js index 6f919391d..57e3786e7 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -12,7 +12,7 @@ /* eslint-disable more/no-then */ // eslint-disable-next-line func-names -(function () { +(function() { 'use strict'; window.Whisper = window.Whisper || {}; @@ -202,8 +202,7 @@ getNotificationText() { const description = this.getDescription(); if (description) { - if (this.isFriendRequest()) - return `Friend Request: ${description}`; + if (this.isFriendRequest()) return `Friend Request: ${description}`; return description; } if (this.get('attachments').length > 0) { @@ -364,7 +363,7 @@ onBlockUser, onUnblockUser, onRetrySend, - } + }; }, findContact(phoneNumber) { return ConversationController.get(phoneNumber); @@ -444,7 +443,8 @@ // Handle friend request statuses const isFriendRequest = this.isFriendRequest(); - const isOutgoingFriendRequest = isFriendRequest && this.get('direction') === 'outgoing'; + const isOutgoingFriendRequest = + isFriendRequest && this.get('direction') === 'outgoing'; const isOutgoing = this.isOutgoing() || isOutgoingFriendRequest; // Only return the status on outgoing messages @@ -562,8 +562,8 @@ contact.number && contact.number[0] && contact.number[0].value; const onSendMessage = firstNumber ? () => { - this.trigger('open-conversation', firstNumber); - } + this.trigger('open-conversation', firstNumber); + } : null; const onClick = async () => { // First let's be sure that the signal account check is complete. @@ -602,8 +602,8 @@ !path && !objectUrl ? null : Object.assign({}, attachment.thumbnail || {}, { - objectUrl: path || objectUrl, - }); + objectUrl: path || objectUrl, + }); return Object.assign({}, attachment, { isVoiceMessage: Signal.Types.Attachment.isVoiceMessage(attachment), @@ -670,15 +670,15 @@ url: getAbsoluteAttachmentPath(path), screenshot: screenshot ? { - ...screenshot, - url: getAbsoluteAttachmentPath(screenshot.path), - } + ...screenshot, + url: getAbsoluteAttachmentPath(screenshot.path), + } : null, thumbnail: thumbnail ? { - ...thumbnail, - url: getAbsoluteAttachmentPath(thumbnail.path), - } + ...thumbnail, + url: getAbsoluteAttachmentPath(thumbnail.path), + } : null, }; }, @@ -1143,7 +1143,7 @@ errors = errors.concat(this.get('errors') || []); if (this.isEndSession) { - this.set({ endSessionType: 'failed'}); + this.set({ endSessionType: 'failed' }); } this.set({ errors }); @@ -1407,7 +1407,9 @@ autoAccept = true; message.set({ friendStatus: 'accepted' }); await conversation.onFriendRequestAccepted(); - window.libloki.api.sendFriendRequestAccepted(message.get('source')); + window.libloki.api.sendFriendRequestAccepted( + message.get('source') + ); } else if (!conversation.isFriend()) { await conversation.onFriendRequestReceived(); } @@ -1445,7 +1447,7 @@ if (previousUnread !== message.get('unread')) { window.log.warn( 'Caught race condition on new message read state! ' + - 'Manually starting timers.' + 'Manually starting timers.' ); // We call markRead() even though the message is already // marked read because we need to start expiration @@ -1464,8 +1466,7 @@ // Need to do this here because the conversation has already changed states if (autoAccept) await conversation.notifyFriendRequest(source, 'accepted'); - else - await conversation.notify(message); + else await conversation.notify(message); } confirm(); diff --git a/js/models/profile.js b/js/models/profile.js index c20d49bbb..6a92504d4 100644 --- a/js/models/profile.js +++ b/js/models/profile.js @@ -14,9 +14,9 @@ storage.getLocalProfile = () => { const profile = storage.get(PROFILE_ID, null); return profile; - } + }; - storage.setProfileName = async (newName) => { + storage.setProfileName = async newName => { if (typeof newName !== 'string' && newName !== null) { throw Error('Name must be a string!'); } @@ -33,13 +33,13 @@ } else { newProfile.name = { displayName: trimmed, - } + }; } await storage.saveLocalProfile(newProfile); - } + }; - storage.saveLocalProfile = async (profile) => { + storage.saveLocalProfile = async profile => { const storedProfile = storage.get(PROFILE_ID, null); // Only store the profile if we have a different object @@ -49,10 +49,10 @@ window.log.info('saving local profile ', profile); await storage.put(PROFILE_ID, profile); - } + }; storage.removeLocalProfile = async () => { window.log.info('removing local profile'); await storage.remove(PROFILE_ID); - } + }; })(); diff --git a/js/modules/data.js b/js/modules/data.js index 9a1d34649..510fe0c48 100644 --- a/js/modules/data.js +++ b/js/modules/data.js @@ -573,7 +573,6 @@ async function removeAllContactSignedPreKeys() { await channels.removeAllContactSignedPreKeys(); } - // Items const ITEM_KEYS = { @@ -690,7 +689,7 @@ async function saveConversations(data) { } async function getConversationById(id, { Conversation }) { - const rawData = await channels.getConversationById(id) + const rawData = await channels.getConversationById(id); const data = setifyProperty(rawData, 'swarmNodes'); return new Conversation(data); } @@ -725,8 +724,9 @@ async function _removeConversations(ids) { } async function getAllConversations({ ConversationCollection }) { - const conversations = (await channels.getAllConversations()) - .map(c => setifyProperty(c, 'swarmNodes')); + const conversations = (await channels.getAllConversations()).map(c => + setifyProperty(c, 'swarmNodes') + ); const collection = new ConversationCollection(); collection.add(conversations); @@ -739,8 +739,9 @@ async function getAllConversationIds() { } async function getAllPrivateConversations({ ConversationCollection }) { - const conversations = (await channels.getAllPrivateConversations()) - .map(c => setifyProperty(c, 'swarmNodes')); + const conversations = (await channels.getAllPrivateConversations()).map(c => + setifyProperty(c, 'swarmNodes') + ); const collection = new ConversationCollection(); collection.add(conversations); @@ -748,8 +749,9 @@ async function getAllPrivateConversations({ ConversationCollection }) { } async function getAllGroupsInvolvingId(id, { ConversationCollection }) { - const conversations = (await channels.getAllGroupsInvolvingId(id)) - .map(c => setifyProperty(c, 'swarmNodes')); + const conversations = (await channels.getAllGroupsInvolvingId(id)).map(c => + setifyProperty(c, 'swarmNodes') + ); const collection = new ConversationCollection(); collection.add(conversations); @@ -757,8 +759,9 @@ async function getAllGroupsInvolvingId(id, { ConversationCollection }) { } async function searchConversations(query, { ConversationCollection }) { - const conversations = (await channels.searchConversations(query)) - .map(c => setifyProperty(c, 'swarmNodes')); + const conversations = (await channels.searchConversations(query)).map(c => + setifyProperty(c, 'swarmNodes') + ); const collection = new ConversationCollection(); collection.add(conversations); @@ -905,9 +908,7 @@ async function getMessagesByConversation( return new MessageCollection(messages); } -async function getSeenMessagesByHashList( - hashes -) { +async function getSeenMessagesByHashList(hashes) { const seenMessages = await channels.getSeenMessagesByHashList(hashes); return seenMessages; } diff --git a/js/modules/loki_message_api.js b/js/modules/loki_message_api.js index dbeb50dd7..1a3a47c54 100644 --- a/js/modules/loki_message_api.js +++ b/js/modules/loki_message_api.js @@ -4,21 +4,18 @@ const fetch = require('node-fetch'); // eslint-disable-next-line -const invert = p => new Promise((res, rej) => p.then(rej, res)); +const invert = p => new Promise((res, rej) => p.then(rej, res)); const firstOf = ps => invert(Promise.all(ps.map(invert))); // Will be raised (to 3?) when we get more nodes const MINIMUM_SUCCESSFUL_REQUESTS = 2; class LokiMessageAPI { - constructor({ messageServerPort }) { - this.messageServerPort = messageServerPort - ? `:${messageServerPort}` - : ''; + this.messageServerPort = messageServerPort ? `:${messageServerPort}` : ''; } async sendMessage(pubKey, data, messageTimeStamp, ttl) { - const swarmNodes = await window.LokiSnodeAPI.getSwarmNodesByPubkey(pubKey) + const swarmNodes = await window.LokiSnodeAPI.getSwarmNodesByPubkey(pubKey); if (!swarmNodes || swarmNodes.size === 0) { throw Error('No swarm nodes to query!'); } @@ -33,7 +30,14 @@ class LokiMessageAPI { timestamp: messageTimeStamp, }); const development = window.getEnvironment() !== 'production'; - nonce = await callWorker('calcPoW', timestamp, ttl, pubKey, data64, development); + nonce = await callWorker( + 'calcPoW', + timestamp, + ttl, + pubKey, + data64, + development + ); } catch (err) { // Something went horribly wrong throw err; @@ -84,14 +88,19 @@ class LokiMessageAPI { if (response.status >= 0 && response.status < 400) { return result; } - log.error(options.type, options.url, response.status, 'Error sending message'); + log.error( + options.type, + options.url, + response.status, + 'Error sending message' + ); throw HTTPError('sendMessage: error response', response.status, result); }); try { // TODO: Possibly change this to require more than a single response? const result = await firstOf(requests); return result; - } catch(err) { + } catch (err) { throw err; } } @@ -128,7 +137,12 @@ class LokiMessageAPI { } catch (e) { // TODO: Maybe we shouldn't immediately delete? // And differentiate between different connectivity issues - log.error(options.type, options.url, 0, `Error retrieving messages from ${nodeUrl}`); + log.error( + options.type, + options.url, + 0, + `Error retrieving messages from ${nodeUrl}` + ); window.LokiSnodeAPI.unreachableNode(ourKey, nodeUrl); return; } @@ -155,7 +169,7 @@ class LokiMessageAPI { } // Handle error from snode log.error(options.type, options.url, response.status, 'Error'); - } + }; while (completedRequests < MINIMUM_SUCCESSFUL_REQUESTS) { const remainingRequests = MINIMUM_SUCCESSFUL_REQUESTS - completedRequests; diff --git a/js/modules/loki_snode_api.js b/js/modules/loki_snode_api.js index d4e0d1553..80b999909 100644 --- a/js/modules/loki_snode_api.js +++ b/js/modules/loki_snode_api.js @@ -8,15 +8,12 @@ const dns = require('dns'); const MINIMUM_SWARM_NODES = 1; class LokiSnodeAPI { - constructor({ url, swarmServerPort }) { if (!is.string(url)) { throw new Error('WebAPI.initialize: Invalid server url'); } this.url = url; - this.swarmServerPort = swarmServerPort - ? `:${swarmServerPort}` - : ''; + this.swarmServerPort = swarmServerPort ? `:${swarmServerPort}` : ''; this.swarmsPendingReplenish = {}; this.ourSwarmNodes = {}; } @@ -25,7 +22,7 @@ class LokiSnodeAPI { /* resolve random snode */ return new Promise((resolve, reject) => { dns.resolveCname(this.url, (err, address) => { - if(err) { + if (err) { reject(err); } else { resolve(address[0]); @@ -43,9 +40,13 @@ class LokiSnodeAPI { const swarmNodes = conversation.get('swarmNodes'); if (swarmNodes.delete(nodeUrl)) { conversation.set({ swarmNodes }); - await window.Signal.Data.updateConversation(conversation.id, conversation.attributes, { - Conversation: Whisper.Conversation, - }); + await window.Signal.Data.updateConversation( + conversation.id, + conversation.attributes, + { + Conversation: Whisper.Conversation, + } + ); } } @@ -53,7 +54,7 @@ class LokiSnodeAPI { if (!this.ourSwarmNodes[nodeUrl]) { this.ourSwarmNodes[nodeUrl] = { lastHash: hash, - } + }; } else { this.ourSwarmNodes[nodeUrl].lastHash = hash; } @@ -69,7 +70,7 @@ class LokiSnodeAPI { const ourKey = window.textsecure.storage.user.getNumber(); const nodeAddresses = await window.LokiSnodeAPI.getSwarmNodes(ourKey); if (!nodeAddresses || nodeAddresses.length === 0) { - throw Error('Could not load our swarm') + throw Error('Could not load our swarm'); } nodeAddresses.forEach(url => { @@ -91,8 +92,8 @@ class LokiSnodeAPI { async replenishSwarm(pubKey) { const conversation = window.ConversationController.get(pubKey); if (!(pubKey in this.swarmsPendingReplenish)) { - this.swarmsPendingReplenish[pubKey] = new Promise(async (resolve) => { - let newSwarmNodes + this.swarmsPendingReplenish[pubKey] = new Promise(async resolve => { + let newSwarmNodes; try { newSwarmNodes = new Set(await this.getSwarmNodes(pubKey)); } catch (e) { @@ -100,9 +101,13 @@ class LokiSnodeAPI { newSwarmNodes = new Set([]); } conversation.set({ swarmNodes: newSwarmNodes }); - await window.Signal.Data.updateConversation(conversation.id, conversation.attributes, { - Conversation: Whisper.Conversation, - }); + await window.Signal.Data.updateConversation( + conversation.id, + conversation.attributes, + { + Conversation: Whisper.Conversation, + } + ); resolve(newSwarmNodes); }); } @@ -129,7 +134,7 @@ class LokiSnodeAPI { params: { pubkey: pubKey, }, - } + }; const fetchOptions = { method: options.type, @@ -144,7 +149,12 @@ class LokiSnodeAPI { try { response = await fetch(options.url, fetchOptions); } catch (e) { - log.error(options.type, options.url, 0, `Error getting swarm nodes for ${pubKey}`); + log.error( + options.type, + options.url, + 0, + `Error getting swarm nodes for ${pubKey}` + ); throw HTTPError('fetch error', 0, e.toString()); } @@ -163,7 +173,12 @@ class LokiSnodeAPI { if (response.status >= 0 && response.status < 400) { return result.nodes; } - log.error(options.type, options.url, response.status, `Error getting swarm nodes for ${pubKey}`); + log.error( + options.type, + options.url, + response.status, + `Error getting swarm nodes for ${pubKey}` + ); throw HTTPError('sendMessage: error response', response.status, result); } } diff --git a/js/modules/util_worker_interface.js b/js/modules/util_worker_interface.js index 79306516b..82fafcc74 100644 --- a/js/modules/util_worker_interface.js +++ b/js/modules/util_worker_interface.js @@ -9,7 +9,7 @@ class TimedOutError extends Error { if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(this, this.constructor); } else { - this.stack = (new Error(message)).stack; + this.stack = new Error(message).stack; } } } @@ -46,7 +46,7 @@ class WorkerInterface { }; } - _makeJob (fnName) { + _makeJob(fnName) { this._jobCounter += 1; const id = this._jobCounter; @@ -59,7 +59,7 @@ class WorkerInterface { }; return id; - }; + } _updateJob(id, data) { const { resolve, reject } = data; @@ -85,7 +85,7 @@ class WorkerInterface { return reject(error); }, }; - }; + } _removeJob(id) { if (this._DEBUG) { @@ -97,7 +97,7 @@ class WorkerInterface { _getJob(id) { return this._jobs[id]; - }; + } callWorker(fnName, ...args) { const jobId = this._makeJob(fnName); @@ -112,11 +112,14 @@ class WorkerInterface { }); setTimeout( - () => reject(new TimedOutError(`Worker job ${jobId} (${fnName}) timed out`)), + () => + reject( + new TimedOutError(`Worker job ${jobId} (${fnName}) timed out`) + ), this.timeout ); }); - }; + } } module.exports = { diff --git a/js/notifications.js b/js/notifications.js index 5295b2a96..f7f46324f 100644 --- a/js/notifications.js +++ b/js/notifications.js @@ -87,14 +87,18 @@ let iconUrl; // The number of notifications excluding friend request - const messagesNotificationCount = this.models.filter(n => !n.get('isFriendRequest')).length; + const messagesNotificationCount = this.models.filter( + n => !n.get('isFriendRequest') + ).length; // NOTE: i18n has more complex rules for pluralization than just // distinguishing between zero (0) and other (non-zero), // e.g. Russian: // http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html const newMessageCountLabel = `${messagesNotificationCount} ${ - messagesNotificationCount === 1 ? i18n('newMessage') : i18n('newMessages') + messagesNotificationCount === 1 + ? i18n('newMessage') + : i18n('newMessages') }`; const last = this.last().toJSON(); diff --git a/js/signal_protocol_store.js b/js/signal_protocol_store.js index 76f001aa6..be56da563 100644 --- a/js/signal_protocol_store.js +++ b/js/signal_protocol_store.js @@ -1,5 +1,14 @@ -/* global - dcodeIO, Backbone, _, libsignal, textsecure, ConversationController, stringObject, BlockedNumberController */ +/* + global + dcodeIO, + Backbone, + _, + libsignal, + textsecure, + ConversationController, + stringObject, + BlockedNumberController +*/ /* eslint-disable no-proto */ @@ -187,7 +196,10 @@ const key = await window.Signal.Data.getPreKeyByRecipient(contactPubKey); if (key) { - window.log.info('Successfully fetched prekey for recipient:', contactPubKey); + window.log.info( + 'Successfully fetched prekey for recipient:', + contactPubKey + ); return { pubKey: key.publicKey, privKey: key.privateKey, diff --git a/js/util_worker_tasks.js b/js/util_worker_tasks.js index a1310e706..446ee7da8 100644 --- a/js/util_worker_tasks.js +++ b/js/util_worker_tasks.js @@ -41,6 +41,24 @@ function stringToArrayBufferBase64(string) { function arrayBufferToStringBase64(arrayBuffer) { return dcodeIO.ByteBuffer.wrap(arrayBuffer).toString('base64'); } -function calcPoW(timestamp, ttl, pubKey, data, development, nonceTrials = undefined, increment = 1, startNonce = 0) { - return pow.calcPoW(timestamp, ttl, pubKey, data, development, nonceTrials, increment, startNonce); +function calcPoW( + timestamp, + ttl, + pubKey, + data, + development, + nonceTrials = undefined, + increment = 1, + startNonce = 0 +) { + return pow.calcPoW( + timestamp, + ttl, + pubKey, + data, + development, + nonceTrials, + increment, + startNonce + ); } diff --git a/js/views/blocked_number_view.js b/js/views/blocked_number_view.js index 51f53dd03..3b8696355 100644 --- a/js/views/blocked_number_view.js +++ b/js/views/blocked_number_view.js @@ -8,87 +8,89 @@ // eslint-disable-next-line func-names (function() { - 'use strict'; + 'use strict'; - window.Whisper = window.Whisper || {}; + window.Whisper = window.Whisper || {}; - Whisper.BlockedNumberView = Whisper.View.extend({ - templateName: 'blockedUserSettings', - className: 'blockedUserSettings', - events: { - 'click .unblock-button': 'onUnblock', - }, - initialize() { - storage.onready(() => { - BlockedNumberController.refresh(); - this.collection = getBlockedNumbers(); - this.listView = new Whisper.BlockedNumberListView({ - collection: this.collection, - }); - - this.listView.render(); - this.blockedUserSettings = this.$('.blocked-user-settings'); - this.blockedUserSettings.prepend(this.listView.el); + Whisper.BlockedNumberView = Whisper.View.extend({ + templateName: 'blockedUserSettings', + className: 'blockedUserSettings', + events: { + 'click .unblock-button': 'onUnblock', + }, + initialize() { + storage.onready(() => { + BlockedNumberController.refresh(); + this.collection = getBlockedNumbers(); + this.listView = new Whisper.BlockedNumberListView({ + collection: this.collection, }); - }, - render_attributes() { - return { - blockedHeader: i18n('settingsUnblockHeader'), - unblockMessage: i18n('unblockUser'), - }; - }, - onUnblock() { - const number = this.$('select option:selected').val(); - if (!number) return; - if (BlockedNumberController.isBlocked(number)) { - BlockedNumberController.unblock(number); - window.onUnblockNumber(number); - this.listView.collection.remove(this.listView.collection.where({ number })); - } - }, - }); + this.listView.render(); + this.blockedUserSettings = this.$('.blocked-user-settings'); + this.blockedUserSettings.prepend(this.listView.el); + }); + }, + render_attributes() { + return { + blockedHeader: i18n('settingsUnblockHeader'), + unblockMessage: i18n('unblockUser'), + }; + }, + onUnblock() { + const number = this.$('select option:selected').val(); + if (!number) return; + if (BlockedNumberController.isBlocked(number)) { + BlockedNumberController.unblock(number); + window.onUnblockNumber(number); + this.listView.collection.remove( + this.listView.collection.where({ number }) + ); + } + }, + }); Whisper.BlockedNumberListView = Whisper.View.extend({ - tagName: 'select', - initialize(options) { - this.options = options || {}; - this.listenTo(this.collection, 'add', this.addOne); - this.listenTo(this.collection, 'reset', this.addAll); - this.listenTo(this.collection, 'remove', this.addAll); - }, - addOne(model) { - const number = model.get('number'); - if (number) { - this.$el.append(``); - } - }, - addAll() { - this.$el.html(''); - this.collection.each(this.addOne, this); - }, - truncate(string, limit) { - // Make sure an element and number of items to truncate is provided - if (!string || !limit) return string; + tagName: 'select', + initialize(options) { + this.options = options || {}; + this.listenTo(this.collection, 'add', this.addOne); + this.listenTo(this.collection, 'reset', this.addAll); + this.listenTo(this.collection, 'remove', this.addAll); + }, + addOne(model) { + const number = model.get('number'); + if (number) { + this.$el.append( + `` + ); + } + }, + addAll() { + this.$el.html(''); + this.collection.each(this.addOne, this); + }, + truncate(string, limit) { + // Make sure an element and number of items to truncate is provided + if (!string || !limit) return string; - // Get the inner content of the element - let content = string.trim(); + // Get the inner content of the element + let content = string.trim(); - // Convert the content into an array of words - // Remove any words above the limit - content = content.slice(0, limit); + // Convert the content into an array of words + // Remove any words above the limit + content = content.slice(0, limit); - // Convert the array of words back into a string - // If there's content to add after it, add it - if (string.length > limit) - content = `${content}...`; + // Convert the array of words back into a string + // If there's content to add after it, add it + if (string.length > limit) content = `${content}...`; - return content; - }, - render() { - this.addAll(); - return this; - }, - }); - })(); + return content; + }, + render() { + this.addAll(); + return this; + }, + }); +})(); diff --git a/js/views/conversation_list_item_view.js b/js/views/conversation_list_item_view.js index b4142c392..ff6eb7bf1 100644 --- a/js/views/conversation_list_item_view.js +++ b/js/views/conversation_list_item_view.js @@ -42,8 +42,7 @@ props, }); - const update = () => - this.childView.update(this.getProps()); + const update = () => this.childView.update(this.getProps()); this.listenTo(this.model, 'change', update); @@ -54,14 +53,16 @@ }); // list of conversations, showing user/group and last message sent - Whisper.ConversationContactListItemView = Whisper.ConversationListItemView.extend({ - getProps() { - // We don't want to show a timestamp or a message - const props = this.model.getPropsForListItem(); - delete props.lastMessage; - delete props.lastUpdated; + Whisper.ConversationContactListItemView = Whisper.ConversationListItemView.extend( + { + getProps() { + // We don't want to show a timestamp or a message + const props = this.model.getPropsForListItem(); + delete props.lastMessage; + delete props.lastUpdated; - return props; - }, - }); + return props; + }, + } + ); })(); diff --git a/js/views/conversation_search_view.js b/js/views/conversation_search_view.js index eb1d3a398..234f8f739 100644 --- a/js/views/conversation_search_view.js +++ b/js/views/conversation_search_view.js @@ -21,7 +21,10 @@ }, render_attributes() { // Show the appropriate message based on model validity - const message = this.model && this.model.isValid() ? i18n('startConversation') : i18n('invalidNumberError'); + const message = + this.model && this.model.isValid() + ? i18n('startConversation') + : i18n('invalidNumberError'); return { number: message, title: this.model.getNumber(), @@ -70,7 +73,6 @@ filterContacts() { const query = this.$input.val().trim(); if (query.length) { - // Update the contact model this.new_contact_view.model.set('id', query); this.new_contact_view.render().$el.hide(); diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index ecbc57969..b4588e3de 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -13,7 +13,7 @@ */ // eslint-disable-next-line func-names -(function () { +(function() { 'use strict'; window.Whisper = window.Whisper || {}; @@ -321,8 +321,7 @@ }, onChangePlaceholder(type) { - if (!this.$messageField) - return; + if (!this.$messageField) return; let placeholder; switch (type) { case 'friend-request': @@ -1623,10 +1622,15 @@ } const input = this.$messageField; - const inputMessage = window.Signal.Emoji.replaceColons(input.val()).trim(); + const inputMessage = window.Signal.Emoji.replaceColons( + input.val() + ).trim(); // Limit the message to 2000 characters - const message = inputMessage.substring(0, Math.min(2000, inputMessage.length)); + const message = inputMessage.substring( + 0, + Math.min(2000, inputMessage.length) + ); try { if (!message.length && !this.fileInput.hasFiles()) { diff --git a/js/views/inbox_view.js b/js/views/inbox_view.js index 922a992aa..3df51ffcf 100644 --- a/js/views/inbox_view.js +++ b/js/views/inbox_view.js @@ -150,11 +150,7 @@ ); // Listen to any conversation remove - this.listenTo( - inboxCollection, - 'remove', - this.closeConversation - ); + this.listenTo(inboxCollection, 'remove', this.closeConversation); // Friends const contactCollection = getContactCollection(); @@ -335,8 +331,14 @@ }, updateInboxSectionUnread() { const $section = this.$('.section-conversations-unread-counter'); - const models = (this.inboxListView.collection && this.inboxListView.collection.models) || []; - const unreadCount = models.reduce((count, m) => count + Math.max(0, m.get('unreadCount')), 0); + const models = + (this.inboxListView.collection && + this.inboxListView.collection.models) || + []; + const unreadCount = models.reduce( + (count, m) => count + Math.max(0, m.get('unreadCount')), + 0 + ); $section.text(unreadCount); if (unreadCount > 0) { $section.show(); @@ -350,7 +352,7 @@ getMainHeaderItems() { return [ this._mainHeaderItem('copyPublicKey', () => { - const ourNumber = textsecure.storage.user.getNumber(); + const ourNumber = textsecure.storage.user.getNumber(); clipboard.writeText(ourNumber); this.showToastMessageInGutter(i18n('copiedPublicKey')); @@ -367,17 +369,18 @@ const hasPassword = await Signal.Data.getPasswordHash(); const items = this.getMainHeaderItems(); - const showPasswordDialog = (type, resolve) => Whisper.events.trigger('showPasswordDialog', { - type, - resolve, - }); + const showPasswordDialog = (type, resolve) => + Whisper.events.trigger('showPasswordDialog', { + type, + resolve, + }); - const passwordItem = (textKey, type) => this._mainHeaderItem( - textKey, - () => showPasswordDialog(type, () => { - this.showToastMessageInGutter(i18n(`${textKey}Success`)); - }) - ); + const passwordItem = (textKey, type) => + this._mainHeaderItem(textKey, () => + showPasswordDialog(type, () => { + this.showToastMessageInGutter(i18n(`${textKey}Success`)); + }) + ); if (hasPassword) { items.push( @@ -385,9 +388,7 @@ passwordItem('removePassword', 'remove') ); } else { - items.push( - passwordItem('setPassword', 'set') - ); + items.push(passwordItem('setPassword', 'set')); } this.mainHeaderView.updateItems(items); diff --git a/js/views/main_header_view.js b/js/views/main_header_view.js index 77da0632e..7a7470e12 100644 --- a/js/views/main_header_view.js +++ b/js/views/main_header_view.js @@ -2,59 +2,61 @@ // eslint-disable-next-line func-names (function() { - 'use strict'; + 'use strict'; - window.Whisper = window.Whisper || {}; + window.Whisper = window.Whisper || {}; - Whisper.MainHeaderView = Whisper.View.extend({ - templateName: 'main-header-placeholder', - events: { - 'click .main-header-title-wrapper': 'onClick', - 'click .edit-name': 'onEditProfile', - 'click .copy-key': 'onCopyKey', - }, - initialize(options) { - this.ourNumber = textsecure.storage.user.getNumber(); - const me = ConversationController.getOrCreate(this.ourNumber, 'private'); + Whisper.MainHeaderView = Whisper.View.extend({ + templateName: 'main-header-placeholder', + events: { + 'click .main-header-title-wrapper': 'onClick', + 'click .edit-name': 'onEditProfile', + 'click .copy-key': 'onCopyKey', + }, + initialize(options) { + this.ourNumber = textsecure.storage.user.getNumber(); + const me = ConversationController.getOrCreate(this.ourNumber, 'private'); - this.mainHeaderView = new Whisper.ReactWrapperView({ - className: 'main-header-wrapper', - Component: Signal.Components.MainHeader, - props: me.format(), - }); - const update = () => this.mainHeaderView.update(me.format()); - this.listenTo(me, 'change', update); + this.mainHeaderView = new Whisper.ReactWrapperView({ + className: 'main-header-wrapper', + Component: Signal.Components.MainHeader, + props: me.format(), + }); + const update = () => this.mainHeaderView.update(me.format()); + this.listenTo(me, 'change', update); - this.render(); - this.$('.main-header-title-wrapper').prepend(this.mainHeaderView.el); + this.render(); + this.$('.main-header-title-wrapper').prepend(this.mainHeaderView.el); - this.$toggle = this.$('.main-header-content-toggle'); - this.$content = this.$('.main-header-content-wrapper'); - this.$content.hide(); + this.$toggle = this.$('.main-header-content-toggle'); + this.$content = this.$('.main-header-content-wrapper'); + this.$content.hide(); - this.updateItems(options.items); - }, - updateItems(items) { - this.$content.html(''); - (items || []).forEach(item => { - // Add the item - this.$content.append(`
${item.text}
`); + this.updateItems(options.items); + }, + updateItems(items) { + this.$content.html(''); + (items || []).forEach(item => { + // Add the item + this.$content.append( + `
${item.text}
` + ); - // Register its callback - if (item.onClick) { - this.$(`#${item.id}`).click(item.onClick); - } - }); - }, - render_attributes() { - return { - items: this.items, - }; - }, - onClick() { - // Toggle section visibility - this.$content.slideToggle('fast'); - this.$toggle.toggleClass('main-header-content-toggle-visible'); - }, - }); - })(); + // Register its callback + if (item.onClick) { + this.$(`#${item.id}`).click(item.onClick); + } + }); + }, + render_attributes() { + return { + items: this.items, + }; + }, + onClick() { + // Toggle section visibility + this.$content.slideToggle('fast'); + this.$toggle.toggleClass('main-header-content-toggle-visible'); + }, + }); +})(); diff --git a/js/views/password_dialog_view.js b/js/views/password_dialog_view.js index d919da1d2..57d2afa00 100644 --- a/js/views/password_dialog_view.js +++ b/js/views/password_dialog_view.js @@ -50,10 +50,13 @@ const password = this.$('#password').val(); const passwordConfirmation = this.$('#password-confirmation').val(); - const pairValidation = this.validatePasswordPair(password, passwordConfirmation); + const pairValidation = this.validatePasswordPair( + password, + passwordConfirmation + ); const hashValidation = await this.validatePasswordHash(password); - return (pairValidation || hashValidation); + return pairValidation || hashValidation; }, async validatePasswordHash(password) { // Check if the password matches the hash we have stored @@ -65,15 +68,20 @@ }, validatePasswordPair(password, passwordConfirmation) { if (!_.isEmpty(password)) { - // Check if the password is first valid - const passwordValidation = passwordUtil.validatePassword(password, i18n); + const passwordValidation = passwordUtil.validatePassword( + password, + i18n + ); if (passwordValidation) { return passwordValidation; } // Check if the confirmation password is the same - if (!passwordConfirmation || password.trim() !== passwordConfirmation.trim()) { + if ( + !passwordConfirmation || + password.trim() !== passwordConfirmation.trim() + ) { return i18n('passwordsDoNotMatch'); } } @@ -161,8 +169,11 @@ const oldPassword = this.$('#old-password').val(); // Validate the old password - if (!_.isEmpty(oldPassword) ) { - const oldPasswordValidation = passwordUtil.validatePassword(oldPassword, i18n); + if (!_.isEmpty(oldPassword)) { + const oldPasswordValidation = passwordUtil.validatePassword( + oldPassword, + i18n + ); if (oldPasswordValidation) { return oldPasswordValidation; } @@ -173,7 +184,10 @@ const password = this.$('#new-password').val(); const passwordConfirmation = this.$('#new-password-confirmation').val(); - const pairValidation = this.validatePasswordPair(password, passwordConfirmation); + const pairValidation = this.validatePasswordPair( + password, + passwordConfirmation + ); const hashValidation = await this.validatePasswordHash(oldPassword); return pairValidation || hashValidation; @@ -189,7 +203,6 @@ }); Whisper.getPasswordDialogView = (type, resolve, reject) => { - // This is a differently styled dialog if (type === 'change') { return new ChangePasswordDialogView({ @@ -201,7 +214,8 @@ } // Set and Remove is basically the same UI - const title = type === 'remove' ? i18n('removePassword') : i18n('setPassword'); + const title = + type === 'remove' ? i18n('removePassword') : i18n('setPassword'); const okTitle = type === 'remove' ? i18n('remove') : i18n('set'); return new PasswordDialogView({ title, diff --git a/js/views/password_view.js b/js/views/password_view.js index 71a941d6c..7fcdc8278 100644 --- a/js/views/password_view.js +++ b/js/views/password_view.js @@ -38,5 +38,4 @@ this.$('.error').text(string); }, }); - })(); diff --git a/js/views/standalone_registration_view.js b/js/views/standalone_registration_view.js index 5a9599aac..e82306c1d 100644 --- a/js/views/standalone_registration_view.js +++ b/js/views/standalone_registration_view.js @@ -1,4 +1,4 @@ -/* global Whisper, $, getAccountManager, textsecure, i18n, passwordUtil, ConversationController */ +/* global Whisper, $, getAccountManager, textsecure, i18n, passwordUtil */ /* eslint-disable more/no-then */ @@ -102,7 +102,7 @@ async onGenerateMnemonic() { const language = this.$('#mnemonic-display-language').val(); const mnemonic = await this.accountManager.generateMnemonic(language); - this.$('#mnemonic-display').text(mnemonic) + this.$('#mnemonic-display').text(mnemonic); }, onCopyMnemonic() { window.clipboard.writeText(this.$('#mnemonic-display').text()); @@ -178,8 +178,12 @@ $target.toggleClass('section-toggle-visible'); // Hide the other sections - this.$('.section-toggle').not($target).removeClass('section-toggle-visible') - this.$('.section-content').not($next).slideUp('fast'); + this.$('.section-toggle') + .not($target) + .removeClass('section-toggle-visible'); + this.$('.section-content') + .not($next) + .slideUp('fast'); }, onPasswordChange() { const input = this.$passwordInput.val(); @@ -193,7 +197,9 @@ }, validatePassword() { const input = this.trim(this.$passwordInput.val()); - const confirmationInput = this.trim(this.$passwordConfirmationInput.val()); + const confirmationInput = this.trim( + this.$passwordConfirmationInput.val() + ); // If user hasn't set a value then skip if (!input && !confirmationInput) { @@ -206,7 +212,7 @@ } if (input !== confirmationInput) { - return 'Password don\'t match'; + return "Password don't match"; } return null; @@ -222,7 +228,6 @@ this.$passwordInputError.text(passwordValidation); this.$passwordInputError.show(); - } else { this.$passwordInput.removeClass('error-input'); this.$passwordConfirmationInput.removeClass('error-input'); @@ -232,7 +237,9 @@ // Show green box around inputs that match const input = this.trim(this.$passwordInput.val()); - const confirmationInput = this.trim(this.$passwordConfirmationInput.val()); + const confirmationInput = this.trim( + this.$passwordConfirmationInput.val() + ); if (input && input === confirmationInput) { this.$passwordInput.addClass('match-input'); this.$passwordConfirmationInput.addClass('match-input'); diff --git a/js/views/toast_view.js b/js/views/toast_view.js index 599e65370..9d4d0b6ea 100644 --- a/js/views/toast_view.js +++ b/js/views/toast_view.js @@ -36,5 +36,5 @@ render_attributes() { return { toastMessage: this.message }; }, - }) + }); })(); diff --git a/libloki/api.js b/libloki/api.js index b714e2cb5..80dda5b6b 100644 --- a/libloki/api.js +++ b/libloki/api.js @@ -1,7 +1,7 @@ /* global window, textsecure, log */ // eslint-disable-next-line func-names -(function () { +(function() { window.libloki = window.libloki || {}; async function sendFriendRequestAccepted(pubKey) { diff --git a/libloki/crypto.js b/libloki/crypto.js index 1042f59c2..8500a237d 100644 --- a/libloki/crypto.js +++ b/libloki/crypto.js @@ -1,15 +1,14 @@ /* global window, libsignal, textsecure, StringView */ // eslint-disable-next-line func-names -(function () { +(function() { window.libloki = window.libloki || {}; - class FallBackDecryptionError extends Error { } + class FallBackDecryptionError extends Error {} const IV_LENGTH = 16; class FallBackSessionCipher { - constructor(address) { this.identityKeyString = address.getName(); this.pubKey = StringView.hexToArrayBuffer(address.getName()); @@ -18,10 +17,19 @@ async encrypt(plaintext) { const myKeyPair = await textsecure.storage.protocol.getIdentityKeyPair(); const myPrivateKey = myKeyPair.privKey; - const symmetricKey = libsignal.Curve.calculateAgreement(this.pubKey, myPrivateKey); + const symmetricKey = libsignal.Curve.calculateAgreement( + this.pubKey, + myPrivateKey + ); const iv = libsignal.crypto.getRandomBytes(IV_LENGTH); - const ciphertext = await libsignal.crypto.encrypt(symmetricKey, plaintext, iv); - const ivAndCiphertext = new Uint8Array(iv.byteLength + ciphertext.byteLength); + const ciphertext = await libsignal.crypto.encrypt( + symmetricKey, + plaintext, + iv + ); + const ivAndCiphertext = new Uint8Array( + iv.byteLength + ciphertext.byteLength + ); ivAndCiphertext.set(new Uint8Array(iv)); ivAndCiphertext.set(new Uint8Array(ciphertext), iv.byteLength); return { @@ -36,12 +44,18 @@ const cipherText = ivAndCiphertext.slice(IV_LENGTH); const myKeyPair = await textsecure.storage.protocol.getIdentityKeyPair(); const myPrivateKey = myKeyPair.privKey; - const symmetricKey = libsignal.Curve.calculateAgreement(this.pubKey, myPrivateKey); + const symmetricKey = libsignal.Curve.calculateAgreement( + this.pubKey, + myPrivateKey + ); try { return await libsignal.crypto.decrypt(symmetricKey, cipherText, iv); - } - catch (e) { - throw new FallBackDecryptionError(`Could not decrypt message from ${this.identityKeyString} using FallBack encryption.`); + } catch (e) { + throw new FallBackDecryptionError( + `Could not decrypt message from ${ + this.identityKeyString + } using FallBack encryption.` + ); } } } diff --git a/libloki/proof-of-work.js b/libloki/proof-of-work.js index a1f01502e..3901f13e9 100644 --- a/libloki/proof-of-work.js +++ b/libloki/proof-of-work.js @@ -15,7 +15,7 @@ const pow = { newNonce[idx] = sum % 256; increment = Math.floor(sum / 256); idx -= 1; - } while(increment > 0 && idx >= 0); + } while (increment > 0 && idx >= 0); return newNonce; }, @@ -36,10 +36,7 @@ const pow = { n = NONCE_LEN - (idx + 1); // 256 ** n is the value of one bit in arr[idx], modulus to carry over // (bigInt / 256**n) % 256; - const denominator = JSBI.exponentiate( - JSBI.BigInt('256'), - JSBI.BigInt(n) - ); + const denominator = JSBI.exponentiate(JSBI.BigInt('256'), JSBI.BigInt(n)); const fraction = JSBI.divide(bigInt, denominator); const uint8Val = JSBI.remainder(fraction, JSBI.BigInt(256)); arr[idx] = JSBI.toNumber(uint8Val); @@ -60,7 +57,16 @@ const pow = { }, // Return nonce that hashes together with payload lower than the target - async calcPoW(timestamp, ttl, pubKey, data, development = false, _nonceTrials = null, increment = 1, startNonce = 0) { + async calcPoW( + timestamp, + ttl, + pubKey, + data, + development = false, + _nonceTrials = null, + increment = 1, + startNonce = 0 + ) { const payload = new Uint8Array( dcodeIO.ByteBuffer.wrap( timestamp.toString() + ttl.toString() + pubKey + data, @@ -68,7 +74,8 @@ const pow = { ).toArrayBuffer() ); - const nonceTrials = _nonceTrials || (development ? DEV_NONCE_TRIALS : PROD_NONCE_TRIALS); + const nonceTrials = + _nonceTrials || (development ? DEV_NONCE_TRIALS : PROD_NONCE_TRIALS); const target = pow.calcTarget(ttl, payload.length, nonceTrials); let nonce = new Uint8Array(NONCE_LEN); @@ -98,25 +105,16 @@ const pow = { calcTarget(ttl, payloadLen, nonceTrials = PROD_NONCE_TRIALS) { // payloadLength + NONCE_LEN - const totalLen = JSBI.add( - JSBI.BigInt(payloadLen), - JSBI.BigInt(NONCE_LEN) - ); + const totalLen = JSBI.add(JSBI.BigInt(payloadLen), JSBI.BigInt(NONCE_LEN)); // ttl * totalLen - const ttlMult = JSBI.multiply( - JSBI.BigInt(ttl), - JSBI.BigInt(totalLen) - ); + const ttlMult = JSBI.multiply(JSBI.BigInt(ttl), JSBI.BigInt(totalLen)); // 2^16 - 1 const two16 = JSBI.subtract( JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(16)), // 2^16 JSBI.BigInt(1) ); // ttlMult / two16 - const innerFrac = JSBI.divide( - ttlMult, - two16 - ); + const innerFrac = JSBI.divide(ttlMult, two16); // totalLen + innerFrac const lenPlusInnerFrac = JSBI.add(totalLen, innerFrac); // nonceTrials * lenPlusInnerFrac diff --git a/libloki/sc_reduce32.js b/libloki/sc_reduce32.js index 1a08a2ca1..51a174cec 100644 --- a/libloki/sc_reduce32.js +++ b/libloki/sc_reduce32.js @@ -52,7 +52,9 @@ var ENVIRONMENT_IS_NODE = true; var ENVIRONMENT_IS_SHELL = false; 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)'); + 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)' + ); } // Three configurations we can be running in: @@ -72,7 +74,10 @@ function locateFile(path) { if (ENVIRONMENT_IS_NODE) { scriptDirectory = __dirname + '/'; - if (!(typeof process === 'object' && typeof require === 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + if (!(typeof process === 'object' && typeof require === 'function')) + throw new Error( + 'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)' + ); // Expose functionality in the same simple way that the shells work // Note that we pollute the global namespace here, otherwise we break in node @@ -124,9 +129,10 @@ if (ENVIRONMENT_IS_NODE) { process['exit'](status); }; - Module['inspect'] = function () { return '[Emscripten Module object]'; }; -} else -{ + Module['inspect'] = function() { + return '[Emscripten Module object]'; + }; +} else { throw new Error('environment detection error'); } @@ -136,8 +142,18 @@ if (ENVIRONMENT_IS_NODE) { // console.log is checked first, as 'print' on the web will open a print dialogue // printErr is preferable to console.warn (works better in shells) // bind(console) is necessary to fix IE/Edge closed dev tools panel behavior. -var out = Module['print'] || (typeof console !== 'undefined' ? console.log.bind(console) : (typeof print !== 'undefined' ? print : null)); -var err = Module['printErr'] || (typeof printErr !== 'undefined' ? printErr : ((typeof console !== 'undefined' && console.warn.bind(console)) || out)); +var out = + Module['print'] || + (typeof console !== 'undefined' + ? console.log.bind(console) + : typeof print !== 'undefined' + ? print + : null); +var err = + Module['printErr'] || + (typeof printErr !== 'undefined' + ? printErr + : (typeof console !== 'undefined' && console.warn.bind(console)) || out); // Merge back in the overrides for (key in moduleOverrides) { @@ -150,12 +166,22 @@ for (key in moduleOverrides) { moduleOverrides = undefined; // perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -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['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' +); // Copyright 2017 The Emscripten Authors. All rights reserved. // Emscripten is available under two separate licenses, the MIT license and the @@ -169,26 +195,31 @@ var STACK_ALIGN = 16; // stack management, and other functionality that is provided by the compiled code, // should not be used before it is ready stackSave = stackRestore = stackAlloc = setTempRet0 = getTempRet0 = function() { - abort('cannot use the stack before compiled code is ready to run, and has provided stack access'); + abort( + 'cannot use the stack before compiled code is ready to run, and has provided stack access' + ); }; function staticAlloc(size) { assert(!staticSealed); var ret = STATICTOP; STATICTOP = (STATICTOP + size + 15) & -16; - assert(STATICTOP < TOTAL_MEMORY, 'not enough memory for static allocation - increase TOTAL_MEMORY'); + assert( + STATICTOP < TOTAL_MEMORY, + 'not enough memory for static allocation - increase TOTAL_MEMORY' + ); return ret; } function dynamicAlloc(size) { assert(DYNAMICTOP_PTR); - var ret = HEAP32[DYNAMICTOP_PTR>>2]; + var ret = HEAP32[DYNAMICTOP_PTR >> 2]; var end = (ret + size + 15) & -16; - HEAP32[DYNAMICTOP_PTR>>2] = end; + HEAP32[DYNAMICTOP_PTR >> 2] = end; if (end >= TOTAL_MEMORY) { var success = enlargeMemory(); if (!success) { - HEAP32[DYNAMICTOP_PTR>>2] = ret; + HEAP32[DYNAMICTOP_PTR >> 2] = ret; return 0; } } @@ -197,20 +228,27 @@ function dynamicAlloc(size) { function alignMemory(size, factor) { if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default - var ret = size = Math.ceil(size / factor) * factor; + var ret = (size = Math.ceil(size / factor) * factor); return ret; } function getNativeTypeSize(type) { switch (type) { - case 'i1': case 'i8': return 1; - case 'i16': return 2; - case 'i32': return 4; - case 'i64': return 8; - case 'float': return 4; - case 'double': return 8; + case 'i1': + case 'i8': + return 1; + case 'i16': + return 2; + case 'i32': + return 4; + case 'i64': + return 8; + case 'float': + return 4; + case 'double': + return 8; default: { - if (type[type.length-1] === '*') { + if (type[type.length - 1] === '*') { return 4; // A pointer } else if (type[0] === 'i') { var bits = parseInt(type.substr(1)); @@ -231,24 +269,25 @@ function warnOnce(text) { } } -var asm2wasmImports = { // special asm2wasm imports - "f64-rem": function(x, y) { - return x % y; - }, - "debugger": function() { - debugger; - } +var asm2wasmImports = { + // special asm2wasm imports + 'f64-rem': function(x, y) { + return x % y; + }, + debugger: function() { + debugger; + }, }; - - var jsCallStartIndex = 1; var functionPointers = new Array(0); // 'sig' parameter is only used on LLVM wasm backend function addFunction(func, sig) { if (typeof sig === 'undefined') { - err('warning: addFunction(): You should provide a wasm function signature string as a second argument. This is not necessary for asm.js and asm2wasm, but is required for the LLVM wasm backend, so it is recommended for full portability.'); + err( + 'warning: addFunction(): You should provide a wasm function signature string as a second argument. This is not necessary for asm.js and asm2wasm, but is required for the LLVM wasm backend, so it is recommended for full portability.' + ); } var base = 0; for (var i = base; i < base + 0; i++) { @@ -261,7 +300,7 @@ function addFunction(func, sig) { } function removeFunction(index) { - functionPointers[index-jsCallStartIndex] = null; + functionPointers[index - jsCallStartIndex] = null; } var funcWrappers = {}; @@ -293,24 +332,30 @@ function getFuncWrapper(func, sig) { return sigCache[func]; } - function makeBigInt(low, high, unsigned) { - return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0)); + return unsigned + ? +(low >>> 0) + +(high >>> 0) * 4294967296.0 + : +(low >>> 0) + +(high | 0) * 4294967296.0; } function dynCall(sig, ptr, args) { if (args && args.length) { - assert(args.length == sig.length-1); - assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + assert(args.length == sig.length - 1); + assert( + 'dynCall_' + sig in Module, + "bad function pointer type - no table for sig '" + sig + "'" + ); return Module['dynCall_' + sig].apply(null, [ptr].concat(args)); } else { assert(sig.length == 1); - assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + assert( + 'dynCall_' + sig in Module, + "bad function pointer type - no table for sig '" + sig + "'" + ); return Module['dynCall_' + sig].call(null, ptr); } } - function getCompilerSetting(name) { throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work'; } @@ -321,9 +366,21 @@ var Runtime = { // can minimize any period of breakage. dynCall: dynCall, // for SDL2 port // helpful errors - getTempRet0: function() { abort('getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, - staticAlloc: function() { abort('staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, - stackAlloc: function() { abort('stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, + getTempRet0: function() { + abort( + 'getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."' + ); + }, + staticAlloc: function() { + abort( + 'staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."' + ); + }, + stackAlloc: function() { + abort( + 'stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."' + ); + }, }; // The address globals begin at. Very low in memory, for code size and optimization opportunities. @@ -332,7 +389,6 @@ var Runtime = { // Then 'dynamic' memory for sbrk. var GLOBAL_BASE = 8; - // === Preamble library stuff === // Documentation for the public APIs defined in this file must be updated in: @@ -343,8 +399,6 @@ var GLOBAL_BASE = 8; // An online HTML version (which may be of a different version of Emscripten) // is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - - //======================================== // Runtime essentials //======================================== @@ -370,7 +424,10 @@ var globalScope = this; // Returns the C function with a specified identifier (for C++, you need to do manual name mangling) function getCFunc(ident) { var func = Module['_' + ident]; // closure exported function - assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); + assert( + func, + 'Cannot call unknown function ' + ident + ', make sure it is exported' + ); return func; } @@ -378,36 +435,37 @@ var JSfuncs = { // Helpers for cwrap -- it can't refer to Runtime directly because it might // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find // out what the minified function name is. - 'stackSave': function() { - stackSave() + stackSave: function() { + stackSave(); }, - 'stackRestore': function() { - stackRestore() + stackRestore: function() { + stackRestore(); }, // type conversion from js to c - 'arrayToC' : function(arr) { + arrayToC: function(arr) { var ret = stackAlloc(arr.length); writeArrayToMemory(arr, ret); return ret; }, - 'stringToC' : function(str) { + stringToC: function(str) { var ret = 0; - if (str !== null && str !== undefined && str !== 0) { // null string + if (str !== null && str !== undefined && str !== 0) { + // null string // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' var len = (str.length << 2) + 1; ret = stackAlloc(len); stringToUTF8(str, ret, len); } return ret; - } + }, }; // For fast lookup of conversion functions var toC = { - 'string': JSfuncs['stringToC'], 'array': JSfuncs['arrayToC'] + string: JSfuncs['stringToC'], + array: JSfuncs['arrayToC'], }; - // C calling interface. function ccall(ident, returnType, argTypes, args, opts) { function convertReturnValue(ret) { @@ -440,39 +498,76 @@ function ccall(ident, returnType, argTypes, args, opts) { function cwrap(ident, returnType, argTypes, opts) { return function() { return ccall(ident, returnType, argTypes, arguments, opts); - } + }; } /** @type {function(number, number, string, boolean=)} */ function setValue(ptr, value, type, noSafe) { type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': HEAP8[((ptr)>>0)]=value; break; - case 'i8': HEAP8[((ptr)>>0)]=value; break; - case 'i16': HEAP16[((ptr)>>1)]=value; break; - case 'i32': HEAP32[((ptr)>>2)]=value; break; - case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; - case 'float': HEAPF32[((ptr)>>2)]=value; break; - case 'double': HEAPF64[((ptr)>>3)]=value; break; - default: abort('invalid type for setValue: ' + type); - } + if (type.charAt(type.length - 1) === '*') type = 'i32'; // pointers are 32-bit + switch (type) { + case 'i1': + HEAP8[ptr >> 0] = value; + break; + case 'i8': + HEAP8[ptr >> 0] = value; + break; + case 'i16': + HEAP16[ptr >> 1] = value; + break; + case 'i32': + HEAP32[ptr >> 2] = value; + break; + case 'i64': + (tempI64 = [ + value >>> 0, + ((tempDouble = value), + +Math_abs(tempDouble) >= 1.0 + ? tempDouble > 0.0 + ? (Math_min(+Math_floor(tempDouble / 4294967296.0), 4294967295.0) | + 0) >>> + 0 + : ~~+Math_ceil( + (tempDouble - +(~~tempDouble >>> 0)) / 4294967296.0 + ) >>> 0 + : 0), + ]), + (HEAP32[ptr >> 2] = tempI64[0]), + (HEAP32[(ptr + 4) >> 2] = tempI64[1]); + break; + case 'float': + HEAPF32[ptr >> 2] = value; + break; + case 'double': + HEAPF64[ptr >> 3] = value; + break; + default: + abort('invalid type for setValue: ' + type); + } } /** @type {function(number, string, boolean=)} */ function getValue(ptr, type, noSafe) { type = type || 'i8'; - if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit - switch(type) { - case 'i1': return HEAP8[((ptr)>>0)]; - case 'i8': return HEAP8[((ptr)>>0)]; - case 'i16': return HEAP16[((ptr)>>1)]; - case 'i32': return HEAP32[((ptr)>>2)]; - case 'i64': return HEAP32[((ptr)>>2)]; - case 'float': return HEAPF32[((ptr)>>2)]; - case 'double': return HEAPF64[((ptr)>>3)]; - default: abort('invalid type for getValue: ' + type); - } + if (type.charAt(type.length - 1) === '*') type = 'i32'; // pointers are 32-bit + switch (type) { + case 'i1': + return HEAP8[ptr >> 0]; + case 'i8': + return HEAP8[ptr >> 0]; + case 'i16': + return HEAP16[ptr >> 1]; + case 'i32': + return HEAP32[ptr >> 2]; + case 'i64': + return HEAP32[ptr >> 2]; + case 'float': + return HEAPF32[ptr >> 2]; + case 'double': + return HEAPF64[ptr >> 3]; + default: + abort('invalid type for getValue: ' + type); + } return null; } @@ -512,7 +607,14 @@ function allocate(slab, types, allocator, ptr) { if (allocator == ALLOC_NONE) { ret = ptr; } else { - ret = [typeof _malloc === 'function' ? _malloc : staticAlloc, stackAlloc, staticAlloc, dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)); + ret = [ + typeof _malloc === 'function' ? _malloc : staticAlloc, + stackAlloc, + staticAlloc, + dynamicAlloc, + ][allocator === undefined ? ALLOC_STATIC : allocator]( + Math.max(size, singleType ? 1 : types.length) + ); } if (zeroinit) { @@ -521,11 +623,11 @@ function allocate(slab, types, allocator, ptr) { assert((ret & 3) == 0); stop = ret + (size & ~3); for (; ptr < stop; ptr += 4) { - HEAP32[((ptr)>>2)]=0; + HEAP32[ptr >> 2] = 0; } stop = ret + size; while (ptr < stop) { - HEAP8[((ptr++)>>0)]=0; + HEAP8[ptr++ >> 0] = 0; } return ret; } @@ -539,7 +641,10 @@ function allocate(slab, types, allocator, ptr) { return ret; } - var i = 0, type, typeSize, previousType; + var i = 0, + type, + typeSize, + previousType; while (i < size) { var curr = slab[i]; @@ -552,7 +657,7 @@ function allocate(slab, types, allocator, ptr) { if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later - setValue(ret+i, curr, type); + setValue(ret + i, curr, type); // no need to look up size unless type changes, so cache it if (previousType !== type) { @@ -581,7 +686,7 @@ function Pointer_stringify(ptr, length) { var i = 0; while (1) { assert(ptr + i < TOTAL_MEMORY); - t = HEAPU8[(((ptr)+(i))>>0)]; + t = HEAPU8[(ptr + i) >> 0]; hasUtf |= t; if (t == 0 && !length) break; i++; @@ -595,7 +700,10 @@ function Pointer_stringify(ptr, length) { var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack var curr; while (length > 0) { - curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK))); + curr = String.fromCharCode.apply( + String, + HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)) + ); ret = ret ? ret + curr : curr; ptr += MAX_CHUNK; length -= MAX_CHUNK; @@ -611,7 +719,7 @@ function Pointer_stringify(ptr, length) { function AsciiToString(ptr) { var str = ''; while (1) { - var ch = HEAP8[((ptr++)>>0)]; + var ch = HEAP8[ptr++ >> 0]; if (!ch) return str; str += String.fromCharCode(ch); } @@ -627,7 +735,8 @@ function stringToAscii(str, outPtr) { // Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns // a copy of that string as a Javascript String object. -var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; +var UTF8Decoder = + typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; function UTF8ArrayToString(u8Array, idx) { var endPtr = idx; // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. @@ -647,23 +756,35 @@ function UTF8ArrayToString(u8Array, idx) { // https://tools.ietf.org/html/rfc3629 u0 = u8Array[idx++]; if (!u0) return str; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } u1 = u8Array[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + if ((u0 & 0xe0) == 0xc0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } u2 = u8Array[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { + if ((u0 & 0xf0) == 0xe0) { u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; } else { u3 = u8Array[idx++] & 63; - if ((u0 & 0xF8) == 0xF0) { + if ((u0 & 0xf8) == 0xf0) { u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3; } else { u4 = u8Array[idx++] & 63; - if ((u0 & 0xFC) == 0xF8) { + if ((u0 & 0xfc) == 0xf8) { u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4; } else { u5 = u8Array[idx++] & 63; - u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5; + u0 = + ((u0 & 1) << 30) | + (u1 << 24) | + (u2 << 18) | + (u3 << 12) | + (u4 << 6) | + u5; } } } @@ -671,7 +792,7 @@ function UTF8ArrayToString(u8Array, idx) { str += String.fromCharCode(u0); } else { var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + str += String.fromCharCode(0xd800 | (ch >> 10), 0xdc00 | (ch & 0x3ff)); } } } @@ -681,7 +802,7 @@ function UTF8ArrayToString(u8Array, idx) { // a copy of that string as a Javascript String object. function UTF8ToString(ptr) { - return UTF8ArrayToString(HEAPU8,ptr); + return UTF8ArrayToString(HEAPU8, ptr); } // Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', @@ -698,7 +819,8 @@ function UTF8ToString(ptr) { // Returns the number of bytes written, EXCLUDING the null terminator. function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + if (!(maxBytesToWrite > 0)) + // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. return 0; var startIdx = outIdx; @@ -708,38 +830,38 @@ function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { // See http://unicode.org/faq/utf_bom.html#utf16-3 // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { + if (u >= 0xd800 && u <= 0xdfff) { var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + u = (0x10000 + ((u & 0x3ff) << 10)) | (u1 & 0x3ff); } - if (u <= 0x7F) { + if (u <= 0x7f) { if (outIdx >= endIdx) break; outU8Array[outIdx++] = u; - } else if (u <= 0x7FF) { + } else if (u <= 0x7ff) { if (outIdx + 1 >= endIdx) break; - outU8Array[outIdx++] = 0xC0 | (u >> 6); + outU8Array[outIdx++] = 0xc0 | (u >> 6); outU8Array[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { + } else if (u <= 0xffff) { if (outIdx + 2 >= endIdx) break; - outU8Array[outIdx++] = 0xE0 | (u >> 12); + outU8Array[outIdx++] = 0xe0 | (u >> 12); outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); outU8Array[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0x1FFFFF) { + } else if (u <= 0x1fffff) { if (outIdx + 3 >= endIdx) break; - outU8Array[outIdx++] = 0xF0 | (u >> 18); + outU8Array[outIdx++] = 0xf0 | (u >> 18); outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); outU8Array[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0x3FFFFFF) { + } else if (u <= 0x3ffffff) { if (outIdx + 4 >= endIdx) break; - outU8Array[outIdx++] = 0xF8 | (u >> 24); + outU8Array[outIdx++] = 0xf8 | (u >> 24); outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63); outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); outU8Array[outIdx++] = 0x80 | (u & 63); } else { if (outIdx + 5 >= endIdx) break; - outU8Array[outIdx++] = 0xFC | (u >> 30); + outU8Array[outIdx++] = 0xfc | (u >> 30); outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63); outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63); outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); @@ -758,8 +880,11 @@ function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { // Returns the number of bytes written, EXCLUDING the null terminator. 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); + 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); } // Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. @@ -770,16 +895,17 @@ function lengthBytesUTF8(str) { // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. // See http://unicode.org/faq/utf_bom.html#utf16-3 var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); - if (u <= 0x7F) { + if (u >= 0xd800 && u <= 0xdfff) + u = (0x10000 + ((u & 0x3ff) << 10)) | (str.charCodeAt(++i) & 0x3ff); + if (u <= 0x7f) { ++len; - } else if (u <= 0x7FF) { + } else if (u <= 0x7ff) { len += 2; - } else if (u <= 0xFFFF) { + } else if (u <= 0xffff) { len += 3; - } else if (u <= 0x1FFFFF) { + } else if (u <= 0x1fffff) { len += 4; - } else if (u <= 0x3FFFFFF) { + } else if (u <= 0x3ffffff) { len += 5; } else { len += 6; @@ -791,9 +917,13 @@ function lengthBytesUTF8(str) { // Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns // a copy of that string as a Javascript String object. -var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; +var UTF16Decoder = + typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; function UTF16ToString(ptr) { - assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); + assert( + ptr % 2 == 0, + 'Pointer passed to UTF16ToString must be aligned to two bytes!' + ); var endPtr = ptr; // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. @@ -808,7 +938,7 @@ function UTF16ToString(ptr) { var str = ''; while (1) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + var codeUnit = HEAP16[(ptr + i * 2) >> 1]; if (codeUnit == 0) return str; ++i; // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. @@ -829,48 +959,57 @@ function UTF16ToString(ptr) { // Returns the number of bytes written, EXCLUDING the null terminator. function stringToUTF16(str, outPtr, maxBytesToWrite) { - assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + assert( + outPtr % 2 == 0, + 'Pointer passed to stringToUTF16 must be aligned to two bytes!' + ); + assert( + typeof maxBytesToWrite == 'number', + 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!' + ); // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; + maxBytesToWrite = 0x7fffffff; } if (maxBytesToWrite < 2) return 0; maxBytesToWrite -= 2; // Null terminator. var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + var numCharsToWrite = + maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; for (var i = 0; i < numCharsToWrite; ++i) { // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[((outPtr)>>1)]=codeUnit; + HEAP16[outPtr >> 1] = codeUnit; outPtr += 2; } // Null-terminate the pointer to the HEAP. - HEAP16[((outPtr)>>1)]=0; + HEAP16[outPtr >> 1] = 0; return outPtr - startPtr; } // Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. function lengthBytesUTF16(str) { - return str.length*2; + return str.length * 2; } function UTF32ToString(ptr) { - assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); + assert( + ptr % 4 == 0, + 'Pointer passed to UTF32ToString must be aligned to four bytes!' + ); var i = 0; var str = ''; while (1) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) - return str; + var utf32 = HEAP32[(ptr + i * 4) >> 2]; + if (utf32 == 0) return str; ++i; // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. // See http://unicode.org/faq/utf_bom.html#utf16-3 if (utf32 >= 0x10000) { var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + str += String.fromCharCode(0xd800 | (ch >> 10), 0xdc00 | (ch & 0x3ff)); } else { str += String.fromCharCode(utf32); } @@ -889,11 +1028,17 @@ function UTF32ToString(ptr) { // Returns the number of bytes written, EXCLUDING the null terminator. function stringToUTF32(str, outPtr, maxBytesToWrite) { - assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + assert( + outPtr % 4 == 0, + 'Pointer passed to stringToUTF32 must be aligned to four bytes!' + ); + assert( + typeof maxBytesToWrite == 'number', + 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!' + ); // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; + maxBytesToWrite = 0x7fffffff; } if (maxBytesToWrite < 4) return 0; var startPtr = outPtr; @@ -902,16 +1047,17 @@ function stringToUTF32(str, outPtr, maxBytesToWrite) { // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. // See http://unicode.org/faq/utf_bom.html#utf16-3 var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + if (codeUnit >= 0xd800 && codeUnit <= 0xdfff) { var trailSurrogate = str.charCodeAt(++i); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + codeUnit = + (0x10000 + ((codeUnit & 0x3ff) << 10)) | (trailSurrogate & 0x3ff); } - HEAP32[((outPtr)>>2)]=codeUnit; + HEAP32[outPtr >> 2] = codeUnit; outPtr += 4; if (outPtr + 4 > endPtr) break; } // Null-terminate the pointer to the HEAP. - HEAP32[((outPtr)>>2)]=0; + HEAP32[outPtr >> 2] = 0; return outPtr - startPtr; } @@ -923,7 +1069,7 @@ function lengthBytesUTF32(str) { // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. // See http://unicode.org/faq/utf_bom.html#utf16-3 var codeUnit = str.charCodeAt(i); - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + if (codeUnit >= 0xd800 && codeUnit <= 0xdfff) ++i; // possibly a lead surrogate, so skip over the tail surrogate. len += 4; } @@ -948,18 +1094,18 @@ function allocateUTF8OnStack(str) { } function demangle(func) { - warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); + warnOnce( + 'warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling' + ); return func; } function demangleAll(text) { - var regex = - /__Z[\w\d_]+/g; - return text.replace(regex, - function(x) { - var y = demangle(x); - return x === y ? x : (y + ' [' + x + ']'); - }); + var regex = /__Z[\w\d_]+/g; + return text.replace(regex, function(x) { + var y = demangle(x); + return x === y ? x : y + ' [' + x + ']'; + }); } function jsStackTrace() { @@ -969,7 +1115,7 @@ function jsStackTrace() { // so try that as a special-case. try { throw new Error(0); - } catch(e) { + } catch (e) { err = e; } if (!err.stack) { @@ -994,29 +1140,29 @@ var MIN_TOTAL_MEMORY = 16777216; function alignUp(x, multiple) { if (x % multiple > 0) { - x += multiple - (x % multiple); + x += multiple - x % multiple; } return x; } var HEAP, -/** @type {ArrayBuffer} */ + /** @type {ArrayBuffer} */ buffer, -/** @type {Int8Array} */ + /** @type {Int8Array} */ HEAP8, -/** @type {Uint8Array} */ + /** @type {Uint8Array} */ HEAPU8, -/** @type {Int16Array} */ + /** @type {Int16Array} */ HEAP16, -/** @type {Uint16Array} */ + /** @type {Uint16Array} */ HEAPU16, -/** @type {Int32Array} */ + /** @type {Int32Array} */ HEAP32, -/** @type {Uint32Array} */ + /** @type {Uint32Array} */ HEAPU32, -/** @type {Float32Array} */ + /** @type {Float32Array} */ HEAPF32, -/** @type {Float64Array} */ + /** @type {Float64Array} */ HEAPF64; function updateGlobalBuffer(buf) { @@ -1038,55 +1184,86 @@ var STATIC_BASE, STATICTOP, staticSealed; // static area var STACK_BASE, STACKTOP, STACK_MAX; // stack area var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk - STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0; - staticSealed = false; - +STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0; +staticSealed = false; // Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. function writeStackCookie() { assert((STACK_MAX & 3) == 0); - HEAPU32[(STACK_MAX >> 2)-1] = 0x02135467; - HEAPU32[(STACK_MAX >> 2)-2] = 0x89BACDFE; + HEAPU32[(STACK_MAX >> 2) - 1] = 0x02135467; + HEAPU32[(STACK_MAX >> 2) - 2] = 0x89bacdfe; } function checkStackCookie() { - if (HEAPU32[(STACK_MAX >> 2)-1] != 0x02135467 || HEAPU32[(STACK_MAX >> 2)-2] != 0x89BACDFE) { - abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + HEAPU32[(STACK_MAX >> 2)-2].toString(16) + ' ' + HEAPU32[(STACK_MAX >> 2)-1].toString(16)); + if ( + HEAPU32[(STACK_MAX >> 2) - 1] != 0x02135467 || + HEAPU32[(STACK_MAX >> 2) - 2] != 0x89bacdfe + ) { + abort( + 'Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + + HEAPU32[(STACK_MAX >> 2) - 2].toString(16) + + ' ' + + HEAPU32[(STACK_MAX >> 2) - 1].toString(16) + ); } // Also test the global address 0 for integrity. This check is not compatible with SAFE_SPLIT_MEMORY though, since that mode already tests all address 0 accesses on its own. - if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!'; + if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) + throw 'Runtime error: The application has corrupted its heap memory area (address zero)!'; } function abortStackOverflow(allocSize) { - abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!'); + abort( + 'Stack overflow! Attempted to allocate ' + + allocSize + + ' bytes on the stack, but stack has only ' + + (STACK_MAX - stackSave() + allocSize) + + ' bytes available!' + ); } - function abortOnCannotGrowMemory() { - abort('Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 '); + abort( + 'Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + + TOTAL_MEMORY + + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ' + ); } - function enlargeMemory() { abortOnCannotGrowMemory(); } - var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216; -if (TOTAL_MEMORY < TOTAL_STACK) err('TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); +if (TOTAL_MEMORY < TOTAL_STACK) + err( + 'TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + + TOTAL_MEMORY + + '! (TOTAL_STACK=' + + TOTAL_STACK + + ')' + ); // Initialize the runtime's memory // check for full engine support (use string 'subarray' to avoid closure compiler confusion) -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( + typeof Int32Array !== 'undefined' && + typeof Float64Array !== 'undefined' && + Int32Array.prototype.subarray !== undefined && + Int32Array.prototype.set !== undefined, + 'JS engine does not provide full typed array support' +); // Use a provided buffer, if there is one, or else allocate a new one if (Module['buffer']) { buffer = Module['buffer']; - assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength); + assert( + buffer.byteLength === TOTAL_MEMORY, + 'provided buffer should be ' + + TOTAL_MEMORY + + ' bytes, but it is ' + + buffer.byteLength + ); } else { // Use a WebAssembly memory where available { @@ -1097,18 +1274,18 @@ if (Module['buffer']) { } updateGlobalBufferViews(); - function getTotalMemory() { return TOTAL_MEMORY; } // Endianness check (note: assumes compiler arch was little-endian) - HEAP32[0] = 0x63736d65; /* 'emsc' */ +HEAP32[0] = 0x63736d65; /* 'emsc' */ HEAP16[1] = 0x6373; -if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; +if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) + throw 'Runtime error: expected the system to be little-endian!'; function callRuntimeCallbacks(callbacks) { - while(callbacks.length > 0) { + while (callbacks.length > 0) { var callback = callbacks.shift(); if (typeof callback == 'function') { callback(); @@ -1127,20 +1304,20 @@ function callRuntimeCallbacks(callbacks) { } } -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATMAIN__ = []; // functions called when main() is to be run -var __ATEXIT__ = []; // functions called during shutdown +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown var __ATPOSTRUN__ = []; // functions called after the main() is called var runtimeInitialized = false; var runtimeExited = false; - function preRun() { // compatibility - merge in anything from Module['preRun'] at this time if (Module['preRun']) { - if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + if (typeof Module['preRun'] == 'function') + Module['preRun'] = [Module['preRun']]; while (Module['preRun'].length) { addOnPreRun(Module['preRun'].shift()); } @@ -1170,7 +1347,8 @@ function postRun() { checkStackCookie(); // compatibility - merge in anything from Module['postRun'] at this time if (Module['postRun']) { - if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + if (typeof Module['postRun'] == 'function') + Module['postRun'] = [Module['postRun']]; while (Module['postRun'].length) { addOnPostRun(Module['postRun'].shift()); } @@ -1204,7 +1382,9 @@ function addOnPostRun(cb) { // to be secure from out of bounds writes. /** @deprecated */ function writeStringToMemory(string, buffer, dontAddNull) { - warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); + warnOnce( + 'writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!' + ); var /** @type {number} */ lastChar, /** @type {number} */ end; if (dontAddNull) { @@ -1219,41 +1399,51 @@ function writeStringToMemory(string, buffer, dontAddNull) { } function writeArrayToMemory(array, buffer) { - assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') + 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)&0xff); - HEAP8[((buffer++)>>0)]=str.charCodeAt(i); + assert((str.charCodeAt(i) === str.charCodeAt(i)) & 0xff); + HEAP8[buffer++ >> 0] = str.charCodeAt(i); } // Null-terminate the pointer to the HEAP. - if (!dontAddNull) HEAP8[((buffer)>>0)]=0; + if (!dontAddNull) HEAP8[buffer >> 0] = 0; } function unSign(value, bits, ignore) { if (value >= 0) { return value; } - return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts - : Math.pow(2, bits) + value; + return bits <= 32 + ? 2 * Math.abs(1 << (bits - 1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; } function reSign(value, bits, ignore) { if (value <= 0) { return value; } - var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 - : Math.pow(2, bits-1); - if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that - // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors - // TODO: In i64 mode 1, resign the two parts separately and safely - value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + var half = + bits <= 32 + ? Math.abs(1 << (bits - 1)) // abs is needed if bits == 32 + : Math.pow(2, bits - 1); + if (value >= half && (bits <= 32 || value > half)) { + // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2 * half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts } return value; } -assert(Math['imul'] && Math['fround'] && Math['clz32'] && Math['trunc'], 'this is a legacy browser, build with LEGACY_VM_SUPPORT'); +assert( + Math['imul'] && Math['fround'] && Math['clz32'] && Math['trunc'], + 'this is a legacy browser, build with LEGACY_VM_SUPPORT' +); var Math_abs = Math.abs; var Math_cos = Math.cos; @@ -1356,36 +1546,52 @@ function removeRunDependency(id) { } } -Module["preloadedImages"] = {}; // maps url to image data -Module["preloadedAudios"] = {}; // maps url to audio data - - +Module['preloadedImages'] = {}; // maps url to image data +Module['preloadedAudios'] = {}; // maps url to audio data var memoryInitializer = null; - - var /* show errors on likely calls to FS when it was not included */ FS = { error: function() { - abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1'); + abort( + 'Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1' + ); + }, + init: function() { + FS.error(); + }, + createDataFile: function() { + FS.error(); + }, + createPreloadedFile: function() { + FS.error(); + }, + createLazyFile: function() { + FS.error(); + }, + open: function() { + FS.error(); + }, + mkdev: function() { + FS.error(); + }, + registerDevice: function() { + FS.error(); + }, + analyzePath: function() { + FS.error(); + }, + loadFilesFromDB: function() { + FS.error(); }, - init: function() { FS.error() }, - createDataFile: function() { FS.error() }, - createPreloadedFile: function() { FS.error() }, - createLazyFile: function() { FS.error() }, - open: function() { FS.error() }, - mkdev: function() { FS.error() }, - registerDevice: function() { FS.error() }, - analyzePath: function() { FS.error() }, - loadFilesFromDB: function() { FS.error() }, - ErrnoError: function ErrnoError() { FS.error() }, + ErrnoError: function ErrnoError() { + FS.error(); + }, }; Module['FS_createDataFile'] = FS.createDataFile; Module['FS_createPreloadedFile'] = FS.createPreloadedFile; - - // Copyright 2017 The Emscripten Authors. All rights reserved. // Emscripten is available under two separate licenses, the MIT license and the // University of Illinois/NCSA Open Source License. Both these licenses can be @@ -1396,197 +1602,186 @@ var dataURIPrefix = 'data:application/octet-stream;base64,'; // Indicates whether filename is a base64 data URI. function isDataURI(filename) { - return String.prototype.startsWith ? - filename.startsWith(dataURIPrefix) : - filename.indexOf(dataURIPrefix) === 0; + return String.prototype.startsWith + ? filename.startsWith(dataURIPrefix) + : filename.indexOf(dataURIPrefix) === 0; } - - - - // === Body === var ASM_CONSTS = []; - - - - STATIC_BASE = GLOBAL_BASE; STATICTOP = STATIC_BASE + 1696; -/* global initializers */ __ATINIT__.push(); - - -memoryInitializer = "data:application/octet-stream;base64,AAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAJgAAAAABAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAK/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA=="; - - - +/* global initializers */ __ATINIT__.push(); +memoryInitializer = + 'data:application/octet-stream;base64,AAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAJgAAAAABAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAK/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA=='; /* no memory initializer */ -var tempDoublePtr = STATICTOP; STATICTOP += 16; +var tempDoublePtr = STATICTOP; +STATICTOP += 16; assert(tempDoublePtr % 8 == 0); -function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much +function copyTempFloat(ptr) { + // functions, because inlining this code increases code size too much HEAP8[tempDoublePtr] = HEAP8[ptr]; - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1]; - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; - - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2]; + HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3]; } function copyTempDouble(ptr) { - HEAP8[tempDoublePtr] = HEAP8[ptr]; - HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1]; - HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2]; - HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3]; - HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; + HEAP8[tempDoublePtr + 4] = HEAP8[ptr + 4]; - HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; + HEAP8[tempDoublePtr + 5] = HEAP8[ptr + 5]; - HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; - - HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; + HEAP8[tempDoublePtr + 6] = HEAP8[ptr + 6]; + HEAP8[tempDoublePtr + 7] = HEAP8[ptr + 7]; } // {{PRE_LIBRARY}} +function ___lock() {} - function ___lock() {} - - - - - - var SYSCALLS={buffers:[null,[],[]],printChar:function (stream, curr) { - var buffer = SYSCALLS.buffers[stream]; - assert(buffer); - if (curr === 0 || curr === 10) { - (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); - buffer.length = 0; - } else { - buffer.push(curr); - } - },varargs:0,get:function (varargs) { - SYSCALLS.varargs += 4; - var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; - return ret; - },getStr:function () { - var ret = Pointer_stringify(SYSCALLS.get()); - return ret; - },get64:function () { - var low = SYSCALLS.get(), high = SYSCALLS.get(); - if (low >= 0) assert(high === 0); - else assert(high === -1); - return low; - },getZero:function () { - assert(SYSCALLS.get() === 0); - }};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs; +var SYSCALLS = { + buffers: [null, [], []], + printChar: function(stream, curr) { + var buffer = SYSCALLS.buffers[stream]; + assert(buffer); + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); + buffer.length = 0; + } else { + buffer.push(curr); + } + }, + varargs: 0, + get: function(varargs) { + SYSCALLS.varargs += 4; + var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2]; + return ret; + }, + getStr: function() { + var ret = Pointer_stringify(SYSCALLS.get()); + return ret; + }, + get64: function() { + var low = SYSCALLS.get(), + high = SYSCALLS.get(); + if (low >= 0) assert(high === 0); + else assert(high === -1); + return low; + }, + getZero: function() { + assert(SYSCALLS.get() === 0); + }, +}; +function ___syscall140(which, varargs) { + SYSCALLS.varargs = varargs; try { - // llseek - var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get(); - // NOTE: offset_high is unused - Emscripten's off_t is 32-bit - var offset = offset_low; - FS.llseek(stream, offset, whence); - HEAP32[((result)>>2)]=stream.position; - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state - return 0; - } catch (e) { + // llseek + var stream = SYSCALLS.getStreamFromFD(), + offset_high = SYSCALLS.get(), + offset_low = SYSCALLS.get(), + result = SYSCALLS.get(), + whence = SYSCALLS.get(); + // NOTE: offset_high is unused - Emscripten's off_t is 32-bit + var offset = offset_low; + FS.llseek(stream, offset, whence); + HEAP32[result >> 2] = stream.position; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state + return 0; + } catch (e) { if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno; } - } +} - - function flush_NO_FILESYSTEM() { - // flush anything remaining in the buffers during shutdown - var fflush = Module["_fflush"]; - if (fflush) fflush(0); - var buffers = SYSCALLS.buffers; - if (buffers[1].length) SYSCALLS.printChar(1, 10); - if (buffers[2].length) SYSCALLS.printChar(2, 10); - }function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs; +function flush_NO_FILESYSTEM() { + // flush anything remaining in the buffers during shutdown + var fflush = Module['_fflush']; + if (fflush) fflush(0); + var buffers = SYSCALLS.buffers; + if (buffers[1].length) SYSCALLS.printChar(1, 10); + if (buffers[2].length) SYSCALLS.printChar(2, 10); +} +function ___syscall146(which, varargs) { + SYSCALLS.varargs = varargs; try { - // writev - // hack to support printf in FILESYSTEM=0 - var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); - 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)]; - for (var j = 0; j < len; j++) { - SYSCALLS.printChar(stream, HEAPU8[ptr+j]); - } - ret += len; + // writev + // hack to support printf in FILESYSTEM=0 + var stream = SYSCALLS.get(), + iov = SYSCALLS.get(), + iovcnt = SYSCALLS.get(); + 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]; + for (var j = 0; j < len; j++) { + SYSCALLS.printChar(stream, HEAPU8[ptr + j]); } - return ret; - } catch (e) { + ret += len; + } + return ret; + } catch (e) { if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno; } - } +} - function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs; +function ___syscall54(which, varargs) { + SYSCALLS.varargs = varargs; try { - // ioctl - return 0; - } catch (e) { + // ioctl + return 0; + } catch (e) { if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno; } - } +} - function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs; +function ___syscall6(which, varargs) { + SYSCALLS.varargs = varargs; try { - // close - var stream = SYSCALLS.getStreamFromFD(); - FS.close(stream); - return 0; - } catch (e) { + // close + var stream = SYSCALLS.getStreamFromFD(); + FS.close(stream); + return 0; + } catch (e) { if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno; } - } +} - function ___unlock() {} +function ___unlock() {} - +function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src + num), dest); + return dest; +} - - - - - - - - - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.set(HEAPU8.subarray(src, src+num), dest); - return dest; - } - - - - - function ___setErrNo(value) { - if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value; - else err('failed to set errno from JS'); - return value; - } +function ___setErrNo(value) { + if (Module['___errno_location']) + HEAP32[Module['___errno_location']() >> 2] = value; + else err('failed to set errno from JS'); + return value; +} DYNAMICTOP_PTR = staticAlloc(4); STACK_BASE = STACKTOP = alignMemory(STATICTOP); @@ -1595,11 +1790,11 @@ STACK_MAX = STACK_BASE + TOTAL_STACK; DYNAMIC_BASE = alignMemory(STACK_MAX); -HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE; +HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE; staticSealed = true; // seal the static portion of memory -assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); +assert(DYNAMIC_BASE < TOTAL_MEMORY, 'TOTAL_MEMORY not big enough for stack'); var ASSERTIONS = true; @@ -1610,7 +1805,7 @@ var ASSERTIONS = true; /** @type {function(string, boolean=, number=)} */ function intArrayFromString(stringy, dontAddNull, length) { - var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + 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; @@ -1621,18 +1816,26 @@ function intArrayToString(array) { var ret = []; for (var i = 0; i < array.length; i++) { var chr = array[i]; - if (chr > 0xFF) { + if (chr > 0xff) { if (ASSERTIONS) { - assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + assert( + false, + 'Character code ' + + chr + + ' (' + + String.fromCharCode(chr) + + ') at offset ' + + i + + ' not in 0x00-0xFF.' + ); } - chr &= 0xFF; + chr &= 0xff; } ret.push(String.fromCharCode(chr)); } return ret.join(''); } - // Copied from https://github.com/strophe/strophejs/blob/e06d027/src/polyfills.js#L149 // This code was written by Tyler Akins and has been placed in the @@ -1643,36 +1846,40 @@ function intArrayToString(array) { * Decodes a base64 string. * @param {String} input The string to decode. */ -var decodeBase64 = typeof atob === 'function' ? atob : function (input) { - var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; +var decodeBase64 = + typeof atob === 'function' + ? atob + : function(input) { + var keyStr = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - var output = ''; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0; - // remove all characters that are not A-Z, a-z, 0-9, +, /, or = - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); - do { - enc1 = keyStr.indexOf(input.charAt(i++)); - enc2 = keyStr.indexOf(input.charAt(i++)); - enc3 = keyStr.indexOf(input.charAt(i++)); - enc4 = keyStr.indexOf(input.charAt(i++)); + var output = ''; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + // remove all characters that are not A-Z, a-z, 0-9, +, /, or = + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); + do { + 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; + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; - output = output + String.fromCharCode(chr1); + output = output + String.fromCharCode(chr1); - if (enc3 !== 64) { - output = output + String.fromCharCode(chr2); - } - if (enc4 !== 64) { - output = output + String.fromCharCode(chr3); - } - } while (i < input.length); - return output; -}; + if (enc3 !== 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 !== 64) { + output = output + String.fromCharCode(chr3); + } + } while (i < input.length); + return output; + }; // Converts a string of base64 into a byte array. // Throws error on invalid input. @@ -1690,7 +1897,7 @@ function intArrayFromBase64(s) { try { var decoded = decodeBase64(s); var bytes = new Uint8Array(decoded.length); - for (var i = 0 ; i < decoded.length ; ++i) { + for (var i = 0; i < decoded.length; ++i) { bytes[i] = decoded.charCodeAt(i); } return bytes; @@ -1709,41 +1916,86 @@ function tryParseAsDataURI(filename) { return intArrayFromBase64(filename.slice(dataURIPrefix.length)); } +function nullFunc_ii(x) { + err( + "Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)" + ); + err('Build with ASSERTIONS=2 for more info.'); + abort(x); +} +function nullFunc_iiii(x) { + err( + "Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)" + ); + err('Build with ASSERTIONS=2 for more info.'); + abort(x); +} -function nullFunc_ii(x) { err("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); err("Build with ASSERTIONS=2 for more info.");abort(x) } - -function nullFunc_iiii(x) { err("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); err("Build with ASSERTIONS=2 for more info.");abort(x) } - -function invoke_ii(index,a1) { +function invoke_ii(index, a1) { var sp = stackSave(); try { - return Module["dynCall_ii"](index,a1); - } catch(e) { + return Module['dynCall_ii'](index, a1); + } catch (e) { stackRestore(sp); if (typeof e !== 'number' && e !== 'longjmp') throw e; - Module["setThrew"](1, 0); + Module['setThrew'](1, 0); } } -function invoke_iiii(index,a1,a2,a3) { +function invoke_iiii(index, a1, a2, a3) { var sp = stackSave(); try { - return Module["dynCall_iiii"](index,a1,a2,a3); - } catch(e) { + return Module['dynCall_iiii'](index, a1, a2, a3); + } catch (e) { stackRestore(sp); if (typeof e !== 'number' && e !== 'longjmp') throw e; - Module["setThrew"](1, 0); + Module['setThrew'](1, 0); } } -Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity }; +Module.asmGlobalArg = { + Math: Math, + Int8Array: Int8Array, + Int16Array: Int16Array, + Int32Array: Int32Array, + Uint8Array: Uint8Array, + Uint16Array: Uint16Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array, + NaN: NaN, + Infinity: Infinity, +}; -Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_ii": nullFunc_ii, "nullFunc_iiii": nullFunc_iiii, "invoke_ii": invoke_ii, "invoke_iiii": invoke_iiii, "___lock": ___lock, "___setErrNo": ___setErrNo, "___syscall140": ___syscall140, "___syscall146": ___syscall146, "___syscall54": ___syscall54, "___syscall6": ___syscall6, "___unlock": ___unlock, "_emscripten_memcpy_big": _emscripten_memcpy_big, "flush_NO_FILESYSTEM": flush_NO_FILESYSTEM, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX }; +Module.asmLibraryArg = { + abort: abort, + assert: assert, + enlargeMemory: enlargeMemory, + getTotalMemory: getTotalMemory, + abortOnCannotGrowMemory: abortOnCannotGrowMemory, + abortStackOverflow: abortStackOverflow, + nullFunc_ii: nullFunc_ii, + nullFunc_iiii: nullFunc_iiii, + invoke_ii: invoke_ii, + invoke_iiii: invoke_iiii, + ___lock: ___lock, + ___setErrNo: ___setErrNo, + ___syscall140: ___syscall140, + ___syscall146: ___syscall146, + ___syscall54: ___syscall54, + ___syscall6: ___syscall6, + ___unlock: ___unlock, + _emscripten_memcpy_big: _emscripten_memcpy_big, + flush_NO_FILESYSTEM: flush_NO_FILESYSTEM, + DYNAMICTOP_PTR: DYNAMICTOP_PTR, + tempDoublePtr: tempDoublePtr, + STACKTOP: STACKTOP, + STACK_MAX: STACK_MAX, +}; // EMSCRIPTEN_START_ASM -var asm = (/** @suppress {uselessCode} */ function(global, env, buffer) { -'almost asm'; - +var asm = /** @suppress {uselessCode} */ (function(global, env, buffer) { + 'almost asm'; var HEAP8 = new global.Int8Array(buffer); var HEAP16 = new global.Int16Array(buffer); @@ -1754,6743 +2006,11581 @@ var asm = (/** @suppress {uselessCode} */ function(global, env, buffer) { var HEAPF32 = new global.Float32Array(buffer); var HEAPF64 = new global.Float64Array(buffer); - var DYNAMICTOP_PTR=env.DYNAMICTOP_PTR|0; - var tempDoublePtr=env.tempDoublePtr|0; - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; + var DYNAMICTOP_PTR = env.DYNAMICTOP_PTR | 0; + var tempDoublePtr = env.tempDoublePtr | 0; + var STACKTOP = env.STACKTOP | 0; + var STACK_MAX = env.STACK_MAX | 0; var __THREW__ = 0; var threwValue = 0; var setjmpId = 0; var undef = 0; - var nan = global.NaN, inf = global.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntS = 0, tempValue = 0, tempDouble = 0.0; -var tempRet0 = 0; + var nan = global.NaN, + inf = global.Infinity; + var tempInt = 0, + tempBigInt = 0, + tempBigIntS = 0, + tempValue = 0, + tempDouble = 0.0; + var tempRet0 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var Math_min=global.Math.min; - var Math_max=global.Math.max; - var Math_clz32=global.Math.clz32; - var abort=env.abort; - var assert=env.assert; - var enlargeMemory=env.enlargeMemory; - var getTotalMemory=env.getTotalMemory; - var abortOnCannotGrowMemory=env.abortOnCannotGrowMemory; - var abortStackOverflow=env.abortStackOverflow; - var nullFunc_ii=env.nullFunc_ii; - var nullFunc_iiii=env.nullFunc_iiii; - var invoke_ii=env.invoke_ii; - var invoke_iiii=env.invoke_iiii; - var ___lock=env.___lock; - var ___setErrNo=env.___setErrNo; - var ___syscall140=env.___syscall140; - var ___syscall146=env.___syscall146; - var ___syscall54=env.___syscall54; - var ___syscall6=env.___syscall6; - var ___unlock=env.___unlock; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var flush_NO_FILESYSTEM=env.flush_NO_FILESYSTEM; + var Math_floor = global.Math.floor; + var Math_abs = global.Math.abs; + var Math_sqrt = global.Math.sqrt; + var Math_pow = global.Math.pow; + var Math_cos = global.Math.cos; + var Math_sin = global.Math.sin; + var Math_tan = global.Math.tan; + var Math_acos = global.Math.acos; + var Math_asin = global.Math.asin; + var Math_atan = global.Math.atan; + var Math_atan2 = global.Math.atan2; + var Math_exp = global.Math.exp; + var Math_log = global.Math.log; + var Math_ceil = global.Math.ceil; + var Math_imul = global.Math.imul; + var Math_min = global.Math.min; + var Math_max = global.Math.max; + var Math_clz32 = global.Math.clz32; + var abort = env.abort; + var assert = env.assert; + var enlargeMemory = env.enlargeMemory; + var getTotalMemory = env.getTotalMemory; + var abortOnCannotGrowMemory = env.abortOnCannotGrowMemory; + var abortStackOverflow = env.abortStackOverflow; + var nullFunc_ii = env.nullFunc_ii; + var nullFunc_iiii = env.nullFunc_iiii; + var invoke_ii = env.invoke_ii; + var invoke_iiii = env.invoke_iiii; + var ___lock = env.___lock; + var ___setErrNo = env.___setErrNo; + var ___syscall140 = env.___syscall140; + var ___syscall146 = env.___syscall146; + var ___syscall54 = env.___syscall54; + var ___syscall6 = env.___syscall6; + var ___unlock = env.___unlock; + var _emscripten_memcpy_big = env._emscripten_memcpy_big; + var flush_NO_FILESYSTEM = env.flush_NO_FILESYSTEM; var tempFloat = 0.0; -// EMSCRIPTEN_START_FUNCS + // EMSCRIPTEN_START_FUNCS -function stackAlloc(size) { - size = size|0; - var ret = 0; - ret = STACKTOP; - STACKTOP = (STACKTOP + size)|0; - STACKTOP = (STACKTOP + 15)&-16; - if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(size|0); + function stackAlloc(size) { + size = size | 0; + var ret = 0; + ret = STACKTOP; + STACKTOP = (STACKTOP + size) | 0; + STACKTOP = (STACKTOP + 15) & -16; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(size | 0); - return ret|0; -} -function stackSave() { - return STACKTOP|0; -} -function stackRestore(top) { - top = top|0; - STACKTOP = top; -} -function establishStackSpace(stackBase, stackMax) { - stackBase = stackBase|0; - stackMax = stackMax|0; - STACKTOP = stackBase; - STACK_MAX = stackMax; -} -function setThrew(threw, value) { - threw = threw|0; - value = value|0; - if ((__THREW__|0) == 0) { - __THREW__ = threw; - threwValue = value; + return ret | 0; + } + function stackSave() { + return STACKTOP | 0; + } + function stackRestore(top) { + top = top | 0; + STACKTOP = top; + } + function establishStackSpace(stackBase, stackMax) { + stackBase = stackBase | 0; + stackMax = stackMax | 0; + STACKTOP = stackBase; + STACK_MAX = stackMax; + } + function setThrew(threw, value) { + threw = threw | 0; + value = value | 0; + if ((__THREW__ | 0) == 0) { + __THREW__ = threw; + threwValue = value; + } } -} -function setTempRet0(value) { - value = value|0; - tempRet0 = value; -} -function getTempRet0() { - return tempRet0|0; -} + function setTempRet0(value) { + value = value | 0; + tempRet0 = value; + } + function getTempRet0() { + return tempRet0 | 0; + } -function _load_3($0) { - $0 = $0|0; - var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0; - var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0; - var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0); - $2 = sp; - $1 = $0; - $3 = $1; - $4 = HEAP8[$3>>0]|0; - $5 = $4&255; - $6 = $2; - $7 = $6; - HEAP32[$7>>2] = $5; - $8 = (($6) + 4)|0; - $9 = $8; - HEAP32[$9>>2] = 0; - $10 = $1; - $11 = ((($10)) + 1|0); - $12 = HEAP8[$11>>0]|0; - $13 = $12&255; - $14 = (_bitshift64Shl(($13|0),0,8)|0); - $15 = tempRet0; - $16 = $2; - $17 = $16; - $18 = HEAP32[$17>>2]|0; - $19 = (($16) + 4)|0; - $20 = $19; - $21 = HEAP32[$20>>2]|0; - $22 = $18 | $14; - $23 = $21 | $15; - $24 = $2; - $25 = $24; - HEAP32[$25>>2] = $22; - $26 = (($24) + 4)|0; - $27 = $26; - HEAP32[$27>>2] = $23; - $28 = $1; - $29 = ((($28)) + 2|0); - $30 = HEAP8[$29>>0]|0; - $31 = $30&255; - $32 = (_bitshift64Shl(($31|0),0,16)|0); - $33 = tempRet0; - $34 = $2; - $35 = $34; - $36 = HEAP32[$35>>2]|0; - $37 = (($34) + 4)|0; - $38 = $37; - $39 = HEAP32[$38>>2]|0; - $40 = $36 | $32; - $41 = $39 | $33; - $42 = $2; - $43 = $42; - HEAP32[$43>>2] = $40; - $44 = (($42) + 4)|0; - $45 = $44; - HEAP32[$45>>2] = $41; - $46 = $2; - $47 = $46; - $48 = HEAP32[$47>>2]|0; - $49 = (($46) + 4)|0; - $50 = $49; - $51 = HEAP32[$50>>2]|0; - tempRet0 = ($51); - STACKTOP = sp;return ($48|0); -} -function _load_4($0) { - $0 = $0|0; - var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0; - var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0; - var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0; - var $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0); - $2 = sp; - $1 = $0; - $3 = $1; - $4 = HEAP8[$3>>0]|0; - $5 = $4&255; - $6 = $2; - $7 = $6; - HEAP32[$7>>2] = $5; - $8 = (($6) + 4)|0; - $9 = $8; - HEAP32[$9>>2] = 0; - $10 = $1; - $11 = ((($10)) + 1|0); - $12 = HEAP8[$11>>0]|0; - $13 = $12&255; - $14 = (_bitshift64Shl(($13|0),0,8)|0); - $15 = tempRet0; - $16 = $2; - $17 = $16; - $18 = HEAP32[$17>>2]|0; - $19 = (($16) + 4)|0; - $20 = $19; - $21 = HEAP32[$20>>2]|0; - $22 = $18 | $14; - $23 = $21 | $15; - $24 = $2; - $25 = $24; - HEAP32[$25>>2] = $22; - $26 = (($24) + 4)|0; - $27 = $26; - HEAP32[$27>>2] = $23; - $28 = $1; - $29 = ((($28)) + 2|0); - $30 = HEAP8[$29>>0]|0; - $31 = $30&255; - $32 = (_bitshift64Shl(($31|0),0,16)|0); - $33 = tempRet0; - $34 = $2; - $35 = $34; - $36 = HEAP32[$35>>2]|0; - $37 = (($34) + 4)|0; - $38 = $37; - $39 = HEAP32[$38>>2]|0; - $40 = $36 | $32; - $41 = $39 | $33; - $42 = $2; - $43 = $42; - HEAP32[$43>>2] = $40; - $44 = (($42) + 4)|0; - $45 = $44; - HEAP32[$45>>2] = $41; - $46 = $1; - $47 = ((($46)) + 3|0); - $48 = HEAP8[$47>>0]|0; - $49 = $48&255; - $50 = (_bitshift64Shl(($49|0),0,24)|0); - $51 = tempRet0; - $52 = $2; - $53 = $52; - $54 = HEAP32[$53>>2]|0; - $55 = (($52) + 4)|0; - $56 = $55; - $57 = HEAP32[$56>>2]|0; - $58 = $54 | $50; - $59 = $57 | $51; - $60 = $2; - $61 = $60; - HEAP32[$61>>2] = $58; - $62 = (($60) + 4)|0; - $63 = $62; - HEAP32[$63>>2] = $59; - $64 = $2; - $65 = $64; - $66 = HEAP32[$65>>2]|0; - $67 = (($64) + 4)|0; - $68 = $67; - $69 = HEAP32[$68>>2]|0; - tempRet0 = ($69); - STACKTOP = sp;return ($66|0); -} -function _sc_reduce32($0) { - $0 = $0|0; - var $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0; - var $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0; - var $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0; - var $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0; - var $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0, $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0; - var $1089 = 0, $109 = 0, $1090 = 0, $1091 = 0, $1092 = 0, $1093 = 0, $1094 = 0, $1095 = 0, $1096 = 0, $1097 = 0, $1098 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1101 = 0, $1102 = 0, $1103 = 0, $1104 = 0, $1105 = 0; - var $1106 = 0, $1107 = 0, $1108 = 0, $1109 = 0, $111 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1113 = 0, $1114 = 0, $1115 = 0, $1116 = 0, $1117 = 0, $1118 = 0, $1119 = 0, $112 = 0, $1120 = 0, $1121 = 0, $1122 = 0, $1123 = 0; - var $1124 = 0, $1125 = 0, $1126 = 0, $1127 = 0, $1128 = 0, $1129 = 0, $113 = 0, $1130 = 0, $1131 = 0, $1132 = 0, $1133 = 0, $1134 = 0, $1135 = 0, $1136 = 0, $1137 = 0, $1138 = 0, $1139 = 0, $114 = 0, $1140 = 0, $1141 = 0; - var $1142 = 0, $1143 = 0, $1144 = 0, $1145 = 0, $1146 = 0, $1147 = 0, $1148 = 0, $1149 = 0, $115 = 0, $1150 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1154 = 0, $1155 = 0, $1156 = 0, $1157 = 0, $1158 = 0, $1159 = 0, $116 = 0; - var $1160 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1167 = 0, $1168 = 0, $1169 = 0, $117 = 0, $1170 = 0, $1171 = 0, $1172 = 0, $1173 = 0, $1174 = 0, $1175 = 0, $1176 = 0, $1177 = 0, $1178 = 0; - var $1179 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1182 = 0, $1183 = 0, $1184 = 0, $1185 = 0, $1186 = 0, $1187 = 0, $1188 = 0, $1189 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1192 = 0, $1193 = 0, $1194 = 0, $1195 = 0, $1196 = 0; - var $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0, $1200 = 0, $1201 = 0, $1202 = 0, $1203 = 0, $1204 = 0, $1205 = 0, $1206 = 0, $1207 = 0, $1208 = 0, $1209 = 0, $121 = 0, $1210 = 0, $1211 = 0, $1212 = 0, $1213 = 0; - var $1214 = 0, $1215 = 0, $1216 = 0, $1217 = 0, $1218 = 0, $1219 = 0, $122 = 0, $1220 = 0, $1221 = 0, $1222 = 0, $1223 = 0, $1224 = 0, $1225 = 0, $1226 = 0, $1227 = 0, $1228 = 0, $1229 = 0, $123 = 0, $1230 = 0, $1231 = 0; - var $1232 = 0, $1233 = 0, $1234 = 0, $1235 = 0, $1236 = 0, $1237 = 0, $1238 = 0, $1239 = 0, $124 = 0, $1240 = 0, $1241 = 0, $1242 = 0, $1243 = 0, $1244 = 0, $1245 = 0, $1246 = 0, $1247 = 0, $1248 = 0, $1249 = 0, $125 = 0; - var $1250 = 0, $1251 = 0, $1252 = 0, $1253 = 0, $1254 = 0, $1255 = 0, $1256 = 0, $1257 = 0, $1258 = 0, $1259 = 0, $126 = 0, $1260 = 0, $1261 = 0, $1262 = 0, $1263 = 0, $1264 = 0, $1265 = 0, $1266 = 0, $1267 = 0, $1268 = 0; - var $1269 = 0, $127 = 0, $1270 = 0, $1271 = 0, $1272 = 0, $1273 = 0, $1274 = 0, $1275 = 0, $1276 = 0, $1277 = 0, $1278 = 0, $1279 = 0, $128 = 0, $1280 = 0, $1281 = 0, $1282 = 0, $1283 = 0, $1284 = 0, $1285 = 0, $1286 = 0; - var $1287 = 0, $1288 = 0, $1289 = 0, $129 = 0, $1290 = 0, $1291 = 0, $1292 = 0, $1293 = 0, $1294 = 0, $1295 = 0, $1296 = 0, $1297 = 0, $1298 = 0, $1299 = 0, $13 = 0, $130 = 0, $1300 = 0, $1301 = 0, $1302 = 0, $1303 = 0; - var $1304 = 0, $1305 = 0, $1306 = 0, $1307 = 0, $1308 = 0, $1309 = 0, $131 = 0, $1310 = 0, $1311 = 0, $1312 = 0, $1313 = 0, $1314 = 0, $1315 = 0, $1316 = 0, $1317 = 0, $1318 = 0, $1319 = 0, $132 = 0, $1320 = 0, $1321 = 0; - var $1322 = 0, $1323 = 0, $1324 = 0, $1325 = 0, $1326 = 0, $1327 = 0, $1328 = 0, $1329 = 0, $133 = 0, $1330 = 0, $1331 = 0, $1332 = 0, $1333 = 0, $1334 = 0, $1335 = 0, $1336 = 0, $1337 = 0, $1338 = 0, $1339 = 0, $134 = 0; - var $1340 = 0, $1341 = 0, $1342 = 0, $1343 = 0, $1344 = 0, $1345 = 0, $1346 = 0, $1347 = 0, $1348 = 0, $1349 = 0, $135 = 0, $1350 = 0, $1351 = 0, $1352 = 0, $1353 = 0, $1354 = 0, $1355 = 0, $1356 = 0, $1357 = 0, $1358 = 0; - var $1359 = 0, $136 = 0, $1360 = 0, $1361 = 0, $1362 = 0, $1363 = 0, $1364 = 0, $1365 = 0, $1366 = 0, $1367 = 0, $1368 = 0, $1369 = 0, $137 = 0, $1370 = 0, $1371 = 0, $1372 = 0, $1373 = 0, $1374 = 0, $1375 = 0, $1376 = 0; - var $1377 = 0, $1378 = 0, $1379 = 0, $138 = 0, $1380 = 0, $1381 = 0, $1382 = 0, $1383 = 0, $1384 = 0, $1385 = 0, $1386 = 0, $1387 = 0, $1388 = 0, $1389 = 0, $139 = 0, $1390 = 0, $1391 = 0, $1392 = 0, $1393 = 0, $1394 = 0; - var $1395 = 0, $1396 = 0, $1397 = 0, $1398 = 0, $1399 = 0, $14 = 0, $140 = 0, $1400 = 0, $1401 = 0, $1402 = 0, $1403 = 0, $1404 = 0, $1405 = 0, $1406 = 0, $1407 = 0, $1408 = 0, $1409 = 0, $141 = 0, $1410 = 0, $1411 = 0; - var $1412 = 0, $1413 = 0, $1414 = 0, $1415 = 0, $1416 = 0, $1417 = 0, $1418 = 0, $1419 = 0, $142 = 0, $1420 = 0, $1421 = 0, $1422 = 0, $1423 = 0, $1424 = 0, $1425 = 0, $1426 = 0, $1427 = 0, $1428 = 0, $1429 = 0, $143 = 0; - var $1430 = 0, $1431 = 0, $1432 = 0, $1433 = 0, $1434 = 0, $1435 = 0, $1436 = 0, $1437 = 0, $1438 = 0, $1439 = 0, $144 = 0, $1440 = 0, $1441 = 0, $1442 = 0, $1443 = 0, $1444 = 0, $1445 = 0, $1446 = 0, $1447 = 0, $1448 = 0; - var $1449 = 0, $145 = 0, $1450 = 0, $1451 = 0, $1452 = 0, $1453 = 0, $1454 = 0, $1455 = 0, $1456 = 0, $1457 = 0, $1458 = 0, $1459 = 0, $146 = 0, $1460 = 0, $1461 = 0, $1462 = 0, $1463 = 0, $1464 = 0, $1465 = 0, $1466 = 0; - var $1467 = 0, $1468 = 0, $1469 = 0, $147 = 0, $1470 = 0, $1471 = 0, $1472 = 0, $1473 = 0, $1474 = 0, $1475 = 0, $1476 = 0, $1477 = 0, $1478 = 0, $1479 = 0, $148 = 0, $1480 = 0, $1481 = 0, $1482 = 0, $1483 = 0, $1484 = 0; - var $1485 = 0, $1486 = 0, $1487 = 0, $1488 = 0, $1489 = 0, $149 = 0, $1490 = 0, $1491 = 0, $1492 = 0, $1493 = 0, $1494 = 0, $1495 = 0, $1496 = 0, $1497 = 0, $1498 = 0, $1499 = 0, $15 = 0, $150 = 0, $1500 = 0, $1501 = 0; - var $1502 = 0, $1503 = 0, $1504 = 0, $1505 = 0, $1506 = 0, $1507 = 0, $1508 = 0, $1509 = 0, $151 = 0, $1510 = 0, $1511 = 0, $1512 = 0, $1513 = 0, $1514 = 0, $1515 = 0, $1516 = 0, $1517 = 0, $1518 = 0, $1519 = 0, $152 = 0; - var $1520 = 0, $1521 = 0, $1522 = 0, $1523 = 0, $1524 = 0, $1525 = 0, $1526 = 0, $1527 = 0, $1528 = 0, $1529 = 0, $153 = 0, $1530 = 0, $1531 = 0, $1532 = 0, $1533 = 0, $1534 = 0, $1535 = 0, $1536 = 0, $1537 = 0, $1538 = 0; - var $1539 = 0, $154 = 0, $1540 = 0, $1541 = 0, $1542 = 0, $1543 = 0, $1544 = 0, $1545 = 0, $1546 = 0, $1547 = 0, $1548 = 0, $1549 = 0, $155 = 0, $1550 = 0, $1551 = 0, $1552 = 0, $1553 = 0, $1554 = 0, $1555 = 0, $1556 = 0; - var $1557 = 0, $1558 = 0, $1559 = 0, $156 = 0, $1560 = 0, $1561 = 0, $1562 = 0, $1563 = 0, $1564 = 0, $1565 = 0, $1566 = 0, $1567 = 0, $1568 = 0, $1569 = 0, $157 = 0, $1570 = 0, $1571 = 0, $1572 = 0, $1573 = 0, $1574 = 0; - var $1575 = 0, $1576 = 0, $1577 = 0, $1578 = 0, $1579 = 0, $158 = 0, $1580 = 0, $1581 = 0, $1582 = 0, $1583 = 0, $1584 = 0, $1585 = 0, $1586 = 0, $1587 = 0, $1588 = 0, $1589 = 0, $159 = 0, $1590 = 0, $1591 = 0, $1592 = 0; - var $1593 = 0, $1594 = 0, $1595 = 0, $1596 = 0, $1597 = 0, $1598 = 0, $1599 = 0, $16 = 0, $160 = 0, $1600 = 0, $1601 = 0, $1602 = 0, $1603 = 0, $1604 = 0, $1605 = 0, $1606 = 0, $1607 = 0, $1608 = 0, $1609 = 0, $161 = 0; - var $1610 = 0, $1611 = 0, $1612 = 0, $1613 = 0, $1614 = 0, $1615 = 0, $1616 = 0, $1617 = 0, $1618 = 0, $1619 = 0, $162 = 0, $1620 = 0, $1621 = 0, $1622 = 0, $1623 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $1627 = 0, $1628 = 0; - var $1629 = 0, $163 = 0, $1630 = 0, $1631 = 0, $1632 = 0, $1633 = 0, $1634 = 0, $1635 = 0, $1636 = 0, $1637 = 0, $1638 = 0, $1639 = 0, $164 = 0, $1640 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1645 = 0, $1646 = 0; - var $1647 = 0, $1648 = 0, $1649 = 0, $165 = 0, $1650 = 0, $1651 = 0, $1652 = 0, $1653 = 0, $1654 = 0, $1655 = 0, $1656 = 0, $1657 = 0, $1658 = 0, $1659 = 0, $166 = 0, $1660 = 0, $1661 = 0, $1662 = 0, $1663 = 0, $1664 = 0; - var $1665 = 0, $1666 = 0, $1667 = 0, $1668 = 0, $1669 = 0, $167 = 0, $1670 = 0, $1671 = 0, $1672 = 0, $1673 = 0, $1674 = 0, $1675 = 0, $1676 = 0, $1677 = 0, $1678 = 0, $1679 = 0, $168 = 0, $1680 = 0, $1681 = 0, $1682 = 0; - var $1683 = 0, $1684 = 0, $1685 = 0, $1686 = 0, $1687 = 0, $1688 = 0, $1689 = 0, $169 = 0, $1690 = 0, $1691 = 0, $1692 = 0, $1693 = 0, $1694 = 0, $1695 = 0, $1696 = 0, $1697 = 0, $1698 = 0, $1699 = 0, $17 = 0, $170 = 0; - var $1700 = 0, $1701 = 0, $1702 = 0, $1703 = 0, $1704 = 0, $1705 = 0, $1706 = 0, $1707 = 0, $1708 = 0, $1709 = 0, $171 = 0, $1710 = 0, $1711 = 0, $1712 = 0, $1713 = 0, $1714 = 0, $1715 = 0, $1716 = 0, $1717 = 0, $1718 = 0; - var $1719 = 0, $172 = 0, $1720 = 0, $1721 = 0, $1722 = 0, $1723 = 0, $1724 = 0, $1725 = 0, $1726 = 0, $1727 = 0, $1728 = 0, $1729 = 0, $173 = 0, $1730 = 0, $1731 = 0, $1732 = 0, $1733 = 0, $1734 = 0, $1735 = 0, $1736 = 0; - var $1737 = 0, $1738 = 0, $1739 = 0, $174 = 0, $1740 = 0, $1741 = 0, $1742 = 0, $1743 = 0, $1744 = 0, $1745 = 0, $1746 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $175 = 0, $1750 = 0, $1751 = 0, $1752 = 0, $1753 = 0, $1754 = 0; - var $1755 = 0, $1756 = 0, $1757 = 0, $1758 = 0, $1759 = 0, $176 = 0, $1760 = 0, $1761 = 0, $1762 = 0, $1763 = 0, $1764 = 0, $1765 = 0, $1766 = 0, $1767 = 0, $1768 = 0, $1769 = 0, $177 = 0, $1770 = 0, $1771 = 0, $1772 = 0; - var $1773 = 0, $1774 = 0, $1775 = 0, $1776 = 0, $1777 = 0, $1778 = 0, $1779 = 0, $178 = 0, $1780 = 0, $1781 = 0, $1782 = 0, $1783 = 0, $1784 = 0, $1785 = 0, $1786 = 0, $1787 = 0, $1788 = 0, $1789 = 0, $179 = 0, $1790 = 0; - var $1791 = 0, $1792 = 0, $1793 = 0, $1794 = 0, $1795 = 0, $1796 = 0, $1797 = 0, $1798 = 0, $1799 = 0, $18 = 0, $180 = 0, $1800 = 0, $1801 = 0, $1802 = 0, $1803 = 0, $1804 = 0, $1805 = 0, $1806 = 0, $1807 = 0, $1808 = 0; - var $1809 = 0, $181 = 0, $1810 = 0, $1811 = 0, $1812 = 0, $1813 = 0, $1814 = 0, $1815 = 0, $1816 = 0, $1817 = 0, $1818 = 0, $1819 = 0, $182 = 0, $1820 = 0, $1821 = 0, $1822 = 0, $1823 = 0, $1824 = 0, $1825 = 0, $1826 = 0; - var $1827 = 0, $1828 = 0, $1829 = 0, $183 = 0, $1830 = 0, $1831 = 0, $1832 = 0, $1833 = 0, $1834 = 0, $1835 = 0, $1836 = 0, $1837 = 0, $1838 = 0, $1839 = 0, $184 = 0, $1840 = 0, $1841 = 0, $1842 = 0, $1843 = 0, $1844 = 0; - var $1845 = 0, $1846 = 0, $1847 = 0, $1848 = 0, $1849 = 0, $185 = 0, $1850 = 0, $1851 = 0, $1852 = 0, $1853 = 0, $1854 = 0, $1855 = 0, $1856 = 0, $1857 = 0, $1858 = 0, $1859 = 0, $186 = 0, $1860 = 0, $1861 = 0, $1862 = 0; - var $1863 = 0, $1864 = 0, $1865 = 0, $1866 = 0, $1867 = 0, $1868 = 0, $1869 = 0, $187 = 0, $1870 = 0, $1871 = 0, $1872 = 0, $1873 = 0, $1874 = 0, $1875 = 0, $1876 = 0, $1877 = 0, $1878 = 0, $1879 = 0, $188 = 0, $1880 = 0; - var $1881 = 0, $1882 = 0, $1883 = 0, $1884 = 0, $1885 = 0, $1886 = 0, $1887 = 0, $1888 = 0, $1889 = 0, $189 = 0, $1890 = 0, $1891 = 0, $1892 = 0, $1893 = 0, $1894 = 0, $1895 = 0, $1896 = 0, $1897 = 0, $1898 = 0, $1899 = 0; - var $19 = 0, $190 = 0, $1900 = 0, $1901 = 0, $1902 = 0, $1903 = 0, $1904 = 0, $1905 = 0, $1906 = 0, $1907 = 0, $1908 = 0, $1909 = 0, $191 = 0, $1910 = 0, $1911 = 0, $1912 = 0, $1913 = 0, $1914 = 0, $1915 = 0, $1916 = 0; - var $1917 = 0, $1918 = 0, $1919 = 0, $192 = 0, $1920 = 0, $1921 = 0, $1922 = 0, $1923 = 0, $1924 = 0, $1925 = 0, $1926 = 0, $1927 = 0, $1928 = 0, $1929 = 0, $193 = 0, $1930 = 0, $1931 = 0, $1932 = 0, $1933 = 0, $1934 = 0; - var $1935 = 0, $1936 = 0, $1937 = 0, $1938 = 0, $1939 = 0, $194 = 0, $1940 = 0, $1941 = 0, $1942 = 0, $1943 = 0, $1944 = 0, $1945 = 0, $1946 = 0, $1947 = 0, $1948 = 0, $1949 = 0, $195 = 0, $1950 = 0, $1951 = 0, $1952 = 0; - var $1953 = 0, $1954 = 0, $1955 = 0, $1956 = 0, $1957 = 0, $1958 = 0, $1959 = 0, $196 = 0, $1960 = 0, $1961 = 0, $1962 = 0, $1963 = 0, $1964 = 0, $1965 = 0, $1966 = 0, $1967 = 0, $1968 = 0, $1969 = 0, $197 = 0, $1970 = 0; - var $1971 = 0, $1972 = 0, $1973 = 0, $1974 = 0, $1975 = 0, $1976 = 0, $1977 = 0, $1978 = 0, $1979 = 0, $198 = 0, $1980 = 0, $1981 = 0, $1982 = 0, $1983 = 0, $1984 = 0, $1985 = 0, $1986 = 0, $1987 = 0, $1988 = 0, $1989 = 0; - var $199 = 0, $1990 = 0, $1991 = 0, $1992 = 0, $1993 = 0, $1994 = 0, $1995 = 0, $1996 = 0, $1997 = 0, $1998 = 0, $1999 = 0, $2 = 0, $20 = 0, $200 = 0, $2000 = 0, $2001 = 0, $2002 = 0, $2003 = 0, $2004 = 0, $2005 = 0; - var $2006 = 0, $2007 = 0, $2008 = 0, $2009 = 0, $201 = 0, $2010 = 0, $2011 = 0, $2012 = 0, $2013 = 0, $2014 = 0, $2015 = 0, $2016 = 0, $2017 = 0, $2018 = 0, $2019 = 0, $202 = 0, $2020 = 0, $2021 = 0, $2022 = 0, $2023 = 0; - var $2024 = 0, $2025 = 0, $2026 = 0, $2027 = 0, $2028 = 0, $2029 = 0, $203 = 0, $2030 = 0, $2031 = 0, $2032 = 0, $2033 = 0, $2034 = 0, $2035 = 0, $2036 = 0, $2037 = 0, $2038 = 0, $2039 = 0, $204 = 0, $2040 = 0, $2041 = 0; - var $2042 = 0, $2043 = 0, $2044 = 0, $2045 = 0, $2046 = 0, $2047 = 0, $2048 = 0, $2049 = 0, $205 = 0, $2050 = 0, $2051 = 0, $2052 = 0, $2053 = 0, $2054 = 0, $2055 = 0, $2056 = 0, $2057 = 0, $2058 = 0, $2059 = 0, $206 = 0; - var $2060 = 0, $2061 = 0, $2062 = 0, $2063 = 0, $2064 = 0, $2065 = 0, $2066 = 0, $2067 = 0, $2068 = 0, $2069 = 0, $207 = 0, $2070 = 0, $2071 = 0, $2072 = 0, $2073 = 0, $2074 = 0, $2075 = 0, $2076 = 0, $2077 = 0, $2078 = 0; - var $2079 = 0, $208 = 0, $2080 = 0, $2081 = 0, $2082 = 0, $2083 = 0, $2084 = 0, $2085 = 0, $2086 = 0, $2087 = 0, $2088 = 0, $2089 = 0, $209 = 0, $2090 = 0, $2091 = 0, $2092 = 0, $2093 = 0, $2094 = 0, $2095 = 0, $2096 = 0; - var $2097 = 0, $2098 = 0, $2099 = 0, $21 = 0, $210 = 0, $2100 = 0, $2101 = 0, $2102 = 0, $2103 = 0, $2104 = 0, $2105 = 0, $2106 = 0, $2107 = 0, $2108 = 0, $2109 = 0, $211 = 0, $2110 = 0, $2111 = 0, $2112 = 0, $2113 = 0; - var $2114 = 0, $2115 = 0, $2116 = 0, $2117 = 0, $2118 = 0, $2119 = 0, $212 = 0, $2120 = 0, $2121 = 0, $2122 = 0, $2123 = 0, $2124 = 0, $2125 = 0, $2126 = 0, $2127 = 0, $2128 = 0, $2129 = 0, $213 = 0, $2130 = 0, $2131 = 0; - var $2132 = 0, $2133 = 0, $2134 = 0, $2135 = 0, $2136 = 0, $2137 = 0, $2138 = 0, $2139 = 0, $214 = 0, $2140 = 0, $2141 = 0, $2142 = 0, $2143 = 0, $2144 = 0, $2145 = 0, $2146 = 0, $2147 = 0, $2148 = 0, $2149 = 0, $215 = 0; - var $2150 = 0, $2151 = 0, $2152 = 0, $2153 = 0, $2154 = 0, $2155 = 0, $2156 = 0, $2157 = 0, $2158 = 0, $2159 = 0, $216 = 0, $2160 = 0, $2161 = 0, $2162 = 0, $2163 = 0, $2164 = 0, $2165 = 0, $2166 = 0, $2167 = 0, $2168 = 0; - var $2169 = 0, $217 = 0, $2170 = 0, $2171 = 0, $2172 = 0, $2173 = 0, $2174 = 0, $2175 = 0, $2176 = 0, $2177 = 0, $2178 = 0, $2179 = 0, $218 = 0, $2180 = 0, $2181 = 0, $2182 = 0, $2183 = 0, $2184 = 0, $2185 = 0, $2186 = 0; - var $2187 = 0, $2188 = 0, $2189 = 0, $219 = 0, $2190 = 0, $2191 = 0, $2192 = 0, $2193 = 0, $2194 = 0, $2195 = 0, $2196 = 0, $2197 = 0, $2198 = 0, $2199 = 0, $22 = 0, $220 = 0, $2200 = 0, $2201 = 0, $2202 = 0, $2203 = 0; - var $2204 = 0, $2205 = 0, $2206 = 0, $2207 = 0, $2208 = 0, $2209 = 0, $221 = 0, $2210 = 0, $2211 = 0, $2212 = 0, $2213 = 0, $2214 = 0, $2215 = 0, $2216 = 0, $2217 = 0, $2218 = 0, $2219 = 0, $222 = 0, $2220 = 0, $2221 = 0; - var $2222 = 0, $2223 = 0, $2224 = 0, $2225 = 0, $2226 = 0, $2227 = 0, $2228 = 0, $2229 = 0, $223 = 0, $2230 = 0, $2231 = 0, $2232 = 0, $2233 = 0, $2234 = 0, $2235 = 0, $2236 = 0, $2237 = 0, $2238 = 0, $2239 = 0, $224 = 0; - var $2240 = 0, $2241 = 0, $2242 = 0, $2243 = 0, $2244 = 0, $2245 = 0, $2246 = 0, $2247 = 0, $2248 = 0, $2249 = 0, $225 = 0, $2250 = 0, $2251 = 0, $2252 = 0, $2253 = 0, $2254 = 0, $2255 = 0, $2256 = 0, $2257 = 0, $2258 = 0; - var $2259 = 0, $226 = 0, $2260 = 0, $2261 = 0, $2262 = 0, $2263 = 0, $2264 = 0, $2265 = 0, $2266 = 0, $2267 = 0, $2268 = 0, $2269 = 0, $227 = 0, $2270 = 0, $2271 = 0, $2272 = 0, $2273 = 0, $2274 = 0, $2275 = 0, $2276 = 0; - var $2277 = 0, $2278 = 0, $2279 = 0, $228 = 0, $2280 = 0, $2281 = 0, $2282 = 0, $2283 = 0, $2284 = 0, $2285 = 0, $2286 = 0, $2287 = 0, $2288 = 0, $2289 = 0, $229 = 0, $2290 = 0, $2291 = 0, $2292 = 0, $2293 = 0, $2294 = 0; - var $2295 = 0, $2296 = 0, $2297 = 0, $2298 = 0, $2299 = 0, $23 = 0, $230 = 0, $2300 = 0, $2301 = 0, $2302 = 0, $2303 = 0, $2304 = 0, $2305 = 0, $2306 = 0, $2307 = 0, $2308 = 0, $2309 = 0, $231 = 0, $2310 = 0, $2311 = 0; - var $2312 = 0, $2313 = 0, $2314 = 0, $2315 = 0, $2316 = 0, $2317 = 0, $2318 = 0, $2319 = 0, $232 = 0, $2320 = 0, $2321 = 0, $2322 = 0, $2323 = 0, $2324 = 0, $2325 = 0, $2326 = 0, $2327 = 0, $2328 = 0, $2329 = 0, $233 = 0; - var $2330 = 0, $2331 = 0, $2332 = 0, $2333 = 0, $2334 = 0, $2335 = 0, $2336 = 0, $2337 = 0, $2338 = 0, $2339 = 0, $234 = 0, $2340 = 0, $2341 = 0, $2342 = 0, $2343 = 0, $2344 = 0, $2345 = 0, $2346 = 0, $2347 = 0, $2348 = 0; - var $2349 = 0, $235 = 0, $2350 = 0, $2351 = 0, $2352 = 0, $2353 = 0, $2354 = 0, $2355 = 0, $2356 = 0, $2357 = 0, $2358 = 0, $2359 = 0, $236 = 0, $2360 = 0, $2361 = 0, $2362 = 0, $2363 = 0, $2364 = 0, $2365 = 0, $2366 = 0; - var $2367 = 0, $2368 = 0, $2369 = 0, $237 = 0, $2370 = 0, $2371 = 0, $2372 = 0, $2373 = 0, $2374 = 0, $2375 = 0, $2376 = 0, $2377 = 0, $2378 = 0, $2379 = 0, $238 = 0, $2380 = 0, $2381 = 0, $2382 = 0, $2383 = 0, $2384 = 0; - var $2385 = 0, $2386 = 0, $2387 = 0, $2388 = 0, $2389 = 0, $239 = 0, $2390 = 0, $2391 = 0, $2392 = 0, $2393 = 0, $2394 = 0, $2395 = 0, $2396 = 0, $2397 = 0, $2398 = 0, $2399 = 0, $24 = 0, $240 = 0, $2400 = 0, $2401 = 0; - var $2402 = 0, $2403 = 0, $2404 = 0, $2405 = 0, $2406 = 0, $2407 = 0, $2408 = 0, $2409 = 0, $241 = 0, $2410 = 0, $2411 = 0, $2412 = 0, $2413 = 0, $2414 = 0, $2415 = 0, $2416 = 0, $2417 = 0, $2418 = 0, $2419 = 0, $242 = 0; - var $2420 = 0, $2421 = 0, $2422 = 0, $2423 = 0, $2424 = 0, $2425 = 0, $2426 = 0, $2427 = 0, $2428 = 0, $2429 = 0, $243 = 0, $2430 = 0, $2431 = 0, $2432 = 0, $2433 = 0, $2434 = 0, $2435 = 0, $2436 = 0, $2437 = 0, $2438 = 0; - var $2439 = 0, $244 = 0, $2440 = 0, $2441 = 0, $2442 = 0, $2443 = 0, $2444 = 0, $2445 = 0, $2446 = 0, $2447 = 0, $2448 = 0, $2449 = 0, $245 = 0, $2450 = 0, $2451 = 0, $2452 = 0, $2453 = 0, $2454 = 0, $2455 = 0, $2456 = 0; - var $2457 = 0, $2458 = 0, $2459 = 0, $246 = 0, $2460 = 0, $2461 = 0, $2462 = 0, $2463 = 0, $2464 = 0, $2465 = 0, $2466 = 0, $2467 = 0, $2468 = 0, $2469 = 0, $247 = 0, $2470 = 0, $2471 = 0, $2472 = 0, $2473 = 0, $2474 = 0; - var $2475 = 0, $2476 = 0, $2477 = 0, $2478 = 0, $2479 = 0, $248 = 0, $2480 = 0, $2481 = 0, $2482 = 0, $2483 = 0, $2484 = 0, $2485 = 0, $2486 = 0, $2487 = 0, $2488 = 0, $2489 = 0, $249 = 0, $2490 = 0, $2491 = 0, $2492 = 0; - var $2493 = 0, $2494 = 0, $2495 = 0, $2496 = 0, $2497 = 0, $2498 = 0, $2499 = 0, $25 = 0, $250 = 0, $2500 = 0, $2501 = 0, $2502 = 0, $2503 = 0, $2504 = 0, $2505 = 0, $2506 = 0, $2507 = 0, $2508 = 0, $2509 = 0, $251 = 0; - var $2510 = 0, $2511 = 0, $2512 = 0, $2513 = 0, $2514 = 0, $2515 = 0, $2516 = 0, $2517 = 0, $2518 = 0, $2519 = 0, $252 = 0, $2520 = 0, $2521 = 0, $2522 = 0, $2523 = 0, $2524 = 0, $2525 = 0, $2526 = 0, $2527 = 0, $2528 = 0; - var $2529 = 0, $253 = 0, $2530 = 0, $2531 = 0, $2532 = 0, $2533 = 0, $2534 = 0, $2535 = 0, $2536 = 0, $2537 = 0, $2538 = 0, $2539 = 0, $254 = 0, $2540 = 0, $2541 = 0, $2542 = 0, $2543 = 0, $2544 = 0, $2545 = 0, $2546 = 0; - var $2547 = 0, $2548 = 0, $2549 = 0, $255 = 0, $2550 = 0, $2551 = 0, $2552 = 0, $2553 = 0, $2554 = 0, $2555 = 0, $2556 = 0, $2557 = 0, $2558 = 0, $2559 = 0, $256 = 0, $2560 = 0, $2561 = 0, $2562 = 0, $2563 = 0, $2564 = 0; - var $2565 = 0, $2566 = 0, $2567 = 0, $2568 = 0, $2569 = 0, $257 = 0, $2570 = 0, $2571 = 0, $2572 = 0, $2573 = 0, $2574 = 0, $2575 = 0, $2576 = 0, $2577 = 0, $2578 = 0, $2579 = 0, $258 = 0, $2580 = 0, $2581 = 0, $2582 = 0; - var $2583 = 0, $2584 = 0, $2585 = 0, $2586 = 0, $2587 = 0, $2588 = 0, $2589 = 0, $259 = 0, $2590 = 0, $2591 = 0, $2592 = 0, $2593 = 0, $2594 = 0, $2595 = 0, $2596 = 0, $2597 = 0, $2598 = 0, $2599 = 0, $26 = 0, $260 = 0; - var $2600 = 0, $2601 = 0, $2602 = 0, $2603 = 0, $2604 = 0, $2605 = 0, $2606 = 0, $2607 = 0, $2608 = 0, $2609 = 0, $261 = 0, $2610 = 0, $2611 = 0, $2612 = 0, $2613 = 0, $2614 = 0, $2615 = 0, $262 = 0, $263 = 0, $264 = 0; - var $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0; - var $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0; - var $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0; - var $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0; - var $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0; - var $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0; - var $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0; - var $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0; - var $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0; - var $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0; - var $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0; - var $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0; - var $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0; - var $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0; - var $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0; - var $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0; - var $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0; - var $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0; - var $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0; - var $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0; - var $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0; - var $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0; - var $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0; - var $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0; - var $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0; - var $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0; - var $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0; - var $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0; - var $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0; - var $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0; - var $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0; - var $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0; - var $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0; - var $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0; - var $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0; - var $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0; - var $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0; - var $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0; - var $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0; - var $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0; - var $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 208|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(208|0); - $2 = sp + 192|0; - $3 = sp + 184|0; - $4 = sp + 176|0; - $5 = sp + 168|0; - $6 = sp + 160|0; - $7 = sp + 152|0; - $8 = sp + 144|0; - $9 = sp + 136|0; - $10 = sp + 128|0; - $11 = sp + 120|0; - $12 = sp + 112|0; - $13 = sp + 104|0; - $14 = sp + 96|0; - $15 = sp + 88|0; - $16 = sp + 80|0; - $17 = sp + 72|0; - $18 = sp + 64|0; - $19 = sp + 56|0; - $20 = sp + 48|0; - $21 = sp + 40|0; - $22 = sp + 32|0; - $23 = sp + 24|0; - $24 = sp + 16|0; - $25 = sp + 8|0; - $26 = sp; - $1 = $0; - $27 = $1; - $28 = (_load_3($27)|0); - $29 = tempRet0; - $30 = 2097151 & $28; - $31 = $2; - $32 = $31; - HEAP32[$32>>2] = $30; - $33 = (($31) + 4)|0; - $34 = $33; - HEAP32[$34>>2] = 0; - $35 = $1; - $36 = ((($35)) + 2|0); - $37 = (_load_4($36)|0); - $38 = tempRet0; - $39 = (_bitshift64Lshr(($37|0),($38|0),5)|0); - $40 = tempRet0; - $41 = 2097151 & $39; - $42 = $3; - $43 = $42; - HEAP32[$43>>2] = $41; - $44 = (($42) + 4)|0; - $45 = $44; - HEAP32[$45>>2] = 0; - $46 = $1; - $47 = ((($46)) + 5|0); - $48 = (_load_3($47)|0); - $49 = tempRet0; - $50 = (_bitshift64Lshr(($48|0),($49|0),2)|0); - $51 = tempRet0; - $52 = 2097151 & $50; - $53 = $4; - $54 = $53; - HEAP32[$54>>2] = $52; - $55 = (($53) + 4)|0; - $56 = $55; - HEAP32[$56>>2] = 0; - $57 = $1; - $58 = ((($57)) + 7|0); - $59 = (_load_4($58)|0); - $60 = tempRet0; - $61 = (_bitshift64Lshr(($59|0),($60|0),7)|0); - $62 = tempRet0; - $63 = 2097151 & $61; - $64 = $5; - $65 = $64; - HEAP32[$65>>2] = $63; - $66 = (($64) + 4)|0; - $67 = $66; - HEAP32[$67>>2] = 0; - $68 = $1; - $69 = ((($68)) + 10|0); - $70 = (_load_4($69)|0); - $71 = tempRet0; - $72 = (_bitshift64Lshr(($70|0),($71|0),4)|0); - $73 = tempRet0; - $74 = 2097151 & $72; - $75 = $6; - $76 = $75; - HEAP32[$76>>2] = $74; - $77 = (($75) + 4)|0; - $78 = $77; - HEAP32[$78>>2] = 0; - $79 = $1; - $80 = ((($79)) + 13|0); - $81 = (_load_3($80)|0); - $82 = tempRet0; - $83 = (_bitshift64Lshr(($81|0),($82|0),1)|0); - $84 = tempRet0; - $85 = 2097151 & $83; - $86 = $7; - $87 = $86; - HEAP32[$87>>2] = $85; - $88 = (($86) + 4)|0; - $89 = $88; - HEAP32[$89>>2] = 0; - $90 = $1; - $91 = ((($90)) + 15|0); - $92 = (_load_4($91)|0); - $93 = tempRet0; - $94 = (_bitshift64Lshr(($92|0),($93|0),6)|0); - $95 = tempRet0; - $96 = 2097151 & $94; - $97 = $8; - $98 = $97; - HEAP32[$98>>2] = $96; - $99 = (($97) + 4)|0; - $100 = $99; - HEAP32[$100>>2] = 0; - $101 = $1; - $102 = ((($101)) + 18|0); - $103 = (_load_3($102)|0); - $104 = tempRet0; - $105 = (_bitshift64Lshr(($103|0),($104|0),3)|0); - $106 = tempRet0; - $107 = 2097151 & $105; - $108 = $9; - $109 = $108; - HEAP32[$109>>2] = $107; - $110 = (($108) + 4)|0; - $111 = $110; - HEAP32[$111>>2] = 0; - $112 = $1; - $113 = ((($112)) + 21|0); - $114 = (_load_3($113)|0); - $115 = tempRet0; - $116 = 2097151 & $114; - $117 = $10; - $118 = $117; - HEAP32[$118>>2] = $116; - $119 = (($117) + 4)|0; - $120 = $119; - HEAP32[$120>>2] = 0; - $121 = $1; - $122 = ((($121)) + 23|0); - $123 = (_load_4($122)|0); - $124 = tempRet0; - $125 = (_bitshift64Lshr(($123|0),($124|0),5)|0); - $126 = tempRet0; - $127 = 2097151 & $125; - $128 = $11; - $129 = $128; - HEAP32[$129>>2] = $127; - $130 = (($128) + 4)|0; - $131 = $130; - HEAP32[$131>>2] = 0; - $132 = $1; - $133 = ((($132)) + 26|0); - $134 = (_load_3($133)|0); - $135 = tempRet0; - $136 = (_bitshift64Lshr(($134|0),($135|0),2)|0); - $137 = tempRet0; - $138 = 2097151 & $136; - $139 = $12; - $140 = $139; - HEAP32[$140>>2] = $138; - $141 = (($139) + 4)|0; - $142 = $141; - HEAP32[$142>>2] = 0; - $143 = $1; - $144 = ((($143)) + 28|0); - $145 = (_load_4($144)|0); - $146 = tempRet0; - $147 = (_bitshift64Lshr(($145|0),($146|0),7)|0); - $148 = tempRet0; - $149 = $13; - $150 = $149; - HEAP32[$150>>2] = $147; - $151 = (($149) + 4)|0; - $152 = $151; - HEAP32[$152>>2] = $148; - $153 = $14; - $154 = $153; - HEAP32[$154>>2] = 0; - $155 = (($153) + 4)|0; - $156 = $155; - HEAP32[$156>>2] = 0; - $157 = $2; - $158 = $157; - $159 = HEAP32[$158>>2]|0; - $160 = (($157) + 4)|0; - $161 = $160; - $162 = HEAP32[$161>>2]|0; - $163 = (_i64Add(($159|0),($162|0),1048576,0)|0); - $164 = tempRet0; - $165 = (_bitshift64Ashr(($163|0),($164|0),21)|0); - $166 = tempRet0; - $167 = $15; - $168 = $167; - HEAP32[$168>>2] = $165; - $169 = (($167) + 4)|0; - $170 = $169; - HEAP32[$170>>2] = $166; - $171 = $15; - $172 = $171; - $173 = HEAP32[$172>>2]|0; - $174 = (($171) + 4)|0; - $175 = $174; - $176 = HEAP32[$175>>2]|0; - $177 = $3; - $178 = $177; - $179 = HEAP32[$178>>2]|0; - $180 = (($177) + 4)|0; - $181 = $180; - $182 = HEAP32[$181>>2]|0; - $183 = (_i64Add(($179|0),($182|0),($173|0),($176|0))|0); - $184 = tempRet0; - $185 = $3; - $186 = $185; - HEAP32[$186>>2] = $183; - $187 = (($185) + 4)|0; - $188 = $187; - HEAP32[$188>>2] = $184; - $189 = $15; - $190 = $189; - $191 = HEAP32[$190>>2]|0; - $192 = (($189) + 4)|0; - $193 = $192; - $194 = HEAP32[$193>>2]|0; - $195 = (_bitshift64Shl(($191|0),($194|0),21)|0); - $196 = tempRet0; - $197 = $2; - $198 = $197; - $199 = HEAP32[$198>>2]|0; - $200 = (($197) + 4)|0; - $201 = $200; - $202 = HEAP32[$201>>2]|0; - $203 = (_i64Subtract(($199|0),($202|0),($195|0),($196|0))|0); - $204 = tempRet0; - $205 = $2; - $206 = $205; - HEAP32[$206>>2] = $203; - $207 = (($205) + 4)|0; - $208 = $207; - HEAP32[$208>>2] = $204; - $209 = $4; - $210 = $209; - $211 = HEAP32[$210>>2]|0; - $212 = (($209) + 4)|0; - $213 = $212; - $214 = HEAP32[$213>>2]|0; - $215 = (_i64Add(($211|0),($214|0),1048576,0)|0); - $216 = tempRet0; - $217 = (_bitshift64Ashr(($215|0),($216|0),21)|0); - $218 = tempRet0; - $219 = $17; - $220 = $219; - HEAP32[$220>>2] = $217; - $221 = (($219) + 4)|0; - $222 = $221; - HEAP32[$222>>2] = $218; - $223 = $17; - $224 = $223; - $225 = HEAP32[$224>>2]|0; - $226 = (($223) + 4)|0; - $227 = $226; - $228 = HEAP32[$227>>2]|0; - $229 = $5; - $230 = $229; - $231 = HEAP32[$230>>2]|0; - $232 = (($229) + 4)|0; - $233 = $232; - $234 = HEAP32[$233>>2]|0; - $235 = (_i64Add(($231|0),($234|0),($225|0),($228|0))|0); - $236 = tempRet0; - $237 = $5; - $238 = $237; - HEAP32[$238>>2] = $235; - $239 = (($237) + 4)|0; - $240 = $239; - HEAP32[$240>>2] = $236; - $241 = $17; - $242 = $241; - $243 = HEAP32[$242>>2]|0; - $244 = (($241) + 4)|0; - $245 = $244; - $246 = HEAP32[$245>>2]|0; - $247 = (_bitshift64Shl(($243|0),($246|0),21)|0); - $248 = tempRet0; - $249 = $4; - $250 = $249; - $251 = HEAP32[$250>>2]|0; - $252 = (($249) + 4)|0; - $253 = $252; - $254 = HEAP32[$253>>2]|0; - $255 = (_i64Subtract(($251|0),($254|0),($247|0),($248|0))|0); - $256 = tempRet0; - $257 = $4; - $258 = $257; - HEAP32[$258>>2] = $255; - $259 = (($257) + 4)|0; - $260 = $259; - HEAP32[$260>>2] = $256; - $261 = $6; - $262 = $261; - $263 = HEAP32[$262>>2]|0; - $264 = (($261) + 4)|0; - $265 = $264; - $266 = HEAP32[$265>>2]|0; - $267 = (_i64Add(($263|0),($266|0),1048576,0)|0); - $268 = tempRet0; - $269 = (_bitshift64Ashr(($267|0),($268|0),21)|0); - $270 = tempRet0; - $271 = $19; - $272 = $271; - HEAP32[$272>>2] = $269; - $273 = (($271) + 4)|0; - $274 = $273; - HEAP32[$274>>2] = $270; - $275 = $19; - $276 = $275; - $277 = HEAP32[$276>>2]|0; - $278 = (($275) + 4)|0; - $279 = $278; - $280 = HEAP32[$279>>2]|0; - $281 = $7; - $282 = $281; - $283 = HEAP32[$282>>2]|0; - $284 = (($281) + 4)|0; - $285 = $284; - $286 = HEAP32[$285>>2]|0; - $287 = (_i64Add(($283|0),($286|0),($277|0),($280|0))|0); - $288 = tempRet0; - $289 = $7; - $290 = $289; - HEAP32[$290>>2] = $287; - $291 = (($289) + 4)|0; - $292 = $291; - HEAP32[$292>>2] = $288; - $293 = $19; - $294 = $293; - $295 = HEAP32[$294>>2]|0; - $296 = (($293) + 4)|0; - $297 = $296; - $298 = HEAP32[$297>>2]|0; - $299 = (_bitshift64Shl(($295|0),($298|0),21)|0); - $300 = tempRet0; - $301 = $6; - $302 = $301; - $303 = HEAP32[$302>>2]|0; - $304 = (($301) + 4)|0; - $305 = $304; - $306 = HEAP32[$305>>2]|0; - $307 = (_i64Subtract(($303|0),($306|0),($299|0),($300|0))|0); - $308 = tempRet0; - $309 = $6; - $310 = $309; - HEAP32[$310>>2] = $307; - $311 = (($309) + 4)|0; - $312 = $311; - HEAP32[$312>>2] = $308; - $313 = $8; - $314 = $313; - $315 = HEAP32[$314>>2]|0; - $316 = (($313) + 4)|0; - $317 = $316; - $318 = HEAP32[$317>>2]|0; - $319 = (_i64Add(($315|0),($318|0),1048576,0)|0); - $320 = tempRet0; - $321 = (_bitshift64Ashr(($319|0),($320|0),21)|0); - $322 = tempRet0; - $323 = $21; - $324 = $323; - HEAP32[$324>>2] = $321; - $325 = (($323) + 4)|0; - $326 = $325; - HEAP32[$326>>2] = $322; - $327 = $21; - $328 = $327; - $329 = HEAP32[$328>>2]|0; - $330 = (($327) + 4)|0; - $331 = $330; - $332 = HEAP32[$331>>2]|0; - $333 = $9; - $334 = $333; - $335 = HEAP32[$334>>2]|0; - $336 = (($333) + 4)|0; - $337 = $336; - $338 = HEAP32[$337>>2]|0; - $339 = (_i64Add(($335|0),($338|0),($329|0),($332|0))|0); - $340 = tempRet0; - $341 = $9; - $342 = $341; - HEAP32[$342>>2] = $339; - $343 = (($341) + 4)|0; - $344 = $343; - HEAP32[$344>>2] = $340; - $345 = $21; - $346 = $345; - $347 = HEAP32[$346>>2]|0; - $348 = (($345) + 4)|0; - $349 = $348; - $350 = HEAP32[$349>>2]|0; - $351 = (_bitshift64Shl(($347|0),($350|0),21)|0); - $352 = tempRet0; - $353 = $8; - $354 = $353; - $355 = HEAP32[$354>>2]|0; - $356 = (($353) + 4)|0; - $357 = $356; - $358 = HEAP32[$357>>2]|0; - $359 = (_i64Subtract(($355|0),($358|0),($351|0),($352|0))|0); - $360 = tempRet0; - $361 = $8; - $362 = $361; - HEAP32[$362>>2] = $359; - $363 = (($361) + 4)|0; - $364 = $363; - HEAP32[$364>>2] = $360; - $365 = $10; - $366 = $365; - $367 = HEAP32[$366>>2]|0; - $368 = (($365) + 4)|0; - $369 = $368; - $370 = HEAP32[$369>>2]|0; - $371 = (_i64Add(($367|0),($370|0),1048576,0)|0); - $372 = tempRet0; - $373 = (_bitshift64Ashr(($371|0),($372|0),21)|0); - $374 = tempRet0; - $375 = $23; - $376 = $375; - HEAP32[$376>>2] = $373; - $377 = (($375) + 4)|0; - $378 = $377; - HEAP32[$378>>2] = $374; - $379 = $23; - $380 = $379; - $381 = HEAP32[$380>>2]|0; - $382 = (($379) + 4)|0; - $383 = $382; - $384 = HEAP32[$383>>2]|0; - $385 = $11; - $386 = $385; - $387 = HEAP32[$386>>2]|0; - $388 = (($385) + 4)|0; - $389 = $388; - $390 = HEAP32[$389>>2]|0; - $391 = (_i64Add(($387|0),($390|0),($381|0),($384|0))|0); - $392 = tempRet0; - $393 = $11; - $394 = $393; - HEAP32[$394>>2] = $391; - $395 = (($393) + 4)|0; - $396 = $395; - HEAP32[$396>>2] = $392; - $397 = $23; - $398 = $397; - $399 = HEAP32[$398>>2]|0; - $400 = (($397) + 4)|0; - $401 = $400; - $402 = HEAP32[$401>>2]|0; - $403 = (_bitshift64Shl(($399|0),($402|0),21)|0); - $404 = tempRet0; - $405 = $10; - $406 = $405; - $407 = HEAP32[$406>>2]|0; - $408 = (($405) + 4)|0; - $409 = $408; - $410 = HEAP32[$409>>2]|0; - $411 = (_i64Subtract(($407|0),($410|0),($403|0),($404|0))|0); - $412 = tempRet0; - $413 = $10; - $414 = $413; - HEAP32[$414>>2] = $411; - $415 = (($413) + 4)|0; - $416 = $415; - HEAP32[$416>>2] = $412; - $417 = $12; - $418 = $417; - $419 = HEAP32[$418>>2]|0; - $420 = (($417) + 4)|0; - $421 = $420; - $422 = HEAP32[$421>>2]|0; - $423 = (_i64Add(($419|0),($422|0),1048576,0)|0); - $424 = tempRet0; - $425 = (_bitshift64Ashr(($423|0),($424|0),21)|0); - $426 = tempRet0; - $427 = $25; - $428 = $427; - HEAP32[$428>>2] = $425; - $429 = (($427) + 4)|0; - $430 = $429; - HEAP32[$430>>2] = $426; - $431 = $25; - $432 = $431; - $433 = HEAP32[$432>>2]|0; - $434 = (($431) + 4)|0; - $435 = $434; - $436 = HEAP32[$435>>2]|0; - $437 = $13; - $438 = $437; - $439 = HEAP32[$438>>2]|0; - $440 = (($437) + 4)|0; - $441 = $440; - $442 = HEAP32[$441>>2]|0; - $443 = (_i64Add(($439|0),($442|0),($433|0),($436|0))|0); - $444 = tempRet0; - $445 = $13; - $446 = $445; - HEAP32[$446>>2] = $443; - $447 = (($445) + 4)|0; - $448 = $447; - HEAP32[$448>>2] = $444; - $449 = $25; - $450 = $449; - $451 = HEAP32[$450>>2]|0; - $452 = (($449) + 4)|0; - $453 = $452; - $454 = HEAP32[$453>>2]|0; - $455 = (_bitshift64Shl(($451|0),($454|0),21)|0); - $456 = tempRet0; - $457 = $12; - $458 = $457; - $459 = HEAP32[$458>>2]|0; - $460 = (($457) + 4)|0; - $461 = $460; - $462 = HEAP32[$461>>2]|0; - $463 = (_i64Subtract(($459|0),($462|0),($455|0),($456|0))|0); - $464 = tempRet0; - $465 = $12; - $466 = $465; - HEAP32[$466>>2] = $463; - $467 = (($465) + 4)|0; - $468 = $467; - HEAP32[$468>>2] = $464; - $469 = $3; - $470 = $469; - $471 = HEAP32[$470>>2]|0; - $472 = (($469) + 4)|0; - $473 = $472; - $474 = HEAP32[$473>>2]|0; - $475 = (_i64Add(($471|0),($474|0),1048576,0)|0); - $476 = tempRet0; - $477 = (_bitshift64Ashr(($475|0),($476|0),21)|0); - $478 = tempRet0; - $479 = $16; - $480 = $479; - HEAP32[$480>>2] = $477; - $481 = (($479) + 4)|0; - $482 = $481; - HEAP32[$482>>2] = $478; - $483 = $16; - $484 = $483; - $485 = HEAP32[$484>>2]|0; - $486 = (($483) + 4)|0; - $487 = $486; - $488 = HEAP32[$487>>2]|0; - $489 = $4; - $490 = $489; - $491 = HEAP32[$490>>2]|0; - $492 = (($489) + 4)|0; - $493 = $492; - $494 = HEAP32[$493>>2]|0; - $495 = (_i64Add(($491|0),($494|0),($485|0),($488|0))|0); - $496 = tempRet0; - $497 = $4; - $498 = $497; - HEAP32[$498>>2] = $495; - $499 = (($497) + 4)|0; - $500 = $499; - HEAP32[$500>>2] = $496; - $501 = $16; - $502 = $501; - $503 = HEAP32[$502>>2]|0; - $504 = (($501) + 4)|0; - $505 = $504; - $506 = HEAP32[$505>>2]|0; - $507 = (_bitshift64Shl(($503|0),($506|0),21)|0); - $508 = tempRet0; - $509 = $3; - $510 = $509; - $511 = HEAP32[$510>>2]|0; - $512 = (($509) + 4)|0; - $513 = $512; - $514 = HEAP32[$513>>2]|0; - $515 = (_i64Subtract(($511|0),($514|0),($507|0),($508|0))|0); - $516 = tempRet0; - $517 = $3; - $518 = $517; - HEAP32[$518>>2] = $515; - $519 = (($517) + 4)|0; - $520 = $519; - HEAP32[$520>>2] = $516; - $521 = $5; - $522 = $521; - $523 = HEAP32[$522>>2]|0; - $524 = (($521) + 4)|0; - $525 = $524; - $526 = HEAP32[$525>>2]|0; - $527 = (_i64Add(($523|0),($526|0),1048576,0)|0); - $528 = tempRet0; - $529 = (_bitshift64Ashr(($527|0),($528|0),21)|0); - $530 = tempRet0; - $531 = $18; - $532 = $531; - HEAP32[$532>>2] = $529; - $533 = (($531) + 4)|0; - $534 = $533; - HEAP32[$534>>2] = $530; - $535 = $18; - $536 = $535; - $537 = HEAP32[$536>>2]|0; - $538 = (($535) + 4)|0; - $539 = $538; - $540 = HEAP32[$539>>2]|0; - $541 = $6; - $542 = $541; - $543 = HEAP32[$542>>2]|0; - $544 = (($541) + 4)|0; - $545 = $544; - $546 = HEAP32[$545>>2]|0; - $547 = (_i64Add(($543|0),($546|0),($537|0),($540|0))|0); - $548 = tempRet0; - $549 = $6; - $550 = $549; - HEAP32[$550>>2] = $547; - $551 = (($549) + 4)|0; - $552 = $551; - HEAP32[$552>>2] = $548; - $553 = $18; - $554 = $553; - $555 = HEAP32[$554>>2]|0; - $556 = (($553) + 4)|0; - $557 = $556; - $558 = HEAP32[$557>>2]|0; - $559 = (_bitshift64Shl(($555|0),($558|0),21)|0); - $560 = tempRet0; - $561 = $5; - $562 = $561; - $563 = HEAP32[$562>>2]|0; - $564 = (($561) + 4)|0; - $565 = $564; - $566 = HEAP32[$565>>2]|0; - $567 = (_i64Subtract(($563|0),($566|0),($559|0),($560|0))|0); - $568 = tempRet0; - $569 = $5; - $570 = $569; - HEAP32[$570>>2] = $567; - $571 = (($569) + 4)|0; - $572 = $571; - HEAP32[$572>>2] = $568; - $573 = $7; - $574 = $573; - $575 = HEAP32[$574>>2]|0; - $576 = (($573) + 4)|0; - $577 = $576; - $578 = HEAP32[$577>>2]|0; - $579 = (_i64Add(($575|0),($578|0),1048576,0)|0); - $580 = tempRet0; - $581 = (_bitshift64Ashr(($579|0),($580|0),21)|0); - $582 = tempRet0; - $583 = $20; - $584 = $583; - HEAP32[$584>>2] = $581; - $585 = (($583) + 4)|0; - $586 = $585; - HEAP32[$586>>2] = $582; - $587 = $20; - $588 = $587; - $589 = HEAP32[$588>>2]|0; - $590 = (($587) + 4)|0; - $591 = $590; - $592 = HEAP32[$591>>2]|0; - $593 = $8; - $594 = $593; - $595 = HEAP32[$594>>2]|0; - $596 = (($593) + 4)|0; - $597 = $596; - $598 = HEAP32[$597>>2]|0; - $599 = (_i64Add(($595|0),($598|0),($589|0),($592|0))|0); - $600 = tempRet0; - $601 = $8; - $602 = $601; - HEAP32[$602>>2] = $599; - $603 = (($601) + 4)|0; - $604 = $603; - HEAP32[$604>>2] = $600; - $605 = $20; - $606 = $605; - $607 = HEAP32[$606>>2]|0; - $608 = (($605) + 4)|0; - $609 = $608; - $610 = HEAP32[$609>>2]|0; - $611 = (_bitshift64Shl(($607|0),($610|0),21)|0); - $612 = tempRet0; - $613 = $7; - $614 = $613; - $615 = HEAP32[$614>>2]|0; - $616 = (($613) + 4)|0; - $617 = $616; - $618 = HEAP32[$617>>2]|0; - $619 = (_i64Subtract(($615|0),($618|0),($611|0),($612|0))|0); - $620 = tempRet0; - $621 = $7; - $622 = $621; - HEAP32[$622>>2] = $619; - $623 = (($621) + 4)|0; - $624 = $623; - HEAP32[$624>>2] = $620; - $625 = $9; - $626 = $625; - $627 = HEAP32[$626>>2]|0; - $628 = (($625) + 4)|0; - $629 = $628; - $630 = HEAP32[$629>>2]|0; - $631 = (_i64Add(($627|0),($630|0),1048576,0)|0); - $632 = tempRet0; - $633 = (_bitshift64Ashr(($631|0),($632|0),21)|0); - $634 = tempRet0; - $635 = $22; - $636 = $635; - HEAP32[$636>>2] = $633; - $637 = (($635) + 4)|0; - $638 = $637; - HEAP32[$638>>2] = $634; - $639 = $22; - $640 = $639; - $641 = HEAP32[$640>>2]|0; - $642 = (($639) + 4)|0; - $643 = $642; - $644 = HEAP32[$643>>2]|0; - $645 = $10; - $646 = $645; - $647 = HEAP32[$646>>2]|0; - $648 = (($645) + 4)|0; - $649 = $648; - $650 = HEAP32[$649>>2]|0; - $651 = (_i64Add(($647|0),($650|0),($641|0),($644|0))|0); - $652 = tempRet0; - $653 = $10; - $654 = $653; - HEAP32[$654>>2] = $651; - $655 = (($653) + 4)|0; - $656 = $655; - HEAP32[$656>>2] = $652; - $657 = $22; - $658 = $657; - $659 = HEAP32[$658>>2]|0; - $660 = (($657) + 4)|0; - $661 = $660; - $662 = HEAP32[$661>>2]|0; - $663 = (_bitshift64Shl(($659|0),($662|0),21)|0); - $664 = tempRet0; - $665 = $9; - $666 = $665; - $667 = HEAP32[$666>>2]|0; - $668 = (($665) + 4)|0; - $669 = $668; - $670 = HEAP32[$669>>2]|0; - $671 = (_i64Subtract(($667|0),($670|0),($663|0),($664|0))|0); - $672 = tempRet0; - $673 = $9; - $674 = $673; - HEAP32[$674>>2] = $671; - $675 = (($673) + 4)|0; - $676 = $675; - HEAP32[$676>>2] = $672; - $677 = $11; - $678 = $677; - $679 = HEAP32[$678>>2]|0; - $680 = (($677) + 4)|0; - $681 = $680; - $682 = HEAP32[$681>>2]|0; - $683 = (_i64Add(($679|0),($682|0),1048576,0)|0); - $684 = tempRet0; - $685 = (_bitshift64Ashr(($683|0),($684|0),21)|0); - $686 = tempRet0; - $687 = $24; - $688 = $687; - HEAP32[$688>>2] = $685; - $689 = (($687) + 4)|0; - $690 = $689; - HEAP32[$690>>2] = $686; - $691 = $24; - $692 = $691; - $693 = HEAP32[$692>>2]|0; - $694 = (($691) + 4)|0; - $695 = $694; - $696 = HEAP32[$695>>2]|0; - $697 = $12; - $698 = $697; - $699 = HEAP32[$698>>2]|0; - $700 = (($697) + 4)|0; - $701 = $700; - $702 = HEAP32[$701>>2]|0; - $703 = (_i64Add(($699|0),($702|0),($693|0),($696|0))|0); - $704 = tempRet0; - $705 = $12; - $706 = $705; - HEAP32[$706>>2] = $703; - $707 = (($705) + 4)|0; - $708 = $707; - HEAP32[$708>>2] = $704; - $709 = $24; - $710 = $709; - $711 = HEAP32[$710>>2]|0; - $712 = (($709) + 4)|0; - $713 = $712; - $714 = HEAP32[$713>>2]|0; - $715 = (_bitshift64Shl(($711|0),($714|0),21)|0); - $716 = tempRet0; - $717 = $11; - $718 = $717; - $719 = HEAP32[$718>>2]|0; - $720 = (($717) + 4)|0; - $721 = $720; - $722 = HEAP32[$721>>2]|0; - $723 = (_i64Subtract(($719|0),($722|0),($715|0),($716|0))|0); - $724 = tempRet0; - $725 = $11; - $726 = $725; - HEAP32[$726>>2] = $723; - $727 = (($725) + 4)|0; - $728 = $727; - HEAP32[$728>>2] = $724; - $729 = $13; - $730 = $729; - $731 = HEAP32[$730>>2]|0; - $732 = (($729) + 4)|0; - $733 = $732; - $734 = HEAP32[$733>>2]|0; - $735 = (_i64Add(($731|0),($734|0),1048576,0)|0); - $736 = tempRet0; - $737 = (_bitshift64Ashr(($735|0),($736|0),21)|0); - $738 = tempRet0; - $739 = $26; - $740 = $739; - HEAP32[$740>>2] = $737; - $741 = (($739) + 4)|0; - $742 = $741; - HEAP32[$742>>2] = $738; - $743 = $26; - $744 = $743; - $745 = HEAP32[$744>>2]|0; - $746 = (($743) + 4)|0; - $747 = $746; - $748 = HEAP32[$747>>2]|0; - $749 = $14; - $750 = $749; - $751 = HEAP32[$750>>2]|0; - $752 = (($749) + 4)|0; - $753 = $752; - $754 = HEAP32[$753>>2]|0; - $755 = (_i64Add(($751|0),($754|0),($745|0),($748|0))|0); - $756 = tempRet0; - $757 = $14; - $758 = $757; - HEAP32[$758>>2] = $755; - $759 = (($757) + 4)|0; - $760 = $759; - HEAP32[$760>>2] = $756; - $761 = $26; - $762 = $761; - $763 = HEAP32[$762>>2]|0; - $764 = (($761) + 4)|0; - $765 = $764; - $766 = HEAP32[$765>>2]|0; - $767 = (_bitshift64Shl(($763|0),($766|0),21)|0); - $768 = tempRet0; - $769 = $13; - $770 = $769; - $771 = HEAP32[$770>>2]|0; - $772 = (($769) + 4)|0; - $773 = $772; - $774 = HEAP32[$773>>2]|0; - $775 = (_i64Subtract(($771|0),($774|0),($767|0),($768|0))|0); - $776 = tempRet0; - $777 = $13; - $778 = $777; - HEAP32[$778>>2] = $775; - $779 = (($777) + 4)|0; - $780 = $779; - HEAP32[$780>>2] = $776; - $781 = $14; - $782 = $781; - $783 = HEAP32[$782>>2]|0; - $784 = (($781) + 4)|0; - $785 = $784; - $786 = HEAP32[$785>>2]|0; - $787 = (___muldi3(($783|0),($786|0),666643,0)|0); - $788 = tempRet0; - $789 = $2; - $790 = $789; - $791 = HEAP32[$790>>2]|0; - $792 = (($789) + 4)|0; - $793 = $792; - $794 = HEAP32[$793>>2]|0; - $795 = (_i64Add(($791|0),($794|0),($787|0),($788|0))|0); - $796 = tempRet0; - $797 = $2; - $798 = $797; - HEAP32[$798>>2] = $795; - $799 = (($797) + 4)|0; - $800 = $799; - HEAP32[$800>>2] = $796; - $801 = $14; - $802 = $801; - $803 = HEAP32[$802>>2]|0; - $804 = (($801) + 4)|0; - $805 = $804; - $806 = HEAP32[$805>>2]|0; - $807 = (___muldi3(($803|0),($806|0),470296,0)|0); - $808 = tempRet0; - $809 = $3; - $810 = $809; - $811 = HEAP32[$810>>2]|0; - $812 = (($809) + 4)|0; - $813 = $812; - $814 = HEAP32[$813>>2]|0; - $815 = (_i64Add(($811|0),($814|0),($807|0),($808|0))|0); - $816 = tempRet0; - $817 = $3; - $818 = $817; - HEAP32[$818>>2] = $815; - $819 = (($817) + 4)|0; - $820 = $819; - HEAP32[$820>>2] = $816; - $821 = $14; - $822 = $821; - $823 = HEAP32[$822>>2]|0; - $824 = (($821) + 4)|0; - $825 = $824; - $826 = HEAP32[$825>>2]|0; - $827 = (___muldi3(($823|0),($826|0),654183,0)|0); - $828 = tempRet0; - $829 = $4; - $830 = $829; - $831 = HEAP32[$830>>2]|0; - $832 = (($829) + 4)|0; - $833 = $832; - $834 = HEAP32[$833>>2]|0; - $835 = (_i64Add(($831|0),($834|0),($827|0),($828|0))|0); - $836 = tempRet0; - $837 = $4; - $838 = $837; - HEAP32[$838>>2] = $835; - $839 = (($837) + 4)|0; - $840 = $839; - HEAP32[$840>>2] = $836; - $841 = $14; - $842 = $841; - $843 = HEAP32[$842>>2]|0; - $844 = (($841) + 4)|0; - $845 = $844; - $846 = HEAP32[$845>>2]|0; - $847 = (___muldi3(($843|0),($846|0),997805,0)|0); - $848 = tempRet0; - $849 = $5; - $850 = $849; - $851 = HEAP32[$850>>2]|0; - $852 = (($849) + 4)|0; - $853 = $852; - $854 = HEAP32[$853>>2]|0; - $855 = (_i64Subtract(($851|0),($854|0),($847|0),($848|0))|0); - $856 = tempRet0; - $857 = $5; - $858 = $857; - HEAP32[$858>>2] = $855; - $859 = (($857) + 4)|0; - $860 = $859; - HEAP32[$860>>2] = $856; - $861 = $14; - $862 = $861; - $863 = HEAP32[$862>>2]|0; - $864 = (($861) + 4)|0; - $865 = $864; - $866 = HEAP32[$865>>2]|0; - $867 = (___muldi3(($863|0),($866|0),136657,0)|0); - $868 = tempRet0; - $869 = $6; - $870 = $869; - $871 = HEAP32[$870>>2]|0; - $872 = (($869) + 4)|0; - $873 = $872; - $874 = HEAP32[$873>>2]|0; - $875 = (_i64Add(($871|0),($874|0),($867|0),($868|0))|0); - $876 = tempRet0; - $877 = $6; - $878 = $877; - HEAP32[$878>>2] = $875; - $879 = (($877) + 4)|0; - $880 = $879; - HEAP32[$880>>2] = $876; - $881 = $14; - $882 = $881; - $883 = HEAP32[$882>>2]|0; - $884 = (($881) + 4)|0; - $885 = $884; - $886 = HEAP32[$885>>2]|0; - $887 = (___muldi3(($883|0),($886|0),683901,0)|0); - $888 = tempRet0; - $889 = $7; - $890 = $889; - $891 = HEAP32[$890>>2]|0; - $892 = (($889) + 4)|0; - $893 = $892; - $894 = HEAP32[$893>>2]|0; - $895 = (_i64Subtract(($891|0),($894|0),($887|0),($888|0))|0); - $896 = tempRet0; - $897 = $7; - $898 = $897; - HEAP32[$898>>2] = $895; - $899 = (($897) + 4)|0; - $900 = $899; - HEAP32[$900>>2] = $896; - $901 = $14; - $902 = $901; - HEAP32[$902>>2] = 0; - $903 = (($901) + 4)|0; - $904 = $903; - HEAP32[$904>>2] = 0; - $905 = $2; - $906 = $905; - $907 = HEAP32[$906>>2]|0; - $908 = (($905) + 4)|0; - $909 = $908; - $910 = HEAP32[$909>>2]|0; - $911 = (_bitshift64Ashr(($907|0),($910|0),21)|0); - $912 = tempRet0; - $913 = $15; - $914 = $913; - HEAP32[$914>>2] = $911; - $915 = (($913) + 4)|0; - $916 = $915; - HEAP32[$916>>2] = $912; - $917 = $15; - $918 = $917; - $919 = HEAP32[$918>>2]|0; - $920 = (($917) + 4)|0; - $921 = $920; - $922 = HEAP32[$921>>2]|0; - $923 = $3; - $924 = $923; - $925 = HEAP32[$924>>2]|0; - $926 = (($923) + 4)|0; - $927 = $926; - $928 = HEAP32[$927>>2]|0; - $929 = (_i64Add(($925|0),($928|0),($919|0),($922|0))|0); - $930 = tempRet0; - $931 = $3; - $932 = $931; - HEAP32[$932>>2] = $929; - $933 = (($931) + 4)|0; - $934 = $933; - HEAP32[$934>>2] = $930; - $935 = $15; - $936 = $935; - $937 = HEAP32[$936>>2]|0; - $938 = (($935) + 4)|0; - $939 = $938; - $940 = HEAP32[$939>>2]|0; - $941 = (_bitshift64Shl(($937|0),($940|0),21)|0); - $942 = tempRet0; - $943 = $2; - $944 = $943; - $945 = HEAP32[$944>>2]|0; - $946 = (($943) + 4)|0; - $947 = $946; - $948 = HEAP32[$947>>2]|0; - $949 = (_i64Subtract(($945|0),($948|0),($941|0),($942|0))|0); - $950 = tempRet0; - $951 = $2; - $952 = $951; - HEAP32[$952>>2] = $949; - $953 = (($951) + 4)|0; - $954 = $953; - HEAP32[$954>>2] = $950; - $955 = $3; - $956 = $955; - $957 = HEAP32[$956>>2]|0; - $958 = (($955) + 4)|0; - $959 = $958; - $960 = HEAP32[$959>>2]|0; - $961 = (_bitshift64Ashr(($957|0),($960|0),21)|0); - $962 = tempRet0; - $963 = $16; - $964 = $963; - HEAP32[$964>>2] = $961; - $965 = (($963) + 4)|0; - $966 = $965; - HEAP32[$966>>2] = $962; - $967 = $16; - $968 = $967; - $969 = HEAP32[$968>>2]|0; - $970 = (($967) + 4)|0; - $971 = $970; - $972 = HEAP32[$971>>2]|0; - $973 = $4; - $974 = $973; - $975 = HEAP32[$974>>2]|0; - $976 = (($973) + 4)|0; - $977 = $976; - $978 = HEAP32[$977>>2]|0; - $979 = (_i64Add(($975|0),($978|0),($969|0),($972|0))|0); - $980 = tempRet0; - $981 = $4; - $982 = $981; - HEAP32[$982>>2] = $979; - $983 = (($981) + 4)|0; - $984 = $983; - HEAP32[$984>>2] = $980; - $985 = $16; - $986 = $985; - $987 = HEAP32[$986>>2]|0; - $988 = (($985) + 4)|0; - $989 = $988; - $990 = HEAP32[$989>>2]|0; - $991 = (_bitshift64Shl(($987|0),($990|0),21)|0); - $992 = tempRet0; - $993 = $3; - $994 = $993; - $995 = HEAP32[$994>>2]|0; - $996 = (($993) + 4)|0; - $997 = $996; - $998 = HEAP32[$997>>2]|0; - $999 = (_i64Subtract(($995|0),($998|0),($991|0),($992|0))|0); - $1000 = tempRet0; - $1001 = $3; - $1002 = $1001; - HEAP32[$1002>>2] = $999; - $1003 = (($1001) + 4)|0; - $1004 = $1003; - HEAP32[$1004>>2] = $1000; - $1005 = $4; - $1006 = $1005; - $1007 = HEAP32[$1006>>2]|0; - $1008 = (($1005) + 4)|0; - $1009 = $1008; - $1010 = HEAP32[$1009>>2]|0; - $1011 = (_bitshift64Ashr(($1007|0),($1010|0),21)|0); - $1012 = tempRet0; - $1013 = $17; - $1014 = $1013; - HEAP32[$1014>>2] = $1011; - $1015 = (($1013) + 4)|0; - $1016 = $1015; - HEAP32[$1016>>2] = $1012; - $1017 = $17; - $1018 = $1017; - $1019 = HEAP32[$1018>>2]|0; - $1020 = (($1017) + 4)|0; - $1021 = $1020; - $1022 = HEAP32[$1021>>2]|0; - $1023 = $5; - $1024 = $1023; - $1025 = HEAP32[$1024>>2]|0; - $1026 = (($1023) + 4)|0; - $1027 = $1026; - $1028 = HEAP32[$1027>>2]|0; - $1029 = (_i64Add(($1025|0),($1028|0),($1019|0),($1022|0))|0); - $1030 = tempRet0; - $1031 = $5; - $1032 = $1031; - HEAP32[$1032>>2] = $1029; - $1033 = (($1031) + 4)|0; - $1034 = $1033; - HEAP32[$1034>>2] = $1030; - $1035 = $17; - $1036 = $1035; - $1037 = HEAP32[$1036>>2]|0; - $1038 = (($1035) + 4)|0; - $1039 = $1038; - $1040 = HEAP32[$1039>>2]|0; - $1041 = (_bitshift64Shl(($1037|0),($1040|0),21)|0); - $1042 = tempRet0; - $1043 = $4; - $1044 = $1043; - $1045 = HEAP32[$1044>>2]|0; - $1046 = (($1043) + 4)|0; - $1047 = $1046; - $1048 = HEAP32[$1047>>2]|0; - $1049 = (_i64Subtract(($1045|0),($1048|0),($1041|0),($1042|0))|0); - $1050 = tempRet0; - $1051 = $4; - $1052 = $1051; - HEAP32[$1052>>2] = $1049; - $1053 = (($1051) + 4)|0; - $1054 = $1053; - HEAP32[$1054>>2] = $1050; - $1055 = $5; - $1056 = $1055; - $1057 = HEAP32[$1056>>2]|0; - $1058 = (($1055) + 4)|0; - $1059 = $1058; - $1060 = HEAP32[$1059>>2]|0; - $1061 = (_bitshift64Ashr(($1057|0),($1060|0),21)|0); - $1062 = tempRet0; - $1063 = $18; - $1064 = $1063; - HEAP32[$1064>>2] = $1061; - $1065 = (($1063) + 4)|0; - $1066 = $1065; - HEAP32[$1066>>2] = $1062; - $1067 = $18; - $1068 = $1067; - $1069 = HEAP32[$1068>>2]|0; - $1070 = (($1067) + 4)|0; - $1071 = $1070; - $1072 = HEAP32[$1071>>2]|0; - $1073 = $6; - $1074 = $1073; - $1075 = HEAP32[$1074>>2]|0; - $1076 = (($1073) + 4)|0; - $1077 = $1076; - $1078 = HEAP32[$1077>>2]|0; - $1079 = (_i64Add(($1075|0),($1078|0),($1069|0),($1072|0))|0); - $1080 = tempRet0; - $1081 = $6; - $1082 = $1081; - HEAP32[$1082>>2] = $1079; - $1083 = (($1081) + 4)|0; - $1084 = $1083; - HEAP32[$1084>>2] = $1080; - $1085 = $18; - $1086 = $1085; - $1087 = HEAP32[$1086>>2]|0; - $1088 = (($1085) + 4)|0; - $1089 = $1088; - $1090 = HEAP32[$1089>>2]|0; - $1091 = (_bitshift64Shl(($1087|0),($1090|0),21)|0); - $1092 = tempRet0; - $1093 = $5; - $1094 = $1093; - $1095 = HEAP32[$1094>>2]|0; - $1096 = (($1093) + 4)|0; - $1097 = $1096; - $1098 = HEAP32[$1097>>2]|0; - $1099 = (_i64Subtract(($1095|0),($1098|0),($1091|0),($1092|0))|0); - $1100 = tempRet0; - $1101 = $5; - $1102 = $1101; - HEAP32[$1102>>2] = $1099; - $1103 = (($1101) + 4)|0; - $1104 = $1103; - HEAP32[$1104>>2] = $1100; - $1105 = $6; - $1106 = $1105; - $1107 = HEAP32[$1106>>2]|0; - $1108 = (($1105) + 4)|0; - $1109 = $1108; - $1110 = HEAP32[$1109>>2]|0; - $1111 = (_bitshift64Ashr(($1107|0),($1110|0),21)|0); - $1112 = tempRet0; - $1113 = $19; - $1114 = $1113; - HEAP32[$1114>>2] = $1111; - $1115 = (($1113) + 4)|0; - $1116 = $1115; - HEAP32[$1116>>2] = $1112; - $1117 = $19; - $1118 = $1117; - $1119 = HEAP32[$1118>>2]|0; - $1120 = (($1117) + 4)|0; - $1121 = $1120; - $1122 = HEAP32[$1121>>2]|0; - $1123 = $7; - $1124 = $1123; - $1125 = HEAP32[$1124>>2]|0; - $1126 = (($1123) + 4)|0; - $1127 = $1126; - $1128 = HEAP32[$1127>>2]|0; - $1129 = (_i64Add(($1125|0),($1128|0),($1119|0),($1122|0))|0); - $1130 = tempRet0; - $1131 = $7; - $1132 = $1131; - HEAP32[$1132>>2] = $1129; - $1133 = (($1131) + 4)|0; - $1134 = $1133; - HEAP32[$1134>>2] = $1130; - $1135 = $19; - $1136 = $1135; - $1137 = HEAP32[$1136>>2]|0; - $1138 = (($1135) + 4)|0; - $1139 = $1138; - $1140 = HEAP32[$1139>>2]|0; - $1141 = (_bitshift64Shl(($1137|0),($1140|0),21)|0); - $1142 = tempRet0; - $1143 = $6; - $1144 = $1143; - $1145 = HEAP32[$1144>>2]|0; - $1146 = (($1143) + 4)|0; - $1147 = $1146; - $1148 = HEAP32[$1147>>2]|0; - $1149 = (_i64Subtract(($1145|0),($1148|0),($1141|0),($1142|0))|0); - $1150 = tempRet0; - $1151 = $6; - $1152 = $1151; - HEAP32[$1152>>2] = $1149; - $1153 = (($1151) + 4)|0; - $1154 = $1153; - HEAP32[$1154>>2] = $1150; - $1155 = $7; - $1156 = $1155; - $1157 = HEAP32[$1156>>2]|0; - $1158 = (($1155) + 4)|0; - $1159 = $1158; - $1160 = HEAP32[$1159>>2]|0; - $1161 = (_bitshift64Ashr(($1157|0),($1160|0),21)|0); - $1162 = tempRet0; - $1163 = $20; - $1164 = $1163; - HEAP32[$1164>>2] = $1161; - $1165 = (($1163) + 4)|0; - $1166 = $1165; - HEAP32[$1166>>2] = $1162; - $1167 = $20; - $1168 = $1167; - $1169 = HEAP32[$1168>>2]|0; - $1170 = (($1167) + 4)|0; - $1171 = $1170; - $1172 = HEAP32[$1171>>2]|0; - $1173 = $8; - $1174 = $1173; - $1175 = HEAP32[$1174>>2]|0; - $1176 = (($1173) + 4)|0; - $1177 = $1176; - $1178 = HEAP32[$1177>>2]|0; - $1179 = (_i64Add(($1175|0),($1178|0),($1169|0),($1172|0))|0); - $1180 = tempRet0; - $1181 = $8; - $1182 = $1181; - HEAP32[$1182>>2] = $1179; - $1183 = (($1181) + 4)|0; - $1184 = $1183; - HEAP32[$1184>>2] = $1180; - $1185 = $20; - $1186 = $1185; - $1187 = HEAP32[$1186>>2]|0; - $1188 = (($1185) + 4)|0; - $1189 = $1188; - $1190 = HEAP32[$1189>>2]|0; - $1191 = (_bitshift64Shl(($1187|0),($1190|0),21)|0); - $1192 = tempRet0; - $1193 = $7; - $1194 = $1193; - $1195 = HEAP32[$1194>>2]|0; - $1196 = (($1193) + 4)|0; - $1197 = $1196; - $1198 = HEAP32[$1197>>2]|0; - $1199 = (_i64Subtract(($1195|0),($1198|0),($1191|0),($1192|0))|0); - $1200 = tempRet0; - $1201 = $7; - $1202 = $1201; - HEAP32[$1202>>2] = $1199; - $1203 = (($1201) + 4)|0; - $1204 = $1203; - HEAP32[$1204>>2] = $1200; - $1205 = $8; - $1206 = $1205; - $1207 = HEAP32[$1206>>2]|0; - $1208 = (($1205) + 4)|0; - $1209 = $1208; - $1210 = HEAP32[$1209>>2]|0; - $1211 = (_bitshift64Ashr(($1207|0),($1210|0),21)|0); - $1212 = tempRet0; - $1213 = $21; - $1214 = $1213; - HEAP32[$1214>>2] = $1211; - $1215 = (($1213) + 4)|0; - $1216 = $1215; - HEAP32[$1216>>2] = $1212; - $1217 = $21; - $1218 = $1217; - $1219 = HEAP32[$1218>>2]|0; - $1220 = (($1217) + 4)|0; - $1221 = $1220; - $1222 = HEAP32[$1221>>2]|0; - $1223 = $9; - $1224 = $1223; - $1225 = HEAP32[$1224>>2]|0; - $1226 = (($1223) + 4)|0; - $1227 = $1226; - $1228 = HEAP32[$1227>>2]|0; - $1229 = (_i64Add(($1225|0),($1228|0),($1219|0),($1222|0))|0); - $1230 = tempRet0; - $1231 = $9; - $1232 = $1231; - HEAP32[$1232>>2] = $1229; - $1233 = (($1231) + 4)|0; - $1234 = $1233; - HEAP32[$1234>>2] = $1230; - $1235 = $21; - $1236 = $1235; - $1237 = HEAP32[$1236>>2]|0; - $1238 = (($1235) + 4)|0; - $1239 = $1238; - $1240 = HEAP32[$1239>>2]|0; - $1241 = (_bitshift64Shl(($1237|0),($1240|0),21)|0); - $1242 = tempRet0; - $1243 = $8; - $1244 = $1243; - $1245 = HEAP32[$1244>>2]|0; - $1246 = (($1243) + 4)|0; - $1247 = $1246; - $1248 = HEAP32[$1247>>2]|0; - $1249 = (_i64Subtract(($1245|0),($1248|0),($1241|0),($1242|0))|0); - $1250 = tempRet0; - $1251 = $8; - $1252 = $1251; - HEAP32[$1252>>2] = $1249; - $1253 = (($1251) + 4)|0; - $1254 = $1253; - HEAP32[$1254>>2] = $1250; - $1255 = $9; - $1256 = $1255; - $1257 = HEAP32[$1256>>2]|0; - $1258 = (($1255) + 4)|0; - $1259 = $1258; - $1260 = HEAP32[$1259>>2]|0; - $1261 = (_bitshift64Ashr(($1257|0),($1260|0),21)|0); - $1262 = tempRet0; - $1263 = $22; - $1264 = $1263; - HEAP32[$1264>>2] = $1261; - $1265 = (($1263) + 4)|0; - $1266 = $1265; - HEAP32[$1266>>2] = $1262; - $1267 = $22; - $1268 = $1267; - $1269 = HEAP32[$1268>>2]|0; - $1270 = (($1267) + 4)|0; - $1271 = $1270; - $1272 = HEAP32[$1271>>2]|0; - $1273 = $10; - $1274 = $1273; - $1275 = HEAP32[$1274>>2]|0; - $1276 = (($1273) + 4)|0; - $1277 = $1276; - $1278 = HEAP32[$1277>>2]|0; - $1279 = (_i64Add(($1275|0),($1278|0),($1269|0),($1272|0))|0); - $1280 = tempRet0; - $1281 = $10; - $1282 = $1281; - HEAP32[$1282>>2] = $1279; - $1283 = (($1281) + 4)|0; - $1284 = $1283; - HEAP32[$1284>>2] = $1280; - $1285 = $22; - $1286 = $1285; - $1287 = HEAP32[$1286>>2]|0; - $1288 = (($1285) + 4)|0; - $1289 = $1288; - $1290 = HEAP32[$1289>>2]|0; - $1291 = (_bitshift64Shl(($1287|0),($1290|0),21)|0); - $1292 = tempRet0; - $1293 = $9; - $1294 = $1293; - $1295 = HEAP32[$1294>>2]|0; - $1296 = (($1293) + 4)|0; - $1297 = $1296; - $1298 = HEAP32[$1297>>2]|0; - $1299 = (_i64Subtract(($1295|0),($1298|0),($1291|0),($1292|0))|0); - $1300 = tempRet0; - $1301 = $9; - $1302 = $1301; - HEAP32[$1302>>2] = $1299; - $1303 = (($1301) + 4)|0; - $1304 = $1303; - HEAP32[$1304>>2] = $1300; - $1305 = $10; - $1306 = $1305; - $1307 = HEAP32[$1306>>2]|0; - $1308 = (($1305) + 4)|0; - $1309 = $1308; - $1310 = HEAP32[$1309>>2]|0; - $1311 = (_bitshift64Ashr(($1307|0),($1310|0),21)|0); - $1312 = tempRet0; - $1313 = $23; - $1314 = $1313; - HEAP32[$1314>>2] = $1311; - $1315 = (($1313) + 4)|0; - $1316 = $1315; - HEAP32[$1316>>2] = $1312; - $1317 = $23; - $1318 = $1317; - $1319 = HEAP32[$1318>>2]|0; - $1320 = (($1317) + 4)|0; - $1321 = $1320; - $1322 = HEAP32[$1321>>2]|0; - $1323 = $11; - $1324 = $1323; - $1325 = HEAP32[$1324>>2]|0; - $1326 = (($1323) + 4)|0; - $1327 = $1326; - $1328 = HEAP32[$1327>>2]|0; - $1329 = (_i64Add(($1325|0),($1328|0),($1319|0),($1322|0))|0); - $1330 = tempRet0; - $1331 = $11; - $1332 = $1331; - HEAP32[$1332>>2] = $1329; - $1333 = (($1331) + 4)|0; - $1334 = $1333; - HEAP32[$1334>>2] = $1330; - $1335 = $23; - $1336 = $1335; - $1337 = HEAP32[$1336>>2]|0; - $1338 = (($1335) + 4)|0; - $1339 = $1338; - $1340 = HEAP32[$1339>>2]|0; - $1341 = (_bitshift64Shl(($1337|0),($1340|0),21)|0); - $1342 = tempRet0; - $1343 = $10; - $1344 = $1343; - $1345 = HEAP32[$1344>>2]|0; - $1346 = (($1343) + 4)|0; - $1347 = $1346; - $1348 = HEAP32[$1347>>2]|0; - $1349 = (_i64Subtract(($1345|0),($1348|0),($1341|0),($1342|0))|0); - $1350 = tempRet0; - $1351 = $10; - $1352 = $1351; - HEAP32[$1352>>2] = $1349; - $1353 = (($1351) + 4)|0; - $1354 = $1353; - HEAP32[$1354>>2] = $1350; - $1355 = $11; - $1356 = $1355; - $1357 = HEAP32[$1356>>2]|0; - $1358 = (($1355) + 4)|0; - $1359 = $1358; - $1360 = HEAP32[$1359>>2]|0; - $1361 = (_bitshift64Ashr(($1357|0),($1360|0),21)|0); - $1362 = tempRet0; - $1363 = $24; - $1364 = $1363; - HEAP32[$1364>>2] = $1361; - $1365 = (($1363) + 4)|0; - $1366 = $1365; - HEAP32[$1366>>2] = $1362; - $1367 = $24; - $1368 = $1367; - $1369 = HEAP32[$1368>>2]|0; - $1370 = (($1367) + 4)|0; - $1371 = $1370; - $1372 = HEAP32[$1371>>2]|0; - $1373 = $12; - $1374 = $1373; - $1375 = HEAP32[$1374>>2]|0; - $1376 = (($1373) + 4)|0; - $1377 = $1376; - $1378 = HEAP32[$1377>>2]|0; - $1379 = (_i64Add(($1375|0),($1378|0),($1369|0),($1372|0))|0); - $1380 = tempRet0; - $1381 = $12; - $1382 = $1381; - HEAP32[$1382>>2] = $1379; - $1383 = (($1381) + 4)|0; - $1384 = $1383; - HEAP32[$1384>>2] = $1380; - $1385 = $24; - $1386 = $1385; - $1387 = HEAP32[$1386>>2]|0; - $1388 = (($1385) + 4)|0; - $1389 = $1388; - $1390 = HEAP32[$1389>>2]|0; - $1391 = (_bitshift64Shl(($1387|0),($1390|0),21)|0); - $1392 = tempRet0; - $1393 = $11; - $1394 = $1393; - $1395 = HEAP32[$1394>>2]|0; - $1396 = (($1393) + 4)|0; - $1397 = $1396; - $1398 = HEAP32[$1397>>2]|0; - $1399 = (_i64Subtract(($1395|0),($1398|0),($1391|0),($1392|0))|0); - $1400 = tempRet0; - $1401 = $11; - $1402 = $1401; - HEAP32[$1402>>2] = $1399; - $1403 = (($1401) + 4)|0; - $1404 = $1403; - HEAP32[$1404>>2] = $1400; - $1405 = $12; - $1406 = $1405; - $1407 = HEAP32[$1406>>2]|0; - $1408 = (($1405) + 4)|0; - $1409 = $1408; - $1410 = HEAP32[$1409>>2]|0; - $1411 = (_bitshift64Ashr(($1407|0),($1410|0),21)|0); - $1412 = tempRet0; - $1413 = $25; - $1414 = $1413; - HEAP32[$1414>>2] = $1411; - $1415 = (($1413) + 4)|0; - $1416 = $1415; - HEAP32[$1416>>2] = $1412; - $1417 = $25; - $1418 = $1417; - $1419 = HEAP32[$1418>>2]|0; - $1420 = (($1417) + 4)|0; - $1421 = $1420; - $1422 = HEAP32[$1421>>2]|0; - $1423 = $13; - $1424 = $1423; - $1425 = HEAP32[$1424>>2]|0; - $1426 = (($1423) + 4)|0; - $1427 = $1426; - $1428 = HEAP32[$1427>>2]|0; - $1429 = (_i64Add(($1425|0),($1428|0),($1419|0),($1422|0))|0); - $1430 = tempRet0; - $1431 = $13; - $1432 = $1431; - HEAP32[$1432>>2] = $1429; - $1433 = (($1431) + 4)|0; - $1434 = $1433; - HEAP32[$1434>>2] = $1430; - $1435 = $25; - $1436 = $1435; - $1437 = HEAP32[$1436>>2]|0; - $1438 = (($1435) + 4)|0; - $1439 = $1438; - $1440 = HEAP32[$1439>>2]|0; - $1441 = (_bitshift64Shl(($1437|0),($1440|0),21)|0); - $1442 = tempRet0; - $1443 = $12; - $1444 = $1443; - $1445 = HEAP32[$1444>>2]|0; - $1446 = (($1443) + 4)|0; - $1447 = $1446; - $1448 = HEAP32[$1447>>2]|0; - $1449 = (_i64Subtract(($1445|0),($1448|0),($1441|0),($1442|0))|0); - $1450 = tempRet0; - $1451 = $12; - $1452 = $1451; - HEAP32[$1452>>2] = $1449; - $1453 = (($1451) + 4)|0; - $1454 = $1453; - HEAP32[$1454>>2] = $1450; - $1455 = $13; - $1456 = $1455; - $1457 = HEAP32[$1456>>2]|0; - $1458 = (($1455) + 4)|0; - $1459 = $1458; - $1460 = HEAP32[$1459>>2]|0; - $1461 = (_bitshift64Ashr(($1457|0),($1460|0),21)|0); - $1462 = tempRet0; - $1463 = $26; - $1464 = $1463; - HEAP32[$1464>>2] = $1461; - $1465 = (($1463) + 4)|0; - $1466 = $1465; - HEAP32[$1466>>2] = $1462; - $1467 = $26; - $1468 = $1467; - $1469 = HEAP32[$1468>>2]|0; - $1470 = (($1467) + 4)|0; - $1471 = $1470; - $1472 = HEAP32[$1471>>2]|0; - $1473 = $14; - $1474 = $1473; - $1475 = HEAP32[$1474>>2]|0; - $1476 = (($1473) + 4)|0; - $1477 = $1476; - $1478 = HEAP32[$1477>>2]|0; - $1479 = (_i64Add(($1475|0),($1478|0),($1469|0),($1472|0))|0); - $1480 = tempRet0; - $1481 = $14; - $1482 = $1481; - HEAP32[$1482>>2] = $1479; - $1483 = (($1481) + 4)|0; - $1484 = $1483; - HEAP32[$1484>>2] = $1480; - $1485 = $26; - $1486 = $1485; - $1487 = HEAP32[$1486>>2]|0; - $1488 = (($1485) + 4)|0; - $1489 = $1488; - $1490 = HEAP32[$1489>>2]|0; - $1491 = (_bitshift64Shl(($1487|0),($1490|0),21)|0); - $1492 = tempRet0; - $1493 = $13; - $1494 = $1493; - $1495 = HEAP32[$1494>>2]|0; - $1496 = (($1493) + 4)|0; - $1497 = $1496; - $1498 = HEAP32[$1497>>2]|0; - $1499 = (_i64Subtract(($1495|0),($1498|0),($1491|0),($1492|0))|0); - $1500 = tempRet0; - $1501 = $13; - $1502 = $1501; - HEAP32[$1502>>2] = $1499; - $1503 = (($1501) + 4)|0; - $1504 = $1503; - HEAP32[$1504>>2] = $1500; - $1505 = $14; - $1506 = $1505; - $1507 = HEAP32[$1506>>2]|0; - $1508 = (($1505) + 4)|0; - $1509 = $1508; - $1510 = HEAP32[$1509>>2]|0; - $1511 = (___muldi3(($1507|0),($1510|0),666643,0)|0); - $1512 = tempRet0; - $1513 = $2; - $1514 = $1513; - $1515 = HEAP32[$1514>>2]|0; - $1516 = (($1513) + 4)|0; - $1517 = $1516; - $1518 = HEAP32[$1517>>2]|0; - $1519 = (_i64Add(($1515|0),($1518|0),($1511|0),($1512|0))|0); - $1520 = tempRet0; - $1521 = $2; - $1522 = $1521; - HEAP32[$1522>>2] = $1519; - $1523 = (($1521) + 4)|0; - $1524 = $1523; - HEAP32[$1524>>2] = $1520; - $1525 = $14; - $1526 = $1525; - $1527 = HEAP32[$1526>>2]|0; - $1528 = (($1525) + 4)|0; - $1529 = $1528; - $1530 = HEAP32[$1529>>2]|0; - $1531 = (___muldi3(($1527|0),($1530|0),470296,0)|0); - $1532 = tempRet0; - $1533 = $3; - $1534 = $1533; - $1535 = HEAP32[$1534>>2]|0; - $1536 = (($1533) + 4)|0; - $1537 = $1536; - $1538 = HEAP32[$1537>>2]|0; - $1539 = (_i64Add(($1535|0),($1538|0),($1531|0),($1532|0))|0); - $1540 = tempRet0; - $1541 = $3; - $1542 = $1541; - HEAP32[$1542>>2] = $1539; - $1543 = (($1541) + 4)|0; - $1544 = $1543; - HEAP32[$1544>>2] = $1540; - $1545 = $14; - $1546 = $1545; - $1547 = HEAP32[$1546>>2]|0; - $1548 = (($1545) + 4)|0; - $1549 = $1548; - $1550 = HEAP32[$1549>>2]|0; - $1551 = (___muldi3(($1547|0),($1550|0),654183,0)|0); - $1552 = tempRet0; - $1553 = $4; - $1554 = $1553; - $1555 = HEAP32[$1554>>2]|0; - $1556 = (($1553) + 4)|0; - $1557 = $1556; - $1558 = HEAP32[$1557>>2]|0; - $1559 = (_i64Add(($1555|0),($1558|0),($1551|0),($1552|0))|0); - $1560 = tempRet0; - $1561 = $4; - $1562 = $1561; - HEAP32[$1562>>2] = $1559; - $1563 = (($1561) + 4)|0; - $1564 = $1563; - HEAP32[$1564>>2] = $1560; - $1565 = $14; - $1566 = $1565; - $1567 = HEAP32[$1566>>2]|0; - $1568 = (($1565) + 4)|0; - $1569 = $1568; - $1570 = HEAP32[$1569>>2]|0; - $1571 = (___muldi3(($1567|0),($1570|0),997805,0)|0); - $1572 = tempRet0; - $1573 = $5; - $1574 = $1573; - $1575 = HEAP32[$1574>>2]|0; - $1576 = (($1573) + 4)|0; - $1577 = $1576; - $1578 = HEAP32[$1577>>2]|0; - $1579 = (_i64Subtract(($1575|0),($1578|0),($1571|0),($1572|0))|0); - $1580 = tempRet0; - $1581 = $5; - $1582 = $1581; - HEAP32[$1582>>2] = $1579; - $1583 = (($1581) + 4)|0; - $1584 = $1583; - HEAP32[$1584>>2] = $1580; - $1585 = $14; - $1586 = $1585; - $1587 = HEAP32[$1586>>2]|0; - $1588 = (($1585) + 4)|0; - $1589 = $1588; - $1590 = HEAP32[$1589>>2]|0; - $1591 = (___muldi3(($1587|0),($1590|0),136657,0)|0); - $1592 = tempRet0; - $1593 = $6; - $1594 = $1593; - $1595 = HEAP32[$1594>>2]|0; - $1596 = (($1593) + 4)|0; - $1597 = $1596; - $1598 = HEAP32[$1597>>2]|0; - $1599 = (_i64Add(($1595|0),($1598|0),($1591|0),($1592|0))|0); - $1600 = tempRet0; - $1601 = $6; - $1602 = $1601; - HEAP32[$1602>>2] = $1599; - $1603 = (($1601) + 4)|0; - $1604 = $1603; - HEAP32[$1604>>2] = $1600; - $1605 = $14; - $1606 = $1605; - $1607 = HEAP32[$1606>>2]|0; - $1608 = (($1605) + 4)|0; - $1609 = $1608; - $1610 = HEAP32[$1609>>2]|0; - $1611 = (___muldi3(($1607|0),($1610|0),683901,0)|0); - $1612 = tempRet0; - $1613 = $7; - $1614 = $1613; - $1615 = HEAP32[$1614>>2]|0; - $1616 = (($1613) + 4)|0; - $1617 = $1616; - $1618 = HEAP32[$1617>>2]|0; - $1619 = (_i64Subtract(($1615|0),($1618|0),($1611|0),($1612|0))|0); - $1620 = tempRet0; - $1621 = $7; - $1622 = $1621; - HEAP32[$1622>>2] = $1619; - $1623 = (($1621) + 4)|0; - $1624 = $1623; - HEAP32[$1624>>2] = $1620; - $1625 = $2; - $1626 = $1625; - $1627 = HEAP32[$1626>>2]|0; - $1628 = (($1625) + 4)|0; - $1629 = $1628; - $1630 = HEAP32[$1629>>2]|0; - $1631 = (_bitshift64Ashr(($1627|0),($1630|0),21)|0); - $1632 = tempRet0; - $1633 = $15; - $1634 = $1633; - HEAP32[$1634>>2] = $1631; - $1635 = (($1633) + 4)|0; - $1636 = $1635; - HEAP32[$1636>>2] = $1632; - $1637 = $15; - $1638 = $1637; - $1639 = HEAP32[$1638>>2]|0; - $1640 = (($1637) + 4)|0; - $1641 = $1640; - $1642 = HEAP32[$1641>>2]|0; - $1643 = $3; - $1644 = $1643; - $1645 = HEAP32[$1644>>2]|0; - $1646 = (($1643) + 4)|0; - $1647 = $1646; - $1648 = HEAP32[$1647>>2]|0; - $1649 = (_i64Add(($1645|0),($1648|0),($1639|0),($1642|0))|0); - $1650 = tempRet0; - $1651 = $3; - $1652 = $1651; - HEAP32[$1652>>2] = $1649; - $1653 = (($1651) + 4)|0; - $1654 = $1653; - HEAP32[$1654>>2] = $1650; - $1655 = $15; - $1656 = $1655; - $1657 = HEAP32[$1656>>2]|0; - $1658 = (($1655) + 4)|0; - $1659 = $1658; - $1660 = HEAP32[$1659>>2]|0; - $1661 = (_bitshift64Shl(($1657|0),($1660|0),21)|0); - $1662 = tempRet0; - $1663 = $2; - $1664 = $1663; - $1665 = HEAP32[$1664>>2]|0; - $1666 = (($1663) + 4)|0; - $1667 = $1666; - $1668 = HEAP32[$1667>>2]|0; - $1669 = (_i64Subtract(($1665|0),($1668|0),($1661|0),($1662|0))|0); - $1670 = tempRet0; - $1671 = $2; - $1672 = $1671; - HEAP32[$1672>>2] = $1669; - $1673 = (($1671) + 4)|0; - $1674 = $1673; - HEAP32[$1674>>2] = $1670; - $1675 = $3; - $1676 = $1675; - $1677 = HEAP32[$1676>>2]|0; - $1678 = (($1675) + 4)|0; - $1679 = $1678; - $1680 = HEAP32[$1679>>2]|0; - $1681 = (_bitshift64Ashr(($1677|0),($1680|0),21)|0); - $1682 = tempRet0; - $1683 = $16; - $1684 = $1683; - HEAP32[$1684>>2] = $1681; - $1685 = (($1683) + 4)|0; - $1686 = $1685; - HEAP32[$1686>>2] = $1682; - $1687 = $16; - $1688 = $1687; - $1689 = HEAP32[$1688>>2]|0; - $1690 = (($1687) + 4)|0; - $1691 = $1690; - $1692 = HEAP32[$1691>>2]|0; - $1693 = $4; - $1694 = $1693; - $1695 = HEAP32[$1694>>2]|0; - $1696 = (($1693) + 4)|0; - $1697 = $1696; - $1698 = HEAP32[$1697>>2]|0; - $1699 = (_i64Add(($1695|0),($1698|0),($1689|0),($1692|0))|0); - $1700 = tempRet0; - $1701 = $4; - $1702 = $1701; - HEAP32[$1702>>2] = $1699; - $1703 = (($1701) + 4)|0; - $1704 = $1703; - HEAP32[$1704>>2] = $1700; - $1705 = $16; - $1706 = $1705; - $1707 = HEAP32[$1706>>2]|0; - $1708 = (($1705) + 4)|0; - $1709 = $1708; - $1710 = HEAP32[$1709>>2]|0; - $1711 = (_bitshift64Shl(($1707|0),($1710|0),21)|0); - $1712 = tempRet0; - $1713 = $3; - $1714 = $1713; - $1715 = HEAP32[$1714>>2]|0; - $1716 = (($1713) + 4)|0; - $1717 = $1716; - $1718 = HEAP32[$1717>>2]|0; - $1719 = (_i64Subtract(($1715|0),($1718|0),($1711|0),($1712|0))|0); - $1720 = tempRet0; - $1721 = $3; - $1722 = $1721; - HEAP32[$1722>>2] = $1719; - $1723 = (($1721) + 4)|0; - $1724 = $1723; - HEAP32[$1724>>2] = $1720; - $1725 = $4; - $1726 = $1725; - $1727 = HEAP32[$1726>>2]|0; - $1728 = (($1725) + 4)|0; - $1729 = $1728; - $1730 = HEAP32[$1729>>2]|0; - $1731 = (_bitshift64Ashr(($1727|0),($1730|0),21)|0); - $1732 = tempRet0; - $1733 = $17; - $1734 = $1733; - HEAP32[$1734>>2] = $1731; - $1735 = (($1733) + 4)|0; - $1736 = $1735; - HEAP32[$1736>>2] = $1732; - $1737 = $17; - $1738 = $1737; - $1739 = HEAP32[$1738>>2]|0; - $1740 = (($1737) + 4)|0; - $1741 = $1740; - $1742 = HEAP32[$1741>>2]|0; - $1743 = $5; - $1744 = $1743; - $1745 = HEAP32[$1744>>2]|0; - $1746 = (($1743) + 4)|0; - $1747 = $1746; - $1748 = HEAP32[$1747>>2]|0; - $1749 = (_i64Add(($1745|0),($1748|0),($1739|0),($1742|0))|0); - $1750 = tempRet0; - $1751 = $5; - $1752 = $1751; - HEAP32[$1752>>2] = $1749; - $1753 = (($1751) + 4)|0; - $1754 = $1753; - HEAP32[$1754>>2] = $1750; - $1755 = $17; - $1756 = $1755; - $1757 = HEAP32[$1756>>2]|0; - $1758 = (($1755) + 4)|0; - $1759 = $1758; - $1760 = HEAP32[$1759>>2]|0; - $1761 = (_bitshift64Shl(($1757|0),($1760|0),21)|0); - $1762 = tempRet0; - $1763 = $4; - $1764 = $1763; - $1765 = HEAP32[$1764>>2]|0; - $1766 = (($1763) + 4)|0; - $1767 = $1766; - $1768 = HEAP32[$1767>>2]|0; - $1769 = (_i64Subtract(($1765|0),($1768|0),($1761|0),($1762|0))|0); - $1770 = tempRet0; - $1771 = $4; - $1772 = $1771; - HEAP32[$1772>>2] = $1769; - $1773 = (($1771) + 4)|0; - $1774 = $1773; - HEAP32[$1774>>2] = $1770; - $1775 = $5; - $1776 = $1775; - $1777 = HEAP32[$1776>>2]|0; - $1778 = (($1775) + 4)|0; - $1779 = $1778; - $1780 = HEAP32[$1779>>2]|0; - $1781 = (_bitshift64Ashr(($1777|0),($1780|0),21)|0); - $1782 = tempRet0; - $1783 = $18; - $1784 = $1783; - HEAP32[$1784>>2] = $1781; - $1785 = (($1783) + 4)|0; - $1786 = $1785; - HEAP32[$1786>>2] = $1782; - $1787 = $18; - $1788 = $1787; - $1789 = HEAP32[$1788>>2]|0; - $1790 = (($1787) + 4)|0; - $1791 = $1790; - $1792 = HEAP32[$1791>>2]|0; - $1793 = $6; - $1794 = $1793; - $1795 = HEAP32[$1794>>2]|0; - $1796 = (($1793) + 4)|0; - $1797 = $1796; - $1798 = HEAP32[$1797>>2]|0; - $1799 = (_i64Add(($1795|0),($1798|0),($1789|0),($1792|0))|0); - $1800 = tempRet0; - $1801 = $6; - $1802 = $1801; - HEAP32[$1802>>2] = $1799; - $1803 = (($1801) + 4)|0; - $1804 = $1803; - HEAP32[$1804>>2] = $1800; - $1805 = $18; - $1806 = $1805; - $1807 = HEAP32[$1806>>2]|0; - $1808 = (($1805) + 4)|0; - $1809 = $1808; - $1810 = HEAP32[$1809>>2]|0; - $1811 = (_bitshift64Shl(($1807|0),($1810|0),21)|0); - $1812 = tempRet0; - $1813 = $5; - $1814 = $1813; - $1815 = HEAP32[$1814>>2]|0; - $1816 = (($1813) + 4)|0; - $1817 = $1816; - $1818 = HEAP32[$1817>>2]|0; - $1819 = (_i64Subtract(($1815|0),($1818|0),($1811|0),($1812|0))|0); - $1820 = tempRet0; - $1821 = $5; - $1822 = $1821; - HEAP32[$1822>>2] = $1819; - $1823 = (($1821) + 4)|0; - $1824 = $1823; - HEAP32[$1824>>2] = $1820; - $1825 = $6; - $1826 = $1825; - $1827 = HEAP32[$1826>>2]|0; - $1828 = (($1825) + 4)|0; - $1829 = $1828; - $1830 = HEAP32[$1829>>2]|0; - $1831 = (_bitshift64Ashr(($1827|0),($1830|0),21)|0); - $1832 = tempRet0; - $1833 = $19; - $1834 = $1833; - HEAP32[$1834>>2] = $1831; - $1835 = (($1833) + 4)|0; - $1836 = $1835; - HEAP32[$1836>>2] = $1832; - $1837 = $19; - $1838 = $1837; - $1839 = HEAP32[$1838>>2]|0; - $1840 = (($1837) + 4)|0; - $1841 = $1840; - $1842 = HEAP32[$1841>>2]|0; - $1843 = $7; - $1844 = $1843; - $1845 = HEAP32[$1844>>2]|0; - $1846 = (($1843) + 4)|0; - $1847 = $1846; - $1848 = HEAP32[$1847>>2]|0; - $1849 = (_i64Add(($1845|0),($1848|0),($1839|0),($1842|0))|0); - $1850 = tempRet0; - $1851 = $7; - $1852 = $1851; - HEAP32[$1852>>2] = $1849; - $1853 = (($1851) + 4)|0; - $1854 = $1853; - HEAP32[$1854>>2] = $1850; - $1855 = $19; - $1856 = $1855; - $1857 = HEAP32[$1856>>2]|0; - $1858 = (($1855) + 4)|0; - $1859 = $1858; - $1860 = HEAP32[$1859>>2]|0; - $1861 = (_bitshift64Shl(($1857|0),($1860|0),21)|0); - $1862 = tempRet0; - $1863 = $6; - $1864 = $1863; - $1865 = HEAP32[$1864>>2]|0; - $1866 = (($1863) + 4)|0; - $1867 = $1866; - $1868 = HEAP32[$1867>>2]|0; - $1869 = (_i64Subtract(($1865|0),($1868|0),($1861|0),($1862|0))|0); - $1870 = tempRet0; - $1871 = $6; - $1872 = $1871; - HEAP32[$1872>>2] = $1869; - $1873 = (($1871) + 4)|0; - $1874 = $1873; - HEAP32[$1874>>2] = $1870; - $1875 = $7; - $1876 = $1875; - $1877 = HEAP32[$1876>>2]|0; - $1878 = (($1875) + 4)|0; - $1879 = $1878; - $1880 = HEAP32[$1879>>2]|0; - $1881 = (_bitshift64Ashr(($1877|0),($1880|0),21)|0); - $1882 = tempRet0; - $1883 = $20; - $1884 = $1883; - HEAP32[$1884>>2] = $1881; - $1885 = (($1883) + 4)|0; - $1886 = $1885; - HEAP32[$1886>>2] = $1882; - $1887 = $20; - $1888 = $1887; - $1889 = HEAP32[$1888>>2]|0; - $1890 = (($1887) + 4)|0; - $1891 = $1890; - $1892 = HEAP32[$1891>>2]|0; - $1893 = $8; - $1894 = $1893; - $1895 = HEAP32[$1894>>2]|0; - $1896 = (($1893) + 4)|0; - $1897 = $1896; - $1898 = HEAP32[$1897>>2]|0; - $1899 = (_i64Add(($1895|0),($1898|0),($1889|0),($1892|0))|0); - $1900 = tempRet0; - $1901 = $8; - $1902 = $1901; - HEAP32[$1902>>2] = $1899; - $1903 = (($1901) + 4)|0; - $1904 = $1903; - HEAP32[$1904>>2] = $1900; - $1905 = $20; - $1906 = $1905; - $1907 = HEAP32[$1906>>2]|0; - $1908 = (($1905) + 4)|0; - $1909 = $1908; - $1910 = HEAP32[$1909>>2]|0; - $1911 = (_bitshift64Shl(($1907|0),($1910|0),21)|0); - $1912 = tempRet0; - $1913 = $7; - $1914 = $1913; - $1915 = HEAP32[$1914>>2]|0; - $1916 = (($1913) + 4)|0; - $1917 = $1916; - $1918 = HEAP32[$1917>>2]|0; - $1919 = (_i64Subtract(($1915|0),($1918|0),($1911|0),($1912|0))|0); - $1920 = tempRet0; - $1921 = $7; - $1922 = $1921; - HEAP32[$1922>>2] = $1919; - $1923 = (($1921) + 4)|0; - $1924 = $1923; - HEAP32[$1924>>2] = $1920; - $1925 = $8; - $1926 = $1925; - $1927 = HEAP32[$1926>>2]|0; - $1928 = (($1925) + 4)|0; - $1929 = $1928; - $1930 = HEAP32[$1929>>2]|0; - $1931 = (_bitshift64Ashr(($1927|0),($1930|0),21)|0); - $1932 = tempRet0; - $1933 = $21; - $1934 = $1933; - HEAP32[$1934>>2] = $1931; - $1935 = (($1933) + 4)|0; - $1936 = $1935; - HEAP32[$1936>>2] = $1932; - $1937 = $21; - $1938 = $1937; - $1939 = HEAP32[$1938>>2]|0; - $1940 = (($1937) + 4)|0; - $1941 = $1940; - $1942 = HEAP32[$1941>>2]|0; - $1943 = $9; - $1944 = $1943; - $1945 = HEAP32[$1944>>2]|0; - $1946 = (($1943) + 4)|0; - $1947 = $1946; - $1948 = HEAP32[$1947>>2]|0; - $1949 = (_i64Add(($1945|0),($1948|0),($1939|0),($1942|0))|0); - $1950 = tempRet0; - $1951 = $9; - $1952 = $1951; - HEAP32[$1952>>2] = $1949; - $1953 = (($1951) + 4)|0; - $1954 = $1953; - HEAP32[$1954>>2] = $1950; - $1955 = $21; - $1956 = $1955; - $1957 = HEAP32[$1956>>2]|0; - $1958 = (($1955) + 4)|0; - $1959 = $1958; - $1960 = HEAP32[$1959>>2]|0; - $1961 = (_bitshift64Shl(($1957|0),($1960|0),21)|0); - $1962 = tempRet0; - $1963 = $8; - $1964 = $1963; - $1965 = HEAP32[$1964>>2]|0; - $1966 = (($1963) + 4)|0; - $1967 = $1966; - $1968 = HEAP32[$1967>>2]|0; - $1969 = (_i64Subtract(($1965|0),($1968|0),($1961|0),($1962|0))|0); - $1970 = tempRet0; - $1971 = $8; - $1972 = $1971; - HEAP32[$1972>>2] = $1969; - $1973 = (($1971) + 4)|0; - $1974 = $1973; - HEAP32[$1974>>2] = $1970; - $1975 = $9; - $1976 = $1975; - $1977 = HEAP32[$1976>>2]|0; - $1978 = (($1975) + 4)|0; - $1979 = $1978; - $1980 = HEAP32[$1979>>2]|0; - $1981 = (_bitshift64Ashr(($1977|0),($1980|0),21)|0); - $1982 = tempRet0; - $1983 = $22; - $1984 = $1983; - HEAP32[$1984>>2] = $1981; - $1985 = (($1983) + 4)|0; - $1986 = $1985; - HEAP32[$1986>>2] = $1982; - $1987 = $22; - $1988 = $1987; - $1989 = HEAP32[$1988>>2]|0; - $1990 = (($1987) + 4)|0; - $1991 = $1990; - $1992 = HEAP32[$1991>>2]|0; - $1993 = $10; - $1994 = $1993; - $1995 = HEAP32[$1994>>2]|0; - $1996 = (($1993) + 4)|0; - $1997 = $1996; - $1998 = HEAP32[$1997>>2]|0; - $1999 = (_i64Add(($1995|0),($1998|0),($1989|0),($1992|0))|0); - $2000 = tempRet0; - $2001 = $10; - $2002 = $2001; - HEAP32[$2002>>2] = $1999; - $2003 = (($2001) + 4)|0; - $2004 = $2003; - HEAP32[$2004>>2] = $2000; - $2005 = $22; - $2006 = $2005; - $2007 = HEAP32[$2006>>2]|0; - $2008 = (($2005) + 4)|0; - $2009 = $2008; - $2010 = HEAP32[$2009>>2]|0; - $2011 = (_bitshift64Shl(($2007|0),($2010|0),21)|0); - $2012 = tempRet0; - $2013 = $9; - $2014 = $2013; - $2015 = HEAP32[$2014>>2]|0; - $2016 = (($2013) + 4)|0; - $2017 = $2016; - $2018 = HEAP32[$2017>>2]|0; - $2019 = (_i64Subtract(($2015|0),($2018|0),($2011|0),($2012|0))|0); - $2020 = tempRet0; - $2021 = $9; - $2022 = $2021; - HEAP32[$2022>>2] = $2019; - $2023 = (($2021) + 4)|0; - $2024 = $2023; - HEAP32[$2024>>2] = $2020; - $2025 = $10; - $2026 = $2025; - $2027 = HEAP32[$2026>>2]|0; - $2028 = (($2025) + 4)|0; - $2029 = $2028; - $2030 = HEAP32[$2029>>2]|0; - $2031 = (_bitshift64Ashr(($2027|0),($2030|0),21)|0); - $2032 = tempRet0; - $2033 = $23; - $2034 = $2033; - HEAP32[$2034>>2] = $2031; - $2035 = (($2033) + 4)|0; - $2036 = $2035; - HEAP32[$2036>>2] = $2032; - $2037 = $23; - $2038 = $2037; - $2039 = HEAP32[$2038>>2]|0; - $2040 = (($2037) + 4)|0; - $2041 = $2040; - $2042 = HEAP32[$2041>>2]|0; - $2043 = $11; - $2044 = $2043; - $2045 = HEAP32[$2044>>2]|0; - $2046 = (($2043) + 4)|0; - $2047 = $2046; - $2048 = HEAP32[$2047>>2]|0; - $2049 = (_i64Add(($2045|0),($2048|0),($2039|0),($2042|0))|0); - $2050 = tempRet0; - $2051 = $11; - $2052 = $2051; - HEAP32[$2052>>2] = $2049; - $2053 = (($2051) + 4)|0; - $2054 = $2053; - HEAP32[$2054>>2] = $2050; - $2055 = $23; - $2056 = $2055; - $2057 = HEAP32[$2056>>2]|0; - $2058 = (($2055) + 4)|0; - $2059 = $2058; - $2060 = HEAP32[$2059>>2]|0; - $2061 = (_bitshift64Shl(($2057|0),($2060|0),21)|0); - $2062 = tempRet0; - $2063 = $10; - $2064 = $2063; - $2065 = HEAP32[$2064>>2]|0; - $2066 = (($2063) + 4)|0; - $2067 = $2066; - $2068 = HEAP32[$2067>>2]|0; - $2069 = (_i64Subtract(($2065|0),($2068|0),($2061|0),($2062|0))|0); - $2070 = tempRet0; - $2071 = $10; - $2072 = $2071; - HEAP32[$2072>>2] = $2069; - $2073 = (($2071) + 4)|0; - $2074 = $2073; - HEAP32[$2074>>2] = $2070; - $2075 = $11; - $2076 = $2075; - $2077 = HEAP32[$2076>>2]|0; - $2078 = (($2075) + 4)|0; - $2079 = $2078; - $2080 = HEAP32[$2079>>2]|0; - $2081 = (_bitshift64Ashr(($2077|0),($2080|0),21)|0); - $2082 = tempRet0; - $2083 = $24; - $2084 = $2083; - HEAP32[$2084>>2] = $2081; - $2085 = (($2083) + 4)|0; - $2086 = $2085; - HEAP32[$2086>>2] = $2082; - $2087 = $24; - $2088 = $2087; - $2089 = HEAP32[$2088>>2]|0; - $2090 = (($2087) + 4)|0; - $2091 = $2090; - $2092 = HEAP32[$2091>>2]|0; - $2093 = $12; - $2094 = $2093; - $2095 = HEAP32[$2094>>2]|0; - $2096 = (($2093) + 4)|0; - $2097 = $2096; - $2098 = HEAP32[$2097>>2]|0; - $2099 = (_i64Add(($2095|0),($2098|0),($2089|0),($2092|0))|0); - $2100 = tempRet0; - $2101 = $12; - $2102 = $2101; - HEAP32[$2102>>2] = $2099; - $2103 = (($2101) + 4)|0; - $2104 = $2103; - HEAP32[$2104>>2] = $2100; - $2105 = $24; - $2106 = $2105; - $2107 = HEAP32[$2106>>2]|0; - $2108 = (($2105) + 4)|0; - $2109 = $2108; - $2110 = HEAP32[$2109>>2]|0; - $2111 = (_bitshift64Shl(($2107|0),($2110|0),21)|0); - $2112 = tempRet0; - $2113 = $11; - $2114 = $2113; - $2115 = HEAP32[$2114>>2]|0; - $2116 = (($2113) + 4)|0; - $2117 = $2116; - $2118 = HEAP32[$2117>>2]|0; - $2119 = (_i64Subtract(($2115|0),($2118|0),($2111|0),($2112|0))|0); - $2120 = tempRet0; - $2121 = $11; - $2122 = $2121; - HEAP32[$2122>>2] = $2119; - $2123 = (($2121) + 4)|0; - $2124 = $2123; - HEAP32[$2124>>2] = $2120; - $2125 = $12; - $2126 = $2125; - $2127 = HEAP32[$2126>>2]|0; - $2128 = (($2125) + 4)|0; - $2129 = $2128; - $2130 = HEAP32[$2129>>2]|0; - $2131 = (_bitshift64Ashr(($2127|0),($2130|0),21)|0); - $2132 = tempRet0; - $2133 = $25; - $2134 = $2133; - HEAP32[$2134>>2] = $2131; - $2135 = (($2133) + 4)|0; - $2136 = $2135; - HEAP32[$2136>>2] = $2132; - $2137 = $25; - $2138 = $2137; - $2139 = HEAP32[$2138>>2]|0; - $2140 = (($2137) + 4)|0; - $2141 = $2140; - $2142 = HEAP32[$2141>>2]|0; - $2143 = $13; - $2144 = $2143; - $2145 = HEAP32[$2144>>2]|0; - $2146 = (($2143) + 4)|0; - $2147 = $2146; - $2148 = HEAP32[$2147>>2]|0; - $2149 = (_i64Add(($2145|0),($2148|0),($2139|0),($2142|0))|0); - $2150 = tempRet0; - $2151 = $13; - $2152 = $2151; - HEAP32[$2152>>2] = $2149; - $2153 = (($2151) + 4)|0; - $2154 = $2153; - HEAP32[$2154>>2] = $2150; - $2155 = $25; - $2156 = $2155; - $2157 = HEAP32[$2156>>2]|0; - $2158 = (($2155) + 4)|0; - $2159 = $2158; - $2160 = HEAP32[$2159>>2]|0; - $2161 = (_bitshift64Shl(($2157|0),($2160|0),21)|0); - $2162 = tempRet0; - $2163 = $12; - $2164 = $2163; - $2165 = HEAP32[$2164>>2]|0; - $2166 = (($2163) + 4)|0; - $2167 = $2166; - $2168 = HEAP32[$2167>>2]|0; - $2169 = (_i64Subtract(($2165|0),($2168|0),($2161|0),($2162|0))|0); - $2170 = tempRet0; - $2171 = $12; - $2172 = $2171; - HEAP32[$2172>>2] = $2169; - $2173 = (($2171) + 4)|0; - $2174 = $2173; - HEAP32[$2174>>2] = $2170; - $2175 = $2; - $2176 = $2175; - $2177 = HEAP32[$2176>>2]|0; - $2178 = (($2175) + 4)|0; - $2179 = $2178; - $2180 = HEAP32[$2179>>2]|0; - $2181 = (_bitshift64Ashr(($2177|0),($2180|0),0)|0); - $2182 = tempRet0; - $2183 = $2181&255; - $2184 = $1; - HEAP8[$2184>>0] = $2183; - $2185 = $2; - $2186 = $2185; - $2187 = HEAP32[$2186>>2]|0; - $2188 = (($2185) + 4)|0; - $2189 = $2188; - $2190 = HEAP32[$2189>>2]|0; - $2191 = (_bitshift64Ashr(($2187|0),($2190|0),8)|0); - $2192 = tempRet0; - $2193 = $2191&255; - $2194 = $1; - $2195 = ((($2194)) + 1|0); - HEAP8[$2195>>0] = $2193; - $2196 = $2; - $2197 = $2196; - $2198 = HEAP32[$2197>>2]|0; - $2199 = (($2196) + 4)|0; - $2200 = $2199; - $2201 = HEAP32[$2200>>2]|0; - $2202 = (_bitshift64Ashr(($2198|0),($2201|0),16)|0); - $2203 = tempRet0; - $2204 = $3; - $2205 = $2204; - $2206 = HEAP32[$2205>>2]|0; - $2207 = (($2204) + 4)|0; - $2208 = $2207; - $2209 = HEAP32[$2208>>2]|0; - $2210 = (_bitshift64Shl(($2206|0),($2209|0),5)|0); - $2211 = tempRet0; - $2212 = $2202 | $2210; - $2203 | $2211; - $2213 = $2212&255; - $2214 = $1; - $2215 = ((($2214)) + 2|0); - HEAP8[$2215>>0] = $2213; - $2216 = $3; - $2217 = $2216; - $2218 = HEAP32[$2217>>2]|0; - $2219 = (($2216) + 4)|0; - $2220 = $2219; - $2221 = HEAP32[$2220>>2]|0; - $2222 = (_bitshift64Ashr(($2218|0),($2221|0),3)|0); - $2223 = tempRet0; - $2224 = $2222&255; - $2225 = $1; - $2226 = ((($2225)) + 3|0); - HEAP8[$2226>>0] = $2224; - $2227 = $3; - $2228 = $2227; - $2229 = HEAP32[$2228>>2]|0; - $2230 = (($2227) + 4)|0; - $2231 = $2230; - $2232 = HEAP32[$2231>>2]|0; - $2233 = (_bitshift64Ashr(($2229|0),($2232|0),11)|0); - $2234 = tempRet0; - $2235 = $2233&255; - $2236 = $1; - $2237 = ((($2236)) + 4|0); - HEAP8[$2237>>0] = $2235; - $2238 = $3; - $2239 = $2238; - $2240 = HEAP32[$2239>>2]|0; - $2241 = (($2238) + 4)|0; - $2242 = $2241; - $2243 = HEAP32[$2242>>2]|0; - $2244 = (_bitshift64Ashr(($2240|0),($2243|0),19)|0); - $2245 = tempRet0; - $2246 = $4; - $2247 = $2246; - $2248 = HEAP32[$2247>>2]|0; - $2249 = (($2246) + 4)|0; - $2250 = $2249; - $2251 = HEAP32[$2250>>2]|0; - $2252 = (_bitshift64Shl(($2248|0),($2251|0),2)|0); - $2253 = tempRet0; - $2254 = $2244 | $2252; - $2245 | $2253; - $2255 = $2254&255; - $2256 = $1; - $2257 = ((($2256)) + 5|0); - HEAP8[$2257>>0] = $2255; - $2258 = $4; - $2259 = $2258; - $2260 = HEAP32[$2259>>2]|0; - $2261 = (($2258) + 4)|0; - $2262 = $2261; - $2263 = HEAP32[$2262>>2]|0; - $2264 = (_bitshift64Ashr(($2260|0),($2263|0),6)|0); - $2265 = tempRet0; - $2266 = $2264&255; - $2267 = $1; - $2268 = ((($2267)) + 6|0); - HEAP8[$2268>>0] = $2266; - $2269 = $4; - $2270 = $2269; - $2271 = HEAP32[$2270>>2]|0; - $2272 = (($2269) + 4)|0; - $2273 = $2272; - $2274 = HEAP32[$2273>>2]|0; - $2275 = (_bitshift64Ashr(($2271|0),($2274|0),14)|0); - $2276 = tempRet0; - $2277 = $5; - $2278 = $2277; - $2279 = HEAP32[$2278>>2]|0; - $2280 = (($2277) + 4)|0; - $2281 = $2280; - $2282 = HEAP32[$2281>>2]|0; - $2283 = (_bitshift64Shl(($2279|0),($2282|0),7)|0); - $2284 = tempRet0; - $2285 = $2275 | $2283; - $2276 | $2284; - $2286 = $2285&255; - $2287 = $1; - $2288 = ((($2287)) + 7|0); - HEAP8[$2288>>0] = $2286; - $2289 = $5; - $2290 = $2289; - $2291 = HEAP32[$2290>>2]|0; - $2292 = (($2289) + 4)|0; - $2293 = $2292; - $2294 = HEAP32[$2293>>2]|0; - $2295 = (_bitshift64Ashr(($2291|0),($2294|0),1)|0); - $2296 = tempRet0; - $2297 = $2295&255; - $2298 = $1; - $2299 = ((($2298)) + 8|0); - HEAP8[$2299>>0] = $2297; - $2300 = $5; - $2301 = $2300; - $2302 = HEAP32[$2301>>2]|0; - $2303 = (($2300) + 4)|0; - $2304 = $2303; - $2305 = HEAP32[$2304>>2]|0; - $2306 = (_bitshift64Ashr(($2302|0),($2305|0),9)|0); - $2307 = tempRet0; - $2308 = $2306&255; - $2309 = $1; - $2310 = ((($2309)) + 9|0); - HEAP8[$2310>>0] = $2308; - $2311 = $5; - $2312 = $2311; - $2313 = HEAP32[$2312>>2]|0; - $2314 = (($2311) + 4)|0; - $2315 = $2314; - $2316 = HEAP32[$2315>>2]|0; - $2317 = (_bitshift64Ashr(($2313|0),($2316|0),17)|0); - $2318 = tempRet0; - $2319 = $6; - $2320 = $2319; - $2321 = HEAP32[$2320>>2]|0; - $2322 = (($2319) + 4)|0; - $2323 = $2322; - $2324 = HEAP32[$2323>>2]|0; - $2325 = (_bitshift64Shl(($2321|0),($2324|0),4)|0); - $2326 = tempRet0; - $2327 = $2317 | $2325; - $2318 | $2326; - $2328 = $2327&255; - $2329 = $1; - $2330 = ((($2329)) + 10|0); - HEAP8[$2330>>0] = $2328; - $2331 = $6; - $2332 = $2331; - $2333 = HEAP32[$2332>>2]|0; - $2334 = (($2331) + 4)|0; - $2335 = $2334; - $2336 = HEAP32[$2335>>2]|0; - $2337 = (_bitshift64Ashr(($2333|0),($2336|0),4)|0); - $2338 = tempRet0; - $2339 = $2337&255; - $2340 = $1; - $2341 = ((($2340)) + 11|0); - HEAP8[$2341>>0] = $2339; - $2342 = $6; - $2343 = $2342; - $2344 = HEAP32[$2343>>2]|0; - $2345 = (($2342) + 4)|0; - $2346 = $2345; - $2347 = HEAP32[$2346>>2]|0; - $2348 = (_bitshift64Ashr(($2344|0),($2347|0),12)|0); - $2349 = tempRet0; - $2350 = $2348&255; - $2351 = $1; - $2352 = ((($2351)) + 12|0); - HEAP8[$2352>>0] = $2350; - $2353 = $6; - $2354 = $2353; - $2355 = HEAP32[$2354>>2]|0; - $2356 = (($2353) + 4)|0; - $2357 = $2356; - $2358 = HEAP32[$2357>>2]|0; - $2359 = (_bitshift64Ashr(($2355|0),($2358|0),20)|0); - $2360 = tempRet0; - $2361 = $7; - $2362 = $2361; - $2363 = HEAP32[$2362>>2]|0; - $2364 = (($2361) + 4)|0; - $2365 = $2364; - $2366 = HEAP32[$2365>>2]|0; - $2367 = (_bitshift64Shl(($2363|0),($2366|0),1)|0); - $2368 = tempRet0; - $2369 = $2359 | $2367; - $2360 | $2368; - $2370 = $2369&255; - $2371 = $1; - $2372 = ((($2371)) + 13|0); - HEAP8[$2372>>0] = $2370; - $2373 = $7; - $2374 = $2373; - $2375 = HEAP32[$2374>>2]|0; - $2376 = (($2373) + 4)|0; - $2377 = $2376; - $2378 = HEAP32[$2377>>2]|0; - $2379 = (_bitshift64Ashr(($2375|0),($2378|0),7)|0); - $2380 = tempRet0; - $2381 = $2379&255; - $2382 = $1; - $2383 = ((($2382)) + 14|0); - HEAP8[$2383>>0] = $2381; - $2384 = $7; - $2385 = $2384; - $2386 = HEAP32[$2385>>2]|0; - $2387 = (($2384) + 4)|0; - $2388 = $2387; - $2389 = HEAP32[$2388>>2]|0; - $2390 = (_bitshift64Ashr(($2386|0),($2389|0),15)|0); - $2391 = tempRet0; - $2392 = $8; - $2393 = $2392; - $2394 = HEAP32[$2393>>2]|0; - $2395 = (($2392) + 4)|0; - $2396 = $2395; - $2397 = HEAP32[$2396>>2]|0; - $2398 = (_bitshift64Shl(($2394|0),($2397|0),6)|0); - $2399 = tempRet0; - $2400 = $2390 | $2398; - $2391 | $2399; - $2401 = $2400&255; - $2402 = $1; - $2403 = ((($2402)) + 15|0); - HEAP8[$2403>>0] = $2401; - $2404 = $8; - $2405 = $2404; - $2406 = HEAP32[$2405>>2]|0; - $2407 = (($2404) + 4)|0; - $2408 = $2407; - $2409 = HEAP32[$2408>>2]|0; - $2410 = (_bitshift64Ashr(($2406|0),($2409|0),2)|0); - $2411 = tempRet0; - $2412 = $2410&255; - $2413 = $1; - $2414 = ((($2413)) + 16|0); - HEAP8[$2414>>0] = $2412; - $2415 = $8; - $2416 = $2415; - $2417 = HEAP32[$2416>>2]|0; - $2418 = (($2415) + 4)|0; - $2419 = $2418; - $2420 = HEAP32[$2419>>2]|0; - $2421 = (_bitshift64Ashr(($2417|0),($2420|0),10)|0); - $2422 = tempRet0; - $2423 = $2421&255; - $2424 = $1; - $2425 = ((($2424)) + 17|0); - HEAP8[$2425>>0] = $2423; - $2426 = $8; - $2427 = $2426; - $2428 = HEAP32[$2427>>2]|0; - $2429 = (($2426) + 4)|0; - $2430 = $2429; - $2431 = HEAP32[$2430>>2]|0; - $2432 = (_bitshift64Ashr(($2428|0),($2431|0),18)|0); - $2433 = tempRet0; - $2434 = $9; - $2435 = $2434; - $2436 = HEAP32[$2435>>2]|0; - $2437 = (($2434) + 4)|0; - $2438 = $2437; - $2439 = HEAP32[$2438>>2]|0; - $2440 = (_bitshift64Shl(($2436|0),($2439|0),3)|0); - $2441 = tempRet0; - $2442 = $2432 | $2440; - $2433 | $2441; - $2443 = $2442&255; - $2444 = $1; - $2445 = ((($2444)) + 18|0); - HEAP8[$2445>>0] = $2443; - $2446 = $9; - $2447 = $2446; - $2448 = HEAP32[$2447>>2]|0; - $2449 = (($2446) + 4)|0; - $2450 = $2449; - $2451 = HEAP32[$2450>>2]|0; - $2452 = (_bitshift64Ashr(($2448|0),($2451|0),5)|0); - $2453 = tempRet0; - $2454 = $2452&255; - $2455 = $1; - $2456 = ((($2455)) + 19|0); - HEAP8[$2456>>0] = $2454; - $2457 = $9; - $2458 = $2457; - $2459 = HEAP32[$2458>>2]|0; - $2460 = (($2457) + 4)|0; - $2461 = $2460; - $2462 = HEAP32[$2461>>2]|0; - $2463 = (_bitshift64Ashr(($2459|0),($2462|0),13)|0); - $2464 = tempRet0; - $2465 = $2463&255; - $2466 = $1; - $2467 = ((($2466)) + 20|0); - HEAP8[$2467>>0] = $2465; - $2468 = $10; - $2469 = $2468; - $2470 = HEAP32[$2469>>2]|0; - $2471 = (($2468) + 4)|0; - $2472 = $2471; - $2473 = HEAP32[$2472>>2]|0; - $2474 = (_bitshift64Ashr(($2470|0),($2473|0),0)|0); - $2475 = tempRet0; - $2476 = $2474&255; - $2477 = $1; - $2478 = ((($2477)) + 21|0); - HEAP8[$2478>>0] = $2476; - $2479 = $10; - $2480 = $2479; - $2481 = HEAP32[$2480>>2]|0; - $2482 = (($2479) + 4)|0; - $2483 = $2482; - $2484 = HEAP32[$2483>>2]|0; - $2485 = (_bitshift64Ashr(($2481|0),($2484|0),8)|0); - $2486 = tempRet0; - $2487 = $2485&255; - $2488 = $1; - $2489 = ((($2488)) + 22|0); - HEAP8[$2489>>0] = $2487; - $2490 = $10; - $2491 = $2490; - $2492 = HEAP32[$2491>>2]|0; - $2493 = (($2490) + 4)|0; - $2494 = $2493; - $2495 = HEAP32[$2494>>2]|0; - $2496 = (_bitshift64Ashr(($2492|0),($2495|0),16)|0); - $2497 = tempRet0; - $2498 = $11; - $2499 = $2498; - $2500 = HEAP32[$2499>>2]|0; - $2501 = (($2498) + 4)|0; - $2502 = $2501; - $2503 = HEAP32[$2502>>2]|0; - $2504 = (_bitshift64Shl(($2500|0),($2503|0),5)|0); - $2505 = tempRet0; - $2506 = $2496 | $2504; - $2497 | $2505; - $2507 = $2506&255; - $2508 = $1; - $2509 = ((($2508)) + 23|0); - HEAP8[$2509>>0] = $2507; - $2510 = $11; - $2511 = $2510; - $2512 = HEAP32[$2511>>2]|0; - $2513 = (($2510) + 4)|0; - $2514 = $2513; - $2515 = HEAP32[$2514>>2]|0; - $2516 = (_bitshift64Ashr(($2512|0),($2515|0),3)|0); - $2517 = tempRet0; - $2518 = $2516&255; - $2519 = $1; - $2520 = ((($2519)) + 24|0); - HEAP8[$2520>>0] = $2518; - $2521 = $11; - $2522 = $2521; - $2523 = HEAP32[$2522>>2]|0; - $2524 = (($2521) + 4)|0; - $2525 = $2524; - $2526 = HEAP32[$2525>>2]|0; - $2527 = (_bitshift64Ashr(($2523|0),($2526|0),11)|0); - $2528 = tempRet0; - $2529 = $2527&255; - $2530 = $1; - $2531 = ((($2530)) + 25|0); - HEAP8[$2531>>0] = $2529; - $2532 = $11; - $2533 = $2532; - $2534 = HEAP32[$2533>>2]|0; - $2535 = (($2532) + 4)|0; - $2536 = $2535; - $2537 = HEAP32[$2536>>2]|0; - $2538 = (_bitshift64Ashr(($2534|0),($2537|0),19)|0); - $2539 = tempRet0; - $2540 = $12; - $2541 = $2540; - $2542 = HEAP32[$2541>>2]|0; - $2543 = (($2540) + 4)|0; - $2544 = $2543; - $2545 = HEAP32[$2544>>2]|0; - $2546 = (_bitshift64Shl(($2542|0),($2545|0),2)|0); - $2547 = tempRet0; - $2548 = $2538 | $2546; - $2539 | $2547; - $2549 = $2548&255; - $2550 = $1; - $2551 = ((($2550)) + 26|0); - HEAP8[$2551>>0] = $2549; - $2552 = $12; - $2553 = $2552; - $2554 = HEAP32[$2553>>2]|0; - $2555 = (($2552) + 4)|0; - $2556 = $2555; - $2557 = HEAP32[$2556>>2]|0; - $2558 = (_bitshift64Ashr(($2554|0),($2557|0),6)|0); - $2559 = tempRet0; - $2560 = $2558&255; - $2561 = $1; - $2562 = ((($2561)) + 27|0); - HEAP8[$2562>>0] = $2560; - $2563 = $12; - $2564 = $2563; - $2565 = HEAP32[$2564>>2]|0; - $2566 = (($2563) + 4)|0; - $2567 = $2566; - $2568 = HEAP32[$2567>>2]|0; - $2569 = (_bitshift64Ashr(($2565|0),($2568|0),14)|0); - $2570 = tempRet0; - $2571 = $13; - $2572 = $2571; - $2573 = HEAP32[$2572>>2]|0; - $2574 = (($2571) + 4)|0; - $2575 = $2574; - $2576 = HEAP32[$2575>>2]|0; - $2577 = (_bitshift64Shl(($2573|0),($2576|0),7)|0); - $2578 = tempRet0; - $2579 = $2569 | $2577; - $2570 | $2578; - $2580 = $2579&255; - $2581 = $1; - $2582 = ((($2581)) + 28|0); - HEAP8[$2582>>0] = $2580; - $2583 = $13; - $2584 = $2583; - $2585 = HEAP32[$2584>>2]|0; - $2586 = (($2583) + 4)|0; - $2587 = $2586; - $2588 = HEAP32[$2587>>2]|0; - $2589 = (_bitshift64Ashr(($2585|0),($2588|0),1)|0); - $2590 = tempRet0; - $2591 = $2589&255; - $2592 = $1; - $2593 = ((($2592)) + 29|0); - HEAP8[$2593>>0] = $2591; - $2594 = $13; - $2595 = $2594; - $2596 = HEAP32[$2595>>2]|0; - $2597 = (($2594) + 4)|0; - $2598 = $2597; - $2599 = HEAP32[$2598>>2]|0; - $2600 = (_bitshift64Ashr(($2596|0),($2599|0),9)|0); - $2601 = tempRet0; - $2602 = $2600&255; - $2603 = $1; - $2604 = ((($2603)) + 30|0); - HEAP8[$2604>>0] = $2602; - $2605 = $13; - $2606 = $2605; - $2607 = HEAP32[$2606>>2]|0; - $2608 = (($2605) + 4)|0; - $2609 = $2608; - $2610 = HEAP32[$2609>>2]|0; - $2611 = (_bitshift64Ashr(($2607|0),($2610|0),17)|0); - $2612 = tempRet0; - $2613 = $2611&255; - $2614 = $1; - $2615 = ((($2614)) + 31|0); - HEAP8[$2615>>0] = $2613; - STACKTOP = sp;return; -} -function _malloc($0) { - $0 = $0|0; - var $$0 = 0, $$0$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i20$i = 0, $$0169$i = 0, $$0170$i = 0, $$0171$i = 0, $$0192 = 0, $$0194 = 0, $$02014$i$i = 0, $$0202$lcssa$i$i = 0, $$02023$i$i = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$024372$i = 0, $$0259$i$i = 0, $$02604$i$i = 0, $$0261$lcssa$i$i = 0, $$02613$i$i = 0; - var $$0267$i$i = 0, $$0268$i$i = 0, $$0318$i = 0, $$032012$i = 0, $$0321$lcssa$i = 0, $$032111$i = 0, $$0323$i = 0, $$0329$i = 0, $$0335$i = 0, $$0336$i = 0, $$0338$i = 0, $$0339$i = 0, $$0344$i = 0, $$1174$i = 0, $$1174$i$be = 0, $$1174$i$ph = 0, $$1176$i = 0, $$1176$i$be = 0, $$1176$i$ph = 0, $$124471$i = 0; - var $$1263$i$i = 0, $$1263$i$i$be = 0, $$1263$i$i$ph = 0, $$1265$i$i = 0, $$1265$i$i$be = 0, $$1265$i$i$ph = 0, $$1319$i = 0, $$1324$i = 0, $$1340$i = 0, $$1346$i = 0, $$1346$i$be = 0, $$1346$i$ph = 0, $$1350$i = 0, $$1350$i$be = 0, $$1350$i$ph = 0, $$2234243136$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2331$i = 0, $$3$i = 0; - var $$3$i$i = 0, $$3$i198 = 0, $$3$i198211 = 0, $$3326$i = 0, $$3348$i = 0, $$4$lcssa$i = 0, $$415$i = 0, $$415$i$ph = 0, $$4236$i = 0, $$4327$lcssa$i = 0, $$432714$i = 0, $$432714$i$ph = 0, $$4333$i = 0, $$533413$i = 0, $$533413$i$ph = 0, $$723947$i = 0, $$748$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0; - var $$pre$i16$i = 0, $$pre$i195 = 0, $$pre$i204 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i17$iZ2D = 0, $$pre$phi$i205Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phiZ2D = 0, $$sink = 0, $$sink320 = 0, $$sink321 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0; - var $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0; - var $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0; - var $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0; - var $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0; - var $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0; - var $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0; - var $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0; - var $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0; - var $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0; - var $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0; - var $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0; - var $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0; - var $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0; - var $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0; - var $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0; - var $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0; - var $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0; - var $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0; - var $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0; - var $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0; - var $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0; - var $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0; - var $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0; - var $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0; - var $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0; - var $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0; - var $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0; - var $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0; - var $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0; - var $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0; - var $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0; - var $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0; - var $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0; - var $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0; - var $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0; - var $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0; - var $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0; - var $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0; - var $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0; - var $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0; - var $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0; - var $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0; - var $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0; - var $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0; - var $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0; - var $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0; - var $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0; - var $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0; - var $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $99 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i203 = 0, $not$$i = 0, $or$cond$i = 0, $or$cond$i199 = 0, $or$cond1$i = 0, $or$cond1$i197 = 0, $or$cond11$i = 0, $or$cond2$i = 0; - var $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond6$i = 0, $or$cond7$i = 0, $or$cond8$i = 0, $or$cond8$not$i = 0, $spec$select$i = 0, $spec$select$i201 = 0, $spec$select1$i = 0, $spec$select2$i = 0, $spec$select4$i = 0, $spec$select49$i = 0, $spec$select9$i = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0); - $1 = sp; - $2 = ($0>>>0)<(245); - do { - if ($2) { - $3 = ($0>>>0)<(11); - $4 = (($0) + 11)|0; - $5 = $4 & -8; - $6 = $3 ? 16 : $5; - $7 = $6 >>> 3; - $8 = HEAP32[296]|0; - $9 = $8 >>> $7; - $10 = $9 & 3; - $11 = ($10|0)==(0); - if (!($11)) { - $12 = $9 & 1; - $13 = $12 ^ 1; - $14 = (($13) + ($7))|0; - $15 = $14 << 1; - $16 = (1224 + ($15<<2)|0); - $17 = ((($16)) + 8|0); - $18 = HEAP32[$17>>2]|0; - $19 = ((($18)) + 8|0); - $20 = HEAP32[$19>>2]|0; - $21 = ($20|0)==($16|0); - if ($21) { - $22 = 1 << $14; - $23 = $22 ^ -1; - $24 = $8 & $23; - HEAP32[296] = $24; - } else { - $25 = ((($20)) + 12|0); - HEAP32[$25>>2] = $16; - HEAP32[$17>>2] = $20; - } - $26 = $14 << 3; - $27 = $26 | 3; - $28 = ((($18)) + 4|0); - HEAP32[$28>>2] = $27; - $29 = (($18) + ($26)|0); - $30 = ((($29)) + 4|0); - $31 = HEAP32[$30>>2]|0; - $32 = $31 | 1; - HEAP32[$30>>2] = $32; - $$0 = $19; - STACKTOP = sp;return ($$0|0); - } - $33 = HEAP32[(1192)>>2]|0; - $34 = ($6>>>0)>($33>>>0); - if ($34) { - $35 = ($9|0)==(0); - if (!($35)) { - $36 = $9 << $7; - $37 = 2 << $7; - $38 = (0 - ($37))|0; - $39 = $37 | $38; - $40 = $36 & $39; - $41 = (0 - ($40))|0; - $42 = $40 & $41; - $43 = (($42) + -1)|0; - $44 = $43 >>> 12; - $45 = $44 & 16; - $46 = $43 >>> $45; - $47 = $46 >>> 5; - $48 = $47 & 8; - $49 = $48 | $45; - $50 = $46 >>> $48; - $51 = $50 >>> 2; - $52 = $51 & 4; - $53 = $49 | $52; - $54 = $50 >>> $52; - $55 = $54 >>> 1; - $56 = $55 & 2; - $57 = $53 | $56; - $58 = $54 >>> $56; - $59 = $58 >>> 1; - $60 = $59 & 1; - $61 = $57 | $60; - $62 = $58 >>> $60; - $63 = (($61) + ($62))|0; - $64 = $63 << 1; - $65 = (1224 + ($64<<2)|0); - $66 = ((($65)) + 8|0); - $67 = HEAP32[$66>>2]|0; - $68 = ((($67)) + 8|0); - $69 = HEAP32[$68>>2]|0; - $70 = ($69|0)==($65|0); - if ($70) { - $71 = 1 << $63; - $72 = $71 ^ -1; - $73 = $8 & $72; - HEAP32[296] = $73; - $90 = $73; - } else { - $74 = ((($69)) + 12|0); - HEAP32[$74>>2] = $65; - HEAP32[$66>>2] = $69; - $90 = $8; - } - $75 = $63 << 3; - $76 = (($75) - ($6))|0; - $77 = $6 | 3; - $78 = ((($67)) + 4|0); - HEAP32[$78>>2] = $77; - $79 = (($67) + ($6)|0); - $80 = $76 | 1; - $81 = ((($79)) + 4|0); - HEAP32[$81>>2] = $80; - $82 = (($67) + ($75)|0); - HEAP32[$82>>2] = $76; - $83 = ($33|0)==(0); - if (!($83)) { - $84 = HEAP32[(1204)>>2]|0; - $85 = $33 >>> 3; - $86 = $85 << 1; - $87 = (1224 + ($86<<2)|0); - $88 = 1 << $85; - $89 = $90 & $88; - $91 = ($89|0)==(0); - if ($91) { - $92 = $90 | $88; - HEAP32[296] = $92; - $$pre = ((($87)) + 8|0); - $$0194 = $87;$$pre$phiZ2D = $$pre; - } else { - $93 = ((($87)) + 8|0); - $94 = HEAP32[$93>>2]|0; - $$0194 = $94;$$pre$phiZ2D = $93; - } - HEAP32[$$pre$phiZ2D>>2] = $84; - $95 = ((($$0194)) + 12|0); - HEAP32[$95>>2] = $84; - $96 = ((($84)) + 8|0); - HEAP32[$96>>2] = $$0194; - $97 = ((($84)) + 12|0); - HEAP32[$97>>2] = $87; - } - HEAP32[(1192)>>2] = $76; - HEAP32[(1204)>>2] = $79; - $$0 = $68; - STACKTOP = sp;return ($$0|0); - } - $98 = HEAP32[(1188)>>2]|0; - $99 = ($98|0)==(0); - if ($99) { - $$0192 = $6; - } else { - $100 = (0 - ($98))|0; - $101 = $98 & $100; - $102 = (($101) + -1)|0; - $103 = $102 >>> 12; - $104 = $103 & 16; - $105 = $102 >>> $104; - $106 = $105 >>> 5; - $107 = $106 & 8; - $108 = $107 | $104; - $109 = $105 >>> $107; - $110 = $109 >>> 2; - $111 = $110 & 4; - $112 = $108 | $111; - $113 = $109 >>> $111; - $114 = $113 >>> 1; - $115 = $114 & 2; - $116 = $112 | $115; - $117 = $113 >>> $115; - $118 = $117 >>> 1; - $119 = $118 & 1; - $120 = $116 | $119; - $121 = $117 >>> $119; - $122 = (($120) + ($121))|0; - $123 = (1488 + ($122<<2)|0); - $124 = HEAP32[$123>>2]|0; - $125 = ((($124)) + 4|0); - $126 = HEAP32[$125>>2]|0; - $127 = $126 & -8; - $128 = (($127) - ($6))|0; - $$0169$i = $124;$$0170$i = $124;$$0171$i = $128; - while(1) { - $129 = ((($$0169$i)) + 16|0); - $130 = HEAP32[$129>>2]|0; - $131 = ($130|0)==(0|0); - if ($131) { - $132 = ((($$0169$i)) + 20|0); - $133 = HEAP32[$132>>2]|0; - $134 = ($133|0)==(0|0); - if ($134) { - break; - } else { - $136 = $133; - } - } else { - $136 = $130; - } - $135 = ((($136)) + 4|0); - $137 = HEAP32[$135>>2]|0; - $138 = $137 & -8; - $139 = (($138) - ($6))|0; - $140 = ($139>>>0)<($$0171$i>>>0); - $spec$select$i = $140 ? $139 : $$0171$i; - $spec$select1$i = $140 ? $136 : $$0170$i; - $$0169$i = $136;$$0170$i = $spec$select1$i;$$0171$i = $spec$select$i; - } - $141 = (($$0170$i) + ($6)|0); - $142 = ($141>>>0)>($$0170$i>>>0); - if ($142) { - $143 = ((($$0170$i)) + 24|0); - $144 = HEAP32[$143>>2]|0; - $145 = ((($$0170$i)) + 12|0); - $146 = HEAP32[$145>>2]|0; - $147 = ($146|0)==($$0170$i|0); - do { - if ($147) { - $152 = ((($$0170$i)) + 20|0); - $153 = HEAP32[$152>>2]|0; - $154 = ($153|0)==(0|0); - if ($154) { - $155 = ((($$0170$i)) + 16|0); - $156 = HEAP32[$155>>2]|0; - $157 = ($156|0)==(0|0); - if ($157) { - $$3$i = 0; - break; - } else { - $$1174$i$ph = $156;$$1176$i$ph = $155; - } - } else { - $$1174$i$ph = $153;$$1176$i$ph = $152; - } - $$1174$i = $$1174$i$ph;$$1176$i = $$1176$i$ph; - while(1) { - $158 = ((($$1174$i)) + 20|0); - $159 = HEAP32[$158>>2]|0; - $160 = ($159|0)==(0|0); - if ($160) { - $161 = ((($$1174$i)) + 16|0); - $162 = HEAP32[$161>>2]|0; - $163 = ($162|0)==(0|0); - if ($163) { - break; - } else { - $$1174$i$be = $162;$$1176$i$be = $161; - } - } else { - $$1174$i$be = $159;$$1176$i$be = $158; - } - $$1174$i = $$1174$i$be;$$1176$i = $$1176$i$be; - } - HEAP32[$$1176$i>>2] = 0; - $$3$i = $$1174$i; - } else { - $148 = ((($$0170$i)) + 8|0); - $149 = HEAP32[$148>>2]|0; - $150 = ((($149)) + 12|0); - HEAP32[$150>>2] = $146; - $151 = ((($146)) + 8|0); - HEAP32[$151>>2] = $149; - $$3$i = $146; - } - } while(0); - $164 = ($144|0)==(0|0); - do { - if (!($164)) { - $165 = ((($$0170$i)) + 28|0); - $166 = HEAP32[$165>>2]|0; - $167 = (1488 + ($166<<2)|0); - $168 = HEAP32[$167>>2]|0; - $169 = ($$0170$i|0)==($168|0); - if ($169) { - HEAP32[$167>>2] = $$3$i; - $cond$i = ($$3$i|0)==(0|0); - if ($cond$i) { - $170 = 1 << $166; - $171 = $170 ^ -1; - $172 = $98 & $171; - HEAP32[(1188)>>2] = $172; - break; - } - } else { - $173 = ((($144)) + 16|0); - $174 = HEAP32[$173>>2]|0; - $175 = ($174|0)==($$0170$i|0); - $176 = ((($144)) + 20|0); - $$sink = $175 ? $173 : $176; - HEAP32[$$sink>>2] = $$3$i; - $177 = ($$3$i|0)==(0|0); - if ($177) { - break; - } - } - $178 = ((($$3$i)) + 24|0); - HEAP32[$178>>2] = $144; - $179 = ((($$0170$i)) + 16|0); - $180 = HEAP32[$179>>2]|0; - $181 = ($180|0)==(0|0); - if (!($181)) { - $182 = ((($$3$i)) + 16|0); - HEAP32[$182>>2] = $180; - $183 = ((($180)) + 24|0); - HEAP32[$183>>2] = $$3$i; - } - $184 = ((($$0170$i)) + 20|0); - $185 = HEAP32[$184>>2]|0; - $186 = ($185|0)==(0|0); - if (!($186)) { - $187 = ((($$3$i)) + 20|0); - HEAP32[$187>>2] = $185; - $188 = ((($185)) + 24|0); - HEAP32[$188>>2] = $$3$i; - } - } - } while(0); - $189 = ($$0171$i>>>0)<(16); - if ($189) { - $190 = (($$0171$i) + ($6))|0; - $191 = $190 | 3; - $192 = ((($$0170$i)) + 4|0); - HEAP32[$192>>2] = $191; - $193 = (($$0170$i) + ($190)|0); - $194 = ((($193)) + 4|0); - $195 = HEAP32[$194>>2]|0; - $196 = $195 | 1; - HEAP32[$194>>2] = $196; - } else { - $197 = $6 | 3; - $198 = ((($$0170$i)) + 4|0); - HEAP32[$198>>2] = $197; - $199 = $$0171$i | 1; - $200 = ((($141)) + 4|0); - HEAP32[$200>>2] = $199; - $201 = (($141) + ($$0171$i)|0); - HEAP32[$201>>2] = $$0171$i; - $202 = ($33|0)==(0); - if (!($202)) { - $203 = HEAP32[(1204)>>2]|0; - $204 = $33 >>> 3; - $205 = $204 << 1; - $206 = (1224 + ($205<<2)|0); - $207 = 1 << $204; - $208 = $207 & $8; - $209 = ($208|0)==(0); - if ($209) { - $210 = $207 | $8; - HEAP32[296] = $210; - $$pre$i = ((($206)) + 8|0); - $$0$i = $206;$$pre$phi$iZ2D = $$pre$i; - } else { - $211 = ((($206)) + 8|0); - $212 = HEAP32[$211>>2]|0; - $$0$i = $212;$$pre$phi$iZ2D = $211; - } - HEAP32[$$pre$phi$iZ2D>>2] = $203; - $213 = ((($$0$i)) + 12|0); - HEAP32[$213>>2] = $203; - $214 = ((($203)) + 8|0); - HEAP32[$214>>2] = $$0$i; - $215 = ((($203)) + 12|0); - HEAP32[$215>>2] = $206; - } - HEAP32[(1192)>>2] = $$0171$i; - HEAP32[(1204)>>2] = $141; - } - $216 = ((($$0170$i)) + 8|0); - $$0 = $216; - STACKTOP = sp;return ($$0|0); - } else { - $$0192 = $6; - } - } - } else { - $$0192 = $6; - } - } else { - $217 = ($0>>>0)>(4294967231); - if ($217) { - $$0192 = -1; - } else { - $218 = (($0) + 11)|0; - $219 = $218 & -8; - $220 = HEAP32[(1188)>>2]|0; - $221 = ($220|0)==(0); - if ($221) { - $$0192 = $219; - } else { - $222 = (0 - ($219))|0; - $223 = $218 >>> 8; - $224 = ($223|0)==(0); - if ($224) { - $$0335$i = 0; - } else { - $225 = ($219>>>0)>(16777215); - if ($225) { - $$0335$i = 31; - } else { - $226 = (($223) + 1048320)|0; - $227 = $226 >>> 16; - $228 = $227 & 8; - $229 = $223 << $228; - $230 = (($229) + 520192)|0; - $231 = $230 >>> 16; - $232 = $231 & 4; - $233 = $232 | $228; - $234 = $229 << $232; - $235 = (($234) + 245760)|0; - $236 = $235 >>> 16; - $237 = $236 & 2; - $238 = $233 | $237; - $239 = (14 - ($238))|0; - $240 = $234 << $237; - $241 = $240 >>> 15; - $242 = (($239) + ($241))|0; - $243 = $242 << 1; - $244 = (($242) + 7)|0; - $245 = $219 >>> $244; - $246 = $245 & 1; - $247 = $246 | $243; - $$0335$i = $247; - } - } - $248 = (1488 + ($$0335$i<<2)|0); - $249 = HEAP32[$248>>2]|0; - $250 = ($249|0)==(0|0); - L79: do { - if ($250) { - $$2331$i = 0;$$3$i198 = 0;$$3326$i = $222; - label = 61; - } else { - $251 = ($$0335$i|0)==(31); - $252 = $$0335$i >>> 1; - $253 = (25 - ($252))|0; - $254 = $251 ? 0 : $253; - $255 = $219 << $254; - $$0318$i = 0;$$0323$i = $222;$$0329$i = $249;$$0336$i = $255;$$0339$i = 0; - while(1) { - $256 = ((($$0329$i)) + 4|0); - $257 = HEAP32[$256>>2]|0; - $258 = $257 & -8; - $259 = (($258) - ($219))|0; - $260 = ($259>>>0)<($$0323$i>>>0); - if ($260) { - $261 = ($259|0)==(0); - if ($261) { - $$415$i$ph = $$0329$i;$$432714$i$ph = 0;$$533413$i$ph = $$0329$i; - label = 65; - break L79; - } else { - $$1319$i = $$0329$i;$$1324$i = $259; - } - } else { - $$1319$i = $$0318$i;$$1324$i = $$0323$i; - } - $262 = ((($$0329$i)) + 20|0); - $263 = HEAP32[$262>>2]|0; - $264 = $$0336$i >>> 31; - $265 = (((($$0329$i)) + 16|0) + ($264<<2)|0); - $266 = HEAP32[$265>>2]|0; - $267 = ($263|0)==(0|0); - $268 = ($263|0)==($266|0); - $or$cond1$i197 = $267 | $268; - $$1340$i = $or$cond1$i197 ? $$0339$i : $263; - $269 = ($266|0)==(0|0); - $spec$select4$i = $$0336$i << 1; - if ($269) { - $$2331$i = $$1340$i;$$3$i198 = $$1319$i;$$3326$i = $$1324$i; - label = 61; - break; - } else { - $$0318$i = $$1319$i;$$0323$i = $$1324$i;$$0329$i = $266;$$0336$i = $spec$select4$i;$$0339$i = $$1340$i; - } - } - } - } while(0); - if ((label|0) == 61) { - $270 = ($$2331$i|0)==(0|0); - $271 = ($$3$i198|0)==(0|0); - $or$cond$i199 = $270 & $271; - if ($or$cond$i199) { - $272 = 2 << $$0335$i; - $273 = (0 - ($272))|0; - $274 = $272 | $273; - $275 = $274 & $220; - $276 = ($275|0)==(0); - if ($276) { - $$0192 = $219; - break; - } - $277 = (0 - ($275))|0; - $278 = $275 & $277; - $279 = (($278) + -1)|0; - $280 = $279 >>> 12; - $281 = $280 & 16; - $282 = $279 >>> $281; - $283 = $282 >>> 5; - $284 = $283 & 8; - $285 = $284 | $281; - $286 = $282 >>> $284; - $287 = $286 >>> 2; - $288 = $287 & 4; - $289 = $285 | $288; - $290 = $286 >>> $288; - $291 = $290 >>> 1; - $292 = $291 & 2; - $293 = $289 | $292; - $294 = $290 >>> $292; - $295 = $294 >>> 1; - $296 = $295 & 1; - $297 = $293 | $296; - $298 = $294 >>> $296; - $299 = (($297) + ($298))|0; - $300 = (1488 + ($299<<2)|0); - $301 = HEAP32[$300>>2]|0; - $$3$i198211 = 0;$$4333$i = $301; - } else { - $$3$i198211 = $$3$i198;$$4333$i = $$2331$i; - } - $302 = ($$4333$i|0)==(0|0); - if ($302) { - $$4$lcssa$i = $$3$i198211;$$4327$lcssa$i = $$3326$i; - } else { - $$415$i$ph = $$3$i198211;$$432714$i$ph = $$3326$i;$$533413$i$ph = $$4333$i; - label = 65; - } - } - if ((label|0) == 65) { - $$415$i = $$415$i$ph;$$432714$i = $$432714$i$ph;$$533413$i = $$533413$i$ph; - while(1) { - $303 = ((($$533413$i)) + 4|0); - $304 = HEAP32[$303>>2]|0; - $305 = $304 & -8; - $306 = (($305) - ($219))|0; - $307 = ($306>>>0)<($$432714$i>>>0); - $spec$select$i201 = $307 ? $306 : $$432714$i; - $spec$select2$i = $307 ? $$533413$i : $$415$i; - $308 = ((($$533413$i)) + 16|0); - $309 = HEAP32[$308>>2]|0; - $310 = ($309|0)==(0|0); - if ($310) { - $311 = ((($$533413$i)) + 20|0); - $312 = HEAP32[$311>>2]|0; - $314 = $312; - } else { - $314 = $309; - } - $313 = ($314|0)==(0|0); - if ($313) { - $$4$lcssa$i = $spec$select2$i;$$4327$lcssa$i = $spec$select$i201; - break; - } else { - $$415$i = $spec$select2$i;$$432714$i = $spec$select$i201;$$533413$i = $314; - } - } - } - $315 = ($$4$lcssa$i|0)==(0|0); - if ($315) { - $$0192 = $219; - } else { - $316 = HEAP32[(1192)>>2]|0; - $317 = (($316) - ($219))|0; - $318 = ($$4327$lcssa$i>>>0)<($317>>>0); - if ($318) { - $319 = (($$4$lcssa$i) + ($219)|0); - $320 = ($319>>>0)>($$4$lcssa$i>>>0); - if ($320) { - $321 = ((($$4$lcssa$i)) + 24|0); - $322 = HEAP32[$321>>2]|0; - $323 = ((($$4$lcssa$i)) + 12|0); - $324 = HEAP32[$323>>2]|0; - $325 = ($324|0)==($$4$lcssa$i|0); - do { - if ($325) { - $330 = ((($$4$lcssa$i)) + 20|0); - $331 = HEAP32[$330>>2]|0; - $332 = ($331|0)==(0|0); - if ($332) { - $333 = ((($$4$lcssa$i)) + 16|0); - $334 = HEAP32[$333>>2]|0; - $335 = ($334|0)==(0|0); - if ($335) { - $$3348$i = 0; - break; - } else { - $$1346$i$ph = $334;$$1350$i$ph = $333; - } - } else { - $$1346$i$ph = $331;$$1350$i$ph = $330; - } - $$1346$i = $$1346$i$ph;$$1350$i = $$1350$i$ph; - while(1) { - $336 = ((($$1346$i)) + 20|0); - $337 = HEAP32[$336>>2]|0; - $338 = ($337|0)==(0|0); - if ($338) { - $339 = ((($$1346$i)) + 16|0); - $340 = HEAP32[$339>>2]|0; - $341 = ($340|0)==(0|0); - if ($341) { - break; - } else { - $$1346$i$be = $340;$$1350$i$be = $339; - } - } else { - $$1346$i$be = $337;$$1350$i$be = $336; - } - $$1346$i = $$1346$i$be;$$1350$i = $$1350$i$be; - } - HEAP32[$$1350$i>>2] = 0; - $$3348$i = $$1346$i; - } else { - $326 = ((($$4$lcssa$i)) + 8|0); - $327 = HEAP32[$326>>2]|0; - $328 = ((($327)) + 12|0); - HEAP32[$328>>2] = $324; - $329 = ((($324)) + 8|0); - HEAP32[$329>>2] = $327; - $$3348$i = $324; - } - } while(0); - $342 = ($322|0)==(0|0); - do { - if ($342) { - $425 = $220; - } else { - $343 = ((($$4$lcssa$i)) + 28|0); - $344 = HEAP32[$343>>2]|0; - $345 = (1488 + ($344<<2)|0); - $346 = HEAP32[$345>>2]|0; - $347 = ($$4$lcssa$i|0)==($346|0); - if ($347) { - HEAP32[$345>>2] = $$3348$i; - $cond$i203 = ($$3348$i|0)==(0|0); - if ($cond$i203) { - $348 = 1 << $344; - $349 = $348 ^ -1; - $350 = $220 & $349; - HEAP32[(1188)>>2] = $350; - $425 = $350; - break; - } - } else { - $351 = ((($322)) + 16|0); - $352 = HEAP32[$351>>2]|0; - $353 = ($352|0)==($$4$lcssa$i|0); - $354 = ((($322)) + 20|0); - $$sink320 = $353 ? $351 : $354; - HEAP32[$$sink320>>2] = $$3348$i; - $355 = ($$3348$i|0)==(0|0); - if ($355) { - $425 = $220; - break; - } - } - $356 = ((($$3348$i)) + 24|0); - HEAP32[$356>>2] = $322; - $357 = ((($$4$lcssa$i)) + 16|0); - $358 = HEAP32[$357>>2]|0; - $359 = ($358|0)==(0|0); - if (!($359)) { - $360 = ((($$3348$i)) + 16|0); - HEAP32[$360>>2] = $358; - $361 = ((($358)) + 24|0); - HEAP32[$361>>2] = $$3348$i; - } - $362 = ((($$4$lcssa$i)) + 20|0); - $363 = HEAP32[$362>>2]|0; - $364 = ($363|0)==(0|0); - if ($364) { - $425 = $220; - } else { - $365 = ((($$3348$i)) + 20|0); - HEAP32[$365>>2] = $363; - $366 = ((($363)) + 24|0); - HEAP32[$366>>2] = $$3348$i; - $425 = $220; - } - } - } while(0); - $367 = ($$4327$lcssa$i>>>0)<(16); - L128: do { - if ($367) { - $368 = (($$4327$lcssa$i) + ($219))|0; - $369 = $368 | 3; - $370 = ((($$4$lcssa$i)) + 4|0); - HEAP32[$370>>2] = $369; - $371 = (($$4$lcssa$i) + ($368)|0); - $372 = ((($371)) + 4|0); - $373 = HEAP32[$372>>2]|0; - $374 = $373 | 1; - HEAP32[$372>>2] = $374; - } else { - $375 = $219 | 3; - $376 = ((($$4$lcssa$i)) + 4|0); - HEAP32[$376>>2] = $375; - $377 = $$4327$lcssa$i | 1; - $378 = ((($319)) + 4|0); - HEAP32[$378>>2] = $377; - $379 = (($319) + ($$4327$lcssa$i)|0); - HEAP32[$379>>2] = $$4327$lcssa$i; - $380 = $$4327$lcssa$i >>> 3; - $381 = ($$4327$lcssa$i>>>0)<(256); - if ($381) { - $382 = $380 << 1; - $383 = (1224 + ($382<<2)|0); - $384 = HEAP32[296]|0; - $385 = 1 << $380; - $386 = $384 & $385; - $387 = ($386|0)==(0); - if ($387) { - $388 = $384 | $385; - HEAP32[296] = $388; - $$pre$i204 = ((($383)) + 8|0); - $$0344$i = $383;$$pre$phi$i205Z2D = $$pre$i204; - } else { - $389 = ((($383)) + 8|0); - $390 = HEAP32[$389>>2]|0; - $$0344$i = $390;$$pre$phi$i205Z2D = $389; - } - HEAP32[$$pre$phi$i205Z2D>>2] = $319; - $391 = ((($$0344$i)) + 12|0); - HEAP32[$391>>2] = $319; - $392 = ((($319)) + 8|0); - HEAP32[$392>>2] = $$0344$i; - $393 = ((($319)) + 12|0); - HEAP32[$393>>2] = $383; - break; - } - $394 = $$4327$lcssa$i >>> 8; - $395 = ($394|0)==(0); - if ($395) { - $$0338$i = 0; - } else { - $396 = ($$4327$lcssa$i>>>0)>(16777215); - if ($396) { - $$0338$i = 31; - } else { - $397 = (($394) + 1048320)|0; - $398 = $397 >>> 16; - $399 = $398 & 8; - $400 = $394 << $399; - $401 = (($400) + 520192)|0; - $402 = $401 >>> 16; - $403 = $402 & 4; - $404 = $403 | $399; - $405 = $400 << $403; - $406 = (($405) + 245760)|0; - $407 = $406 >>> 16; - $408 = $407 & 2; - $409 = $404 | $408; - $410 = (14 - ($409))|0; - $411 = $405 << $408; - $412 = $411 >>> 15; - $413 = (($410) + ($412))|0; - $414 = $413 << 1; - $415 = (($413) + 7)|0; - $416 = $$4327$lcssa$i >>> $415; - $417 = $416 & 1; - $418 = $417 | $414; - $$0338$i = $418; - } - } - $419 = (1488 + ($$0338$i<<2)|0); - $420 = ((($319)) + 28|0); - HEAP32[$420>>2] = $$0338$i; - $421 = ((($319)) + 16|0); - $422 = ((($421)) + 4|0); - HEAP32[$422>>2] = 0; - HEAP32[$421>>2] = 0; - $423 = 1 << $$0338$i; - $424 = $425 & $423; - $426 = ($424|0)==(0); - if ($426) { - $427 = $425 | $423; - HEAP32[(1188)>>2] = $427; - HEAP32[$419>>2] = $319; - $428 = ((($319)) + 24|0); - HEAP32[$428>>2] = $419; - $429 = ((($319)) + 12|0); - HEAP32[$429>>2] = $319; - $430 = ((($319)) + 8|0); - HEAP32[$430>>2] = $319; - break; - } - $431 = HEAP32[$419>>2]|0; - $432 = ((($431)) + 4|0); - $433 = HEAP32[$432>>2]|0; - $434 = $433 & -8; - $435 = ($434|0)==($$4327$lcssa$i|0); - L145: do { - if ($435) { - $$0321$lcssa$i = $431; - } else { - $436 = ($$0338$i|0)==(31); - $437 = $$0338$i >>> 1; - $438 = (25 - ($437))|0; - $439 = $436 ? 0 : $438; - $440 = $$4327$lcssa$i << $439; - $$032012$i = $440;$$032111$i = $431; - while(1) { - $447 = $$032012$i >>> 31; - $448 = (((($$032111$i)) + 16|0) + ($447<<2)|0); - $443 = HEAP32[$448>>2]|0; - $449 = ($443|0)==(0|0); - if ($449) { - break; - } - $441 = $$032012$i << 1; - $442 = ((($443)) + 4|0); - $444 = HEAP32[$442>>2]|0; - $445 = $444 & -8; - $446 = ($445|0)==($$4327$lcssa$i|0); - if ($446) { - $$0321$lcssa$i = $443; - break L145; - } else { - $$032012$i = $441;$$032111$i = $443; - } - } - HEAP32[$448>>2] = $319; - $450 = ((($319)) + 24|0); - HEAP32[$450>>2] = $$032111$i; - $451 = ((($319)) + 12|0); - HEAP32[$451>>2] = $319; - $452 = ((($319)) + 8|0); - HEAP32[$452>>2] = $319; - break L128; - } - } while(0); - $453 = ((($$0321$lcssa$i)) + 8|0); - $454 = HEAP32[$453>>2]|0; - $455 = ((($454)) + 12|0); - HEAP32[$455>>2] = $319; - HEAP32[$453>>2] = $319; - $456 = ((($319)) + 8|0); - HEAP32[$456>>2] = $454; - $457 = ((($319)) + 12|0); - HEAP32[$457>>2] = $$0321$lcssa$i; - $458 = ((($319)) + 24|0); - HEAP32[$458>>2] = 0; - } - } while(0); - $459 = ((($$4$lcssa$i)) + 8|0); - $$0 = $459; - STACKTOP = sp;return ($$0|0); - } else { - $$0192 = $219; - } - } else { - $$0192 = $219; - } - } - } - } + function _load_3($0) { + $0 = $0 | 0; + var $1 = 0, + $10 = 0, + $11 = 0, + $12 = 0, + $13 = 0, + $14 = 0, + $15 = 0, + $16 = 0, + $17 = 0, + $18 = 0, + $19 = 0, + $2 = 0, + $20 = 0, + $21 = 0, + $22 = 0, + $23 = 0, + $24 = 0, + $25 = 0, + $26 = 0, + $27 = 0; + var $28 = 0, + $29 = 0, + $3 = 0, + $30 = 0, + $31 = 0, + $32 = 0, + $33 = 0, + $34 = 0, + $35 = 0, + $36 = 0, + $37 = 0, + $38 = 0, + $39 = 0, + $4 = 0, + $40 = 0, + $41 = 0, + $42 = 0, + $43 = 0, + $44 = 0, + $45 = 0; + var $46 = 0, + $47 = 0, + $48 = 0, + $49 = 0, + $5 = 0, + $50 = 0, + $51 = 0, + $6 = 0, + $7 = 0, + $8 = 0, + $9 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 16) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(16 | 0); + $2 = sp; + $1 = $0; + $3 = $1; + $4 = HEAP8[$3 >> 0] | 0; + $5 = $4 & 255; + $6 = $2; + $7 = $6; + HEAP32[$7 >> 2] = $5; + $8 = ($6 + 4) | 0; + $9 = $8; + HEAP32[$9 >> 2] = 0; + $10 = $1; + $11 = ($10 + 1) | 0; + $12 = HEAP8[$11 >> 0] | 0; + $13 = $12 & 255; + $14 = _bitshift64Shl($13 | 0, 0, 8) | 0; + $15 = tempRet0; + $16 = $2; + $17 = $16; + $18 = HEAP32[$17 >> 2] | 0; + $19 = ($16 + 4) | 0; + $20 = $19; + $21 = HEAP32[$20 >> 2] | 0; + $22 = $18 | $14; + $23 = $21 | $15; + $24 = $2; + $25 = $24; + HEAP32[$25 >> 2] = $22; + $26 = ($24 + 4) | 0; + $27 = $26; + HEAP32[$27 >> 2] = $23; + $28 = $1; + $29 = ($28 + 2) | 0; + $30 = HEAP8[$29 >> 0] | 0; + $31 = $30 & 255; + $32 = _bitshift64Shl($31 | 0, 0, 16) | 0; + $33 = tempRet0; + $34 = $2; + $35 = $34; + $36 = HEAP32[$35 >> 2] | 0; + $37 = ($34 + 4) | 0; + $38 = $37; + $39 = HEAP32[$38 >> 2] | 0; + $40 = $36 | $32; + $41 = $39 | $33; + $42 = $2; + $43 = $42; + HEAP32[$43 >> 2] = $40; + $44 = ($42 + 4) | 0; + $45 = $44; + HEAP32[$45 >> 2] = $41; + $46 = $2; + $47 = $46; + $48 = HEAP32[$47 >> 2] | 0; + $49 = ($46 + 4) | 0; + $50 = $49; + $51 = HEAP32[$50 >> 2] | 0; + tempRet0 = $51; + STACKTOP = sp; + return $48 | 0; } - } while(0); - $460 = HEAP32[(1192)>>2]|0; - $461 = ($460>>>0)<($$0192>>>0); - if (!($461)) { - $462 = (($460) - ($$0192))|0; - $463 = HEAP32[(1204)>>2]|0; - $464 = ($462>>>0)>(15); - if ($464) { - $465 = (($463) + ($$0192)|0); - HEAP32[(1204)>>2] = $465; - HEAP32[(1192)>>2] = $462; - $466 = $462 | 1; - $467 = ((($465)) + 4|0); - HEAP32[$467>>2] = $466; - $468 = (($463) + ($460)|0); - HEAP32[$468>>2] = $462; - $469 = $$0192 | 3; - $470 = ((($463)) + 4|0); - HEAP32[$470>>2] = $469; - } else { - HEAP32[(1192)>>2] = 0; - HEAP32[(1204)>>2] = 0; - $471 = $460 | 3; - $472 = ((($463)) + 4|0); - HEAP32[$472>>2] = $471; - $473 = (($463) + ($460)|0); - $474 = ((($473)) + 4|0); - $475 = HEAP32[$474>>2]|0; - $476 = $475 | 1; - HEAP32[$474>>2] = $476; + function _load_4($0) { + $0 = $0 | 0; + var $1 = 0, + $10 = 0, + $11 = 0, + $12 = 0, + $13 = 0, + $14 = 0, + $15 = 0, + $16 = 0, + $17 = 0, + $18 = 0, + $19 = 0, + $2 = 0, + $20 = 0, + $21 = 0, + $22 = 0, + $23 = 0, + $24 = 0, + $25 = 0, + $26 = 0, + $27 = 0; + var $28 = 0, + $29 = 0, + $3 = 0, + $30 = 0, + $31 = 0, + $32 = 0, + $33 = 0, + $34 = 0, + $35 = 0, + $36 = 0, + $37 = 0, + $38 = 0, + $39 = 0, + $4 = 0, + $40 = 0, + $41 = 0, + $42 = 0, + $43 = 0, + $44 = 0, + $45 = 0; + var $46 = 0, + $47 = 0, + $48 = 0, + $49 = 0, + $5 = 0, + $50 = 0, + $51 = 0, + $52 = 0, + $53 = 0, + $54 = 0, + $55 = 0, + $56 = 0, + $57 = 0, + $58 = 0, + $59 = 0, + $6 = 0, + $60 = 0, + $61 = 0, + $62 = 0, + $63 = 0; + var $64 = 0, + $65 = 0, + $66 = 0, + $67 = 0, + $68 = 0, + $69 = 0, + $7 = 0, + $8 = 0, + $9 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 16) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(16 | 0); + $2 = sp; + $1 = $0; + $3 = $1; + $4 = HEAP8[$3 >> 0] | 0; + $5 = $4 & 255; + $6 = $2; + $7 = $6; + HEAP32[$7 >> 2] = $5; + $8 = ($6 + 4) | 0; + $9 = $8; + HEAP32[$9 >> 2] = 0; + $10 = $1; + $11 = ($10 + 1) | 0; + $12 = HEAP8[$11 >> 0] | 0; + $13 = $12 & 255; + $14 = _bitshift64Shl($13 | 0, 0, 8) | 0; + $15 = tempRet0; + $16 = $2; + $17 = $16; + $18 = HEAP32[$17 >> 2] | 0; + $19 = ($16 + 4) | 0; + $20 = $19; + $21 = HEAP32[$20 >> 2] | 0; + $22 = $18 | $14; + $23 = $21 | $15; + $24 = $2; + $25 = $24; + HEAP32[$25 >> 2] = $22; + $26 = ($24 + 4) | 0; + $27 = $26; + HEAP32[$27 >> 2] = $23; + $28 = $1; + $29 = ($28 + 2) | 0; + $30 = HEAP8[$29 >> 0] | 0; + $31 = $30 & 255; + $32 = _bitshift64Shl($31 | 0, 0, 16) | 0; + $33 = tempRet0; + $34 = $2; + $35 = $34; + $36 = HEAP32[$35 >> 2] | 0; + $37 = ($34 + 4) | 0; + $38 = $37; + $39 = HEAP32[$38 >> 2] | 0; + $40 = $36 | $32; + $41 = $39 | $33; + $42 = $2; + $43 = $42; + HEAP32[$43 >> 2] = $40; + $44 = ($42 + 4) | 0; + $45 = $44; + HEAP32[$45 >> 2] = $41; + $46 = $1; + $47 = ($46 + 3) | 0; + $48 = HEAP8[$47 >> 0] | 0; + $49 = $48 & 255; + $50 = _bitshift64Shl($49 | 0, 0, 24) | 0; + $51 = tempRet0; + $52 = $2; + $53 = $52; + $54 = HEAP32[$53 >> 2] | 0; + $55 = ($52 + 4) | 0; + $56 = $55; + $57 = HEAP32[$56 >> 2] | 0; + $58 = $54 | $50; + $59 = $57 | $51; + $60 = $2; + $61 = $60; + HEAP32[$61 >> 2] = $58; + $62 = ($60 + 4) | 0; + $63 = $62; + HEAP32[$63 >> 2] = $59; + $64 = $2; + $65 = $64; + $66 = HEAP32[$65 >> 2] | 0; + $67 = ($64 + 4) | 0; + $68 = $67; + $69 = HEAP32[$68 >> 2] | 0; + tempRet0 = $69; + STACKTOP = sp; + return $66 | 0; } - $477 = ((($463)) + 8|0); - $$0 = $477; - STACKTOP = sp;return ($$0|0); - } - $478 = HEAP32[(1196)>>2]|0; - $479 = ($478>>>0)>($$0192>>>0); - if ($479) { - $480 = (($478) - ($$0192))|0; - HEAP32[(1196)>>2] = $480; - $481 = HEAP32[(1208)>>2]|0; - $482 = (($481) + ($$0192)|0); - HEAP32[(1208)>>2] = $482; - $483 = $480 | 1; - $484 = ((($482)) + 4|0); - HEAP32[$484>>2] = $483; - $485 = $$0192 | 3; - $486 = ((($481)) + 4|0); - HEAP32[$486>>2] = $485; - $487 = ((($481)) + 8|0); - $$0 = $487; - STACKTOP = sp;return ($$0|0); - } - $488 = HEAP32[414]|0; - $489 = ($488|0)==(0); - if ($489) { - HEAP32[(1664)>>2] = 4096; - HEAP32[(1660)>>2] = 4096; - HEAP32[(1668)>>2] = -1; - HEAP32[(1672)>>2] = -1; - HEAP32[(1676)>>2] = 0; - HEAP32[(1628)>>2] = 0; - $490 = $1; - $491 = $490 & -16; - $492 = $491 ^ 1431655768; - HEAP32[414] = $492; - $496 = 4096; - } else { - $$pre$i195 = HEAP32[(1664)>>2]|0; - $496 = $$pre$i195; - } - $493 = (($$0192) + 48)|0; - $494 = (($$0192) + 47)|0; - $495 = (($496) + ($494))|0; - $497 = (0 - ($496))|0; - $498 = $495 & $497; - $499 = ($498>>>0)>($$0192>>>0); - if (!($499)) { - $$0 = 0; - STACKTOP = sp;return ($$0|0); - } - $500 = HEAP32[(1624)>>2]|0; - $501 = ($500|0)==(0); - if (!($501)) { - $502 = HEAP32[(1616)>>2]|0; - $503 = (($502) + ($498))|0; - $504 = ($503>>>0)<=($502>>>0); - $505 = ($503>>>0)>($500>>>0); - $or$cond1$i = $504 | $505; - if ($or$cond1$i) { - $$0 = 0; - STACKTOP = sp;return ($$0|0); - } - } - $506 = HEAP32[(1628)>>2]|0; - $507 = $506 & 4; - $508 = ($507|0)==(0); - L178: do { - if ($508) { - $509 = HEAP32[(1208)>>2]|0; - $510 = ($509|0)==(0|0); - L180: do { - if ($510) { - label = 128; - } else { - $$0$i20$i = (1632); - while(1) { - $511 = HEAP32[$$0$i20$i>>2]|0; - $512 = ($511>>>0)>($509>>>0); - if (!($512)) { - $513 = ((($$0$i20$i)) + 4|0); - $514 = HEAP32[$513>>2]|0; - $515 = (($511) + ($514)|0); - $516 = ($515>>>0)>($509>>>0); - if ($516) { - break; - } - } - $517 = ((($$0$i20$i)) + 8|0); - $518 = HEAP32[$517>>2]|0; - $519 = ($518|0)==(0|0); - if ($519) { - label = 128; - break L180; - } else { - $$0$i20$i = $518; - } - } - $542 = (($495) - ($478))|0; - $543 = $542 & $497; - $544 = ($543>>>0)<(2147483647); - if ($544) { - $545 = ((($$0$i20$i)) + 4|0); - $546 = (_sbrk(($543|0))|0); - $547 = HEAP32[$$0$i20$i>>2]|0; - $548 = HEAP32[$545>>2]|0; - $549 = (($547) + ($548)|0); - $550 = ($546|0)==($549|0); - if ($550) { - $551 = ($546|0)==((-1)|0); - if ($551) { - $$2234243136$i = $543; - } else { - $$723947$i = $543;$$748$i = $546; - label = 145; - break L178; - } - } else { - $$2247$ph$i = $546;$$2253$ph$i = $543; - label = 136; - } - } else { - $$2234243136$i = 0; - } - } - } while(0); - do { - if ((label|0) == 128) { - $520 = (_sbrk(0)|0); - $521 = ($520|0)==((-1)|0); - if ($521) { - $$2234243136$i = 0; - } else { - $522 = $520; - $523 = HEAP32[(1660)>>2]|0; - $524 = (($523) + -1)|0; - $525 = $524 & $522; - $526 = ($525|0)==(0); - $527 = (($524) + ($522))|0; - $528 = (0 - ($523))|0; - $529 = $527 & $528; - $530 = (($529) - ($522))|0; - $531 = $526 ? 0 : $530; - $spec$select49$i = (($531) + ($498))|0; - $532 = HEAP32[(1616)>>2]|0; - $533 = (($spec$select49$i) + ($532))|0; - $534 = ($spec$select49$i>>>0)>($$0192>>>0); - $535 = ($spec$select49$i>>>0)<(2147483647); - $or$cond$i = $534 & $535; - if ($or$cond$i) { - $536 = HEAP32[(1624)>>2]|0; - $537 = ($536|0)==(0); - if (!($537)) { - $538 = ($533>>>0)<=($532>>>0); - $539 = ($533>>>0)>($536>>>0); - $or$cond2$i = $538 | $539; - if ($or$cond2$i) { - $$2234243136$i = 0; - break; - } - } - $540 = (_sbrk(($spec$select49$i|0))|0); - $541 = ($540|0)==($520|0); - if ($541) { - $$723947$i = $spec$select49$i;$$748$i = $520; - label = 145; - break L178; - } else { - $$2247$ph$i = $540;$$2253$ph$i = $spec$select49$i; - label = 136; - } - } else { - $$2234243136$i = 0; - } - } - } - } while(0); - do { - if ((label|0) == 136) { - $552 = (0 - ($$2253$ph$i))|0; - $553 = ($$2247$ph$i|0)!=((-1)|0); - $554 = ($$2253$ph$i>>>0)<(2147483647); - $or$cond7$i = $554 & $553; - $555 = ($493>>>0)>($$2253$ph$i>>>0); - $or$cond6$i = $555 & $or$cond7$i; - if (!($or$cond6$i)) { - $565 = ($$2247$ph$i|0)==((-1)|0); - if ($565) { - $$2234243136$i = 0; - break; - } else { - $$723947$i = $$2253$ph$i;$$748$i = $$2247$ph$i; - label = 145; - break L178; - } - } - $556 = HEAP32[(1664)>>2]|0; - $557 = (($494) - ($$2253$ph$i))|0; - $558 = (($557) + ($556))|0; - $559 = (0 - ($556))|0; - $560 = $558 & $559; - $561 = ($560>>>0)<(2147483647); - if (!($561)) { - $$723947$i = $$2253$ph$i;$$748$i = $$2247$ph$i; - label = 145; - break L178; - } - $562 = (_sbrk(($560|0))|0); - $563 = ($562|0)==((-1)|0); - if ($563) { - (_sbrk(($552|0))|0); - $$2234243136$i = 0; - break; - } else { - $564 = (($560) + ($$2253$ph$i))|0; - $$723947$i = $564;$$748$i = $$2247$ph$i; - label = 145; - break L178; - } - } - } while(0); - $566 = HEAP32[(1628)>>2]|0; - $567 = $566 | 4; - HEAP32[(1628)>>2] = $567; - $$4236$i = $$2234243136$i; - label = 143; - } else { - $$4236$i = 0; - label = 143; - } - } while(0); - if ((label|0) == 143) { - $568 = ($498>>>0)<(2147483647); - if ($568) { - $569 = (_sbrk(($498|0))|0); - $570 = (_sbrk(0)|0); - $571 = ($569|0)!=((-1)|0); - $572 = ($570|0)!=((-1)|0); - $or$cond5$i = $571 & $572; - $573 = ($569>>>0)<($570>>>0); - $or$cond8$i = $573 & $or$cond5$i; - $574 = $570; - $575 = $569; - $576 = (($574) - ($575))|0; - $577 = (($$0192) + 40)|0; - $578 = ($576>>>0)>($577>>>0); - $spec$select9$i = $578 ? $576 : $$4236$i; - $or$cond8$not$i = $or$cond8$i ^ 1; - $579 = ($569|0)==((-1)|0); - $not$$i = $578 ^ 1; - $580 = $579 | $not$$i; - $or$cond50$i = $580 | $or$cond8$not$i; - if (!($or$cond50$i)) { - $$723947$i = $spec$select9$i;$$748$i = $569; - label = 145; - } - } - } - if ((label|0) == 145) { - $581 = HEAP32[(1616)>>2]|0; - $582 = (($581) + ($$723947$i))|0; - HEAP32[(1616)>>2] = $582; - $583 = HEAP32[(1620)>>2]|0; - $584 = ($582>>>0)>($583>>>0); - if ($584) { - HEAP32[(1620)>>2] = $582; - } - $585 = HEAP32[(1208)>>2]|0; - $586 = ($585|0)==(0|0); - L215: do { - if ($586) { - $587 = HEAP32[(1200)>>2]|0; - $588 = ($587|0)==(0|0); - $589 = ($$748$i>>>0)<($587>>>0); - $or$cond11$i = $588 | $589; - if ($or$cond11$i) { - HEAP32[(1200)>>2] = $$748$i; - } - HEAP32[(1632)>>2] = $$748$i; - HEAP32[(1636)>>2] = $$723947$i; - HEAP32[(1644)>>2] = 0; - $590 = HEAP32[414]|0; - HEAP32[(1220)>>2] = $590; - HEAP32[(1216)>>2] = -1; - HEAP32[(1236)>>2] = (1224); - HEAP32[(1232)>>2] = (1224); - HEAP32[(1244)>>2] = (1232); - HEAP32[(1240)>>2] = (1232); - HEAP32[(1252)>>2] = (1240); - HEAP32[(1248)>>2] = (1240); - HEAP32[(1260)>>2] = (1248); - HEAP32[(1256)>>2] = (1248); - HEAP32[(1268)>>2] = (1256); - HEAP32[(1264)>>2] = (1256); - HEAP32[(1276)>>2] = (1264); - HEAP32[(1272)>>2] = (1264); - HEAP32[(1284)>>2] = (1272); - HEAP32[(1280)>>2] = (1272); - HEAP32[(1292)>>2] = (1280); - HEAP32[(1288)>>2] = (1280); - HEAP32[(1300)>>2] = (1288); - HEAP32[(1296)>>2] = (1288); - HEAP32[(1308)>>2] = (1296); - HEAP32[(1304)>>2] = (1296); - HEAP32[(1316)>>2] = (1304); - HEAP32[(1312)>>2] = (1304); - HEAP32[(1324)>>2] = (1312); - HEAP32[(1320)>>2] = (1312); - HEAP32[(1332)>>2] = (1320); - HEAP32[(1328)>>2] = (1320); - HEAP32[(1340)>>2] = (1328); - HEAP32[(1336)>>2] = (1328); - HEAP32[(1348)>>2] = (1336); - HEAP32[(1344)>>2] = (1336); - HEAP32[(1356)>>2] = (1344); - HEAP32[(1352)>>2] = (1344); - HEAP32[(1364)>>2] = (1352); - HEAP32[(1360)>>2] = (1352); - HEAP32[(1372)>>2] = (1360); - HEAP32[(1368)>>2] = (1360); - HEAP32[(1380)>>2] = (1368); - HEAP32[(1376)>>2] = (1368); - HEAP32[(1388)>>2] = (1376); - HEAP32[(1384)>>2] = (1376); - HEAP32[(1396)>>2] = (1384); - HEAP32[(1392)>>2] = (1384); - HEAP32[(1404)>>2] = (1392); - HEAP32[(1400)>>2] = (1392); - HEAP32[(1412)>>2] = (1400); - HEAP32[(1408)>>2] = (1400); - HEAP32[(1420)>>2] = (1408); - HEAP32[(1416)>>2] = (1408); - HEAP32[(1428)>>2] = (1416); - HEAP32[(1424)>>2] = (1416); - HEAP32[(1436)>>2] = (1424); - HEAP32[(1432)>>2] = (1424); - HEAP32[(1444)>>2] = (1432); - HEAP32[(1440)>>2] = (1432); - HEAP32[(1452)>>2] = (1440); - HEAP32[(1448)>>2] = (1440); - HEAP32[(1460)>>2] = (1448); - HEAP32[(1456)>>2] = (1448); - HEAP32[(1468)>>2] = (1456); - HEAP32[(1464)>>2] = (1456); - HEAP32[(1476)>>2] = (1464); - HEAP32[(1472)>>2] = (1464); - HEAP32[(1484)>>2] = (1472); - HEAP32[(1480)>>2] = (1472); - $591 = (($$723947$i) + -40)|0; - $592 = ((($$748$i)) + 8|0); - $593 = $592; - $594 = $593 & 7; - $595 = ($594|0)==(0); - $596 = (0 - ($593))|0; - $597 = $596 & 7; - $598 = $595 ? 0 : $597; - $599 = (($$748$i) + ($598)|0); - $600 = (($591) - ($598))|0; - HEAP32[(1208)>>2] = $599; - HEAP32[(1196)>>2] = $600; - $601 = $600 | 1; - $602 = ((($599)) + 4|0); - HEAP32[$602>>2] = $601; - $603 = (($$748$i) + ($591)|0); - $604 = ((($603)) + 4|0); - HEAP32[$604>>2] = 40; - $605 = HEAP32[(1672)>>2]|0; - HEAP32[(1212)>>2] = $605; - } else { - $$024372$i = (1632); - while(1) { - $606 = HEAP32[$$024372$i>>2]|0; - $607 = ((($$024372$i)) + 4|0); - $608 = HEAP32[$607>>2]|0; - $609 = (($606) + ($608)|0); - $610 = ($$748$i|0)==($609|0); - if ($610) { - label = 154; - break; - } - $611 = ((($$024372$i)) + 8|0); - $612 = HEAP32[$611>>2]|0; - $613 = ($612|0)==(0|0); - if ($613) { - break; - } else { - $$024372$i = $612; - } - } - if ((label|0) == 154) { - $614 = ((($$024372$i)) + 4|0); - $615 = ((($$024372$i)) + 12|0); - $616 = HEAP32[$615>>2]|0; - $617 = $616 & 8; - $618 = ($617|0)==(0); - if ($618) { - $619 = ($606>>>0)<=($585>>>0); - $620 = ($$748$i>>>0)>($585>>>0); - $or$cond51$i = $620 & $619; - if ($or$cond51$i) { - $621 = (($608) + ($$723947$i))|0; - HEAP32[$614>>2] = $621; - $622 = HEAP32[(1196)>>2]|0; - $623 = (($622) + ($$723947$i))|0; - $624 = ((($585)) + 8|0); - $625 = $624; - $626 = $625 & 7; - $627 = ($626|0)==(0); - $628 = (0 - ($625))|0; - $629 = $628 & 7; - $630 = $627 ? 0 : $629; - $631 = (($585) + ($630)|0); - $632 = (($623) - ($630))|0; - HEAP32[(1208)>>2] = $631; - HEAP32[(1196)>>2] = $632; - $633 = $632 | 1; - $634 = ((($631)) + 4|0); - HEAP32[$634>>2] = $633; - $635 = (($585) + ($623)|0); - $636 = ((($635)) + 4|0); - HEAP32[$636>>2] = 40; - $637 = HEAP32[(1672)>>2]|0; - HEAP32[(1212)>>2] = $637; - break; - } - } - } - $638 = HEAP32[(1200)>>2]|0; - $639 = ($$748$i>>>0)<($638>>>0); - if ($639) { - HEAP32[(1200)>>2] = $$748$i; - } - $640 = (($$748$i) + ($$723947$i)|0); - $$124471$i = (1632); - while(1) { - $641 = HEAP32[$$124471$i>>2]|0; - $642 = ($641|0)==($640|0); - if ($642) { - label = 162; - break; - } - $643 = ((($$124471$i)) + 8|0); - $644 = HEAP32[$643>>2]|0; - $645 = ($644|0)==(0|0); - if ($645) { - break; - } else { - $$124471$i = $644; - } - } - if ((label|0) == 162) { - $646 = ((($$124471$i)) + 12|0); - $647 = HEAP32[$646>>2]|0; - $648 = $647 & 8; - $649 = ($648|0)==(0); - if ($649) { - HEAP32[$$124471$i>>2] = $$748$i; - $650 = ((($$124471$i)) + 4|0); - $651 = HEAP32[$650>>2]|0; - $652 = (($651) + ($$723947$i))|0; - HEAP32[$650>>2] = $652; - $653 = ((($$748$i)) + 8|0); - $654 = $653; - $655 = $654 & 7; - $656 = ($655|0)==(0); - $657 = (0 - ($654))|0; - $658 = $657 & 7; - $659 = $656 ? 0 : $658; - $660 = (($$748$i) + ($659)|0); - $661 = ((($640)) + 8|0); - $662 = $661; - $663 = $662 & 7; - $664 = ($663|0)==(0); - $665 = (0 - ($662))|0; - $666 = $665 & 7; - $667 = $664 ? 0 : $666; - $668 = (($640) + ($667)|0); - $669 = $668; - $670 = $660; - $671 = (($669) - ($670))|0; - $672 = (($660) + ($$0192)|0); - $673 = (($671) - ($$0192))|0; - $674 = $$0192 | 3; - $675 = ((($660)) + 4|0); - HEAP32[$675>>2] = $674; - $676 = ($585|0)==($668|0); - L238: do { - if ($676) { - $677 = HEAP32[(1196)>>2]|0; - $678 = (($677) + ($673))|0; - HEAP32[(1196)>>2] = $678; - HEAP32[(1208)>>2] = $672; - $679 = $678 | 1; - $680 = ((($672)) + 4|0); - HEAP32[$680>>2] = $679; - } else { - $681 = HEAP32[(1204)>>2]|0; - $682 = ($681|0)==($668|0); - if ($682) { - $683 = HEAP32[(1192)>>2]|0; - $684 = (($683) + ($673))|0; - HEAP32[(1192)>>2] = $684; - HEAP32[(1204)>>2] = $672; - $685 = $684 | 1; - $686 = ((($672)) + 4|0); - HEAP32[$686>>2] = $685; - $687 = (($672) + ($684)|0); - HEAP32[$687>>2] = $684; - break; - } - $688 = ((($668)) + 4|0); - $689 = HEAP32[$688>>2]|0; - $690 = $689 & 3; - $691 = ($690|0)==(1); - if ($691) { - $692 = $689 & -8; - $693 = $689 >>> 3; - $694 = ($689>>>0)<(256); - L246: do { - if ($694) { - $695 = ((($668)) + 8|0); - $696 = HEAP32[$695>>2]|0; - $697 = ((($668)) + 12|0); - $698 = HEAP32[$697>>2]|0; - $699 = ($698|0)==($696|0); - if ($699) { - $700 = 1 << $693; - $701 = $700 ^ -1; - $702 = HEAP32[296]|0; - $703 = $702 & $701; - HEAP32[296] = $703; - break; - } else { - $704 = ((($696)) + 12|0); - HEAP32[$704>>2] = $698; - $705 = ((($698)) + 8|0); - HEAP32[$705>>2] = $696; - break; - } - } else { - $706 = ((($668)) + 24|0); - $707 = HEAP32[$706>>2]|0; - $708 = ((($668)) + 12|0); - $709 = HEAP32[$708>>2]|0; - $710 = ($709|0)==($668|0); - do { - if ($710) { - $715 = ((($668)) + 16|0); - $716 = ((($715)) + 4|0); - $717 = HEAP32[$716>>2]|0; - $718 = ($717|0)==(0|0); - if ($718) { - $719 = HEAP32[$715>>2]|0; - $720 = ($719|0)==(0|0); - if ($720) { - $$3$i$i = 0; - break; - } else { - $$1263$i$i$ph = $719;$$1265$i$i$ph = $715; - } - } else { - $$1263$i$i$ph = $717;$$1265$i$i$ph = $716; - } - $$1263$i$i = $$1263$i$i$ph;$$1265$i$i = $$1265$i$i$ph; - while(1) { - $721 = ((($$1263$i$i)) + 20|0); - $722 = HEAP32[$721>>2]|0; - $723 = ($722|0)==(0|0); - if ($723) { - $724 = ((($$1263$i$i)) + 16|0); - $725 = HEAP32[$724>>2]|0; - $726 = ($725|0)==(0|0); - if ($726) { - break; - } else { - $$1263$i$i$be = $725;$$1265$i$i$be = $724; - } - } else { - $$1263$i$i$be = $722;$$1265$i$i$be = $721; - } - $$1263$i$i = $$1263$i$i$be;$$1265$i$i = $$1265$i$i$be; - } - HEAP32[$$1265$i$i>>2] = 0; - $$3$i$i = $$1263$i$i; - } else { - $711 = ((($668)) + 8|0); - $712 = HEAP32[$711>>2]|0; - $713 = ((($712)) + 12|0); - HEAP32[$713>>2] = $709; - $714 = ((($709)) + 8|0); - HEAP32[$714>>2] = $712; - $$3$i$i = $709; - } - } while(0); - $727 = ($707|0)==(0|0); - if ($727) { - break; - } - $728 = ((($668)) + 28|0); - $729 = HEAP32[$728>>2]|0; - $730 = (1488 + ($729<<2)|0); - $731 = HEAP32[$730>>2]|0; - $732 = ($731|0)==($668|0); - do { - if ($732) { - HEAP32[$730>>2] = $$3$i$i; - $cond$i$i = ($$3$i$i|0)==(0|0); - if (!($cond$i$i)) { - break; - } - $733 = 1 << $729; - $734 = $733 ^ -1; - $735 = HEAP32[(1188)>>2]|0; - $736 = $735 & $734; - HEAP32[(1188)>>2] = $736; - break L246; - } else { - $737 = ((($707)) + 16|0); - $738 = HEAP32[$737>>2]|0; - $739 = ($738|0)==($668|0); - $740 = ((($707)) + 20|0); - $$sink321 = $739 ? $737 : $740; - HEAP32[$$sink321>>2] = $$3$i$i; - $741 = ($$3$i$i|0)==(0|0); - if ($741) { - break L246; - } - } - } while(0); - $742 = ((($$3$i$i)) + 24|0); - HEAP32[$742>>2] = $707; - $743 = ((($668)) + 16|0); - $744 = HEAP32[$743>>2]|0; - $745 = ($744|0)==(0|0); - if (!($745)) { - $746 = ((($$3$i$i)) + 16|0); - HEAP32[$746>>2] = $744; - $747 = ((($744)) + 24|0); - HEAP32[$747>>2] = $$3$i$i; - } - $748 = ((($743)) + 4|0); - $749 = HEAP32[$748>>2]|0; - $750 = ($749|0)==(0|0); - if ($750) { - break; - } - $751 = ((($$3$i$i)) + 20|0); - HEAP32[$751>>2] = $749; - $752 = ((($749)) + 24|0); - HEAP32[$752>>2] = $$3$i$i; - } - } while(0); - $753 = (($668) + ($692)|0); - $754 = (($692) + ($673))|0; - $$0$i$i = $753;$$0259$i$i = $754; - } else { - $$0$i$i = $668;$$0259$i$i = $673; - } - $755 = ((($$0$i$i)) + 4|0); - $756 = HEAP32[$755>>2]|0; - $757 = $756 & -2; - HEAP32[$755>>2] = $757; - $758 = $$0259$i$i | 1; - $759 = ((($672)) + 4|0); - HEAP32[$759>>2] = $758; - $760 = (($672) + ($$0259$i$i)|0); - HEAP32[$760>>2] = $$0259$i$i; - $761 = $$0259$i$i >>> 3; - $762 = ($$0259$i$i>>>0)<(256); - if ($762) { - $763 = $761 << 1; - $764 = (1224 + ($763<<2)|0); - $765 = HEAP32[296]|0; - $766 = 1 << $761; - $767 = $765 & $766; - $768 = ($767|0)==(0); - if ($768) { - $769 = $765 | $766; - HEAP32[296] = $769; - $$pre$i16$i = ((($764)) + 8|0); - $$0267$i$i = $764;$$pre$phi$i17$iZ2D = $$pre$i16$i; - } else { - $770 = ((($764)) + 8|0); - $771 = HEAP32[$770>>2]|0; - $$0267$i$i = $771;$$pre$phi$i17$iZ2D = $770; - } - HEAP32[$$pre$phi$i17$iZ2D>>2] = $672; - $772 = ((($$0267$i$i)) + 12|0); - HEAP32[$772>>2] = $672; - $773 = ((($672)) + 8|0); - HEAP32[$773>>2] = $$0267$i$i; - $774 = ((($672)) + 12|0); - HEAP32[$774>>2] = $764; - break; - } - $775 = $$0259$i$i >>> 8; - $776 = ($775|0)==(0); - do { - if ($776) { - $$0268$i$i = 0; - } else { - $777 = ($$0259$i$i>>>0)>(16777215); - if ($777) { - $$0268$i$i = 31; - break; - } - $778 = (($775) + 1048320)|0; - $779 = $778 >>> 16; - $780 = $779 & 8; - $781 = $775 << $780; - $782 = (($781) + 520192)|0; - $783 = $782 >>> 16; - $784 = $783 & 4; - $785 = $784 | $780; - $786 = $781 << $784; - $787 = (($786) + 245760)|0; - $788 = $787 >>> 16; - $789 = $788 & 2; - $790 = $785 | $789; - $791 = (14 - ($790))|0; - $792 = $786 << $789; - $793 = $792 >>> 15; - $794 = (($791) + ($793))|0; - $795 = $794 << 1; - $796 = (($794) + 7)|0; - $797 = $$0259$i$i >>> $796; - $798 = $797 & 1; - $799 = $798 | $795; - $$0268$i$i = $799; - } - } while(0); - $800 = (1488 + ($$0268$i$i<<2)|0); - $801 = ((($672)) + 28|0); - HEAP32[$801>>2] = $$0268$i$i; - $802 = ((($672)) + 16|0); - $803 = ((($802)) + 4|0); - HEAP32[$803>>2] = 0; - HEAP32[$802>>2] = 0; - $804 = HEAP32[(1188)>>2]|0; - $805 = 1 << $$0268$i$i; - $806 = $804 & $805; - $807 = ($806|0)==(0); - if ($807) { - $808 = $804 | $805; - HEAP32[(1188)>>2] = $808; - HEAP32[$800>>2] = $672; - $809 = ((($672)) + 24|0); - HEAP32[$809>>2] = $800; - $810 = ((($672)) + 12|0); - HEAP32[$810>>2] = $672; - $811 = ((($672)) + 8|0); - HEAP32[$811>>2] = $672; - break; - } - $812 = HEAP32[$800>>2]|0; - $813 = ((($812)) + 4|0); - $814 = HEAP32[$813>>2]|0; - $815 = $814 & -8; - $816 = ($815|0)==($$0259$i$i|0); - L291: do { - if ($816) { - $$0261$lcssa$i$i = $812; - } else { - $817 = ($$0268$i$i|0)==(31); - $818 = $$0268$i$i >>> 1; - $819 = (25 - ($818))|0; - $820 = $817 ? 0 : $819; - $821 = $$0259$i$i << $820; - $$02604$i$i = $821;$$02613$i$i = $812; - while(1) { - $828 = $$02604$i$i >>> 31; - $829 = (((($$02613$i$i)) + 16|0) + ($828<<2)|0); - $824 = HEAP32[$829>>2]|0; - $830 = ($824|0)==(0|0); - if ($830) { - break; - } - $822 = $$02604$i$i << 1; - $823 = ((($824)) + 4|0); - $825 = HEAP32[$823>>2]|0; - $826 = $825 & -8; - $827 = ($826|0)==($$0259$i$i|0); - if ($827) { - $$0261$lcssa$i$i = $824; - break L291; - } else { - $$02604$i$i = $822;$$02613$i$i = $824; - } - } - HEAP32[$829>>2] = $672; - $831 = ((($672)) + 24|0); - HEAP32[$831>>2] = $$02613$i$i; - $832 = ((($672)) + 12|0); - HEAP32[$832>>2] = $672; - $833 = ((($672)) + 8|0); - HEAP32[$833>>2] = $672; - break L238; - } - } while(0); - $834 = ((($$0261$lcssa$i$i)) + 8|0); - $835 = HEAP32[$834>>2]|0; - $836 = ((($835)) + 12|0); - HEAP32[$836>>2] = $672; - HEAP32[$834>>2] = $672; - $837 = ((($672)) + 8|0); - HEAP32[$837>>2] = $835; - $838 = ((($672)) + 12|0); - HEAP32[$838>>2] = $$0261$lcssa$i$i; - $839 = ((($672)) + 24|0); - HEAP32[$839>>2] = 0; - } - } while(0); - $968 = ((($660)) + 8|0); - $$0 = $968; - STACKTOP = sp;return ($$0|0); - } - } - $$0$i$i$i = (1632); - while(1) { - $840 = HEAP32[$$0$i$i$i>>2]|0; - $841 = ($840>>>0)>($585>>>0); - if (!($841)) { - $842 = ((($$0$i$i$i)) + 4|0); - $843 = HEAP32[$842>>2]|0; - $844 = (($840) + ($843)|0); - $845 = ($844>>>0)>($585>>>0); - if ($845) { - break; - } - } - $846 = ((($$0$i$i$i)) + 8|0); - $847 = HEAP32[$846>>2]|0; - $$0$i$i$i = $847; - } - $848 = ((($844)) + -47|0); - $849 = ((($848)) + 8|0); + function _sc_reduce32($0) { + $0 = $0 | 0; + var $1 = 0, + $10 = 0, + $100 = 0, + $1000 = 0, + $1001 = 0, + $1002 = 0, + $1003 = 0, + $1004 = 0, + $1005 = 0, + $1006 = 0, + $1007 = 0, + $1008 = 0, + $1009 = 0, + $101 = 0, + $1010 = 0, + $1011 = 0, + $1012 = 0, + $1013 = 0, + $1014 = 0, + $1015 = 0; + var $1016 = 0, + $1017 = 0, + $1018 = 0, + $1019 = 0, + $102 = 0, + $1020 = 0, + $1021 = 0, + $1022 = 0, + $1023 = 0, + $1024 = 0, + $1025 = 0, + $1026 = 0, + $1027 = 0, + $1028 = 0, + $1029 = 0, + $103 = 0, + $1030 = 0, + $1031 = 0, + $1032 = 0, + $1033 = 0; + var $1034 = 0, + $1035 = 0, + $1036 = 0, + $1037 = 0, + $1038 = 0, + $1039 = 0, + $104 = 0, + $1040 = 0, + $1041 = 0, + $1042 = 0, + $1043 = 0, + $1044 = 0, + $1045 = 0, + $1046 = 0, + $1047 = 0, + $1048 = 0, + $1049 = 0, + $105 = 0, + $1050 = 0, + $1051 = 0; + var $1052 = 0, + $1053 = 0, + $1054 = 0, + $1055 = 0, + $1056 = 0, + $1057 = 0, + $1058 = 0, + $1059 = 0, + $106 = 0, + $1060 = 0, + $1061 = 0, + $1062 = 0, + $1063 = 0, + $1064 = 0, + $1065 = 0, + $1066 = 0, + $1067 = 0, + $1068 = 0, + $1069 = 0, + $107 = 0; + var $1070 = 0, + $1071 = 0, + $1072 = 0, + $1073 = 0, + $1074 = 0, + $1075 = 0, + $1076 = 0, + $1077 = 0, + $1078 = 0, + $1079 = 0, + $108 = 0, + $1080 = 0, + $1081 = 0, + $1082 = 0, + $1083 = 0, + $1084 = 0, + $1085 = 0, + $1086 = 0, + $1087 = 0, + $1088 = 0; + var $1089 = 0, + $109 = 0, + $1090 = 0, + $1091 = 0, + $1092 = 0, + $1093 = 0, + $1094 = 0, + $1095 = 0, + $1096 = 0, + $1097 = 0, + $1098 = 0, + $1099 = 0, + $11 = 0, + $110 = 0, + $1100 = 0, + $1101 = 0, + $1102 = 0, + $1103 = 0, + $1104 = 0, + $1105 = 0; + var $1106 = 0, + $1107 = 0, + $1108 = 0, + $1109 = 0, + $111 = 0, + $1110 = 0, + $1111 = 0, + $1112 = 0, + $1113 = 0, + $1114 = 0, + $1115 = 0, + $1116 = 0, + $1117 = 0, + $1118 = 0, + $1119 = 0, + $112 = 0, + $1120 = 0, + $1121 = 0, + $1122 = 0, + $1123 = 0; + var $1124 = 0, + $1125 = 0, + $1126 = 0, + $1127 = 0, + $1128 = 0, + $1129 = 0, + $113 = 0, + $1130 = 0, + $1131 = 0, + $1132 = 0, + $1133 = 0, + $1134 = 0, + $1135 = 0, + $1136 = 0, + $1137 = 0, + $1138 = 0, + $1139 = 0, + $114 = 0, + $1140 = 0, + $1141 = 0; + var $1142 = 0, + $1143 = 0, + $1144 = 0, + $1145 = 0, + $1146 = 0, + $1147 = 0, + $1148 = 0, + $1149 = 0, + $115 = 0, + $1150 = 0, + $1151 = 0, + $1152 = 0, + $1153 = 0, + $1154 = 0, + $1155 = 0, + $1156 = 0, + $1157 = 0, + $1158 = 0, + $1159 = 0, + $116 = 0; + var $1160 = 0, + $1161 = 0, + $1162 = 0, + $1163 = 0, + $1164 = 0, + $1165 = 0, + $1166 = 0, + $1167 = 0, + $1168 = 0, + $1169 = 0, + $117 = 0, + $1170 = 0, + $1171 = 0, + $1172 = 0, + $1173 = 0, + $1174 = 0, + $1175 = 0, + $1176 = 0, + $1177 = 0, + $1178 = 0; + var $1179 = 0, + $118 = 0, + $1180 = 0, + $1181 = 0, + $1182 = 0, + $1183 = 0, + $1184 = 0, + $1185 = 0, + $1186 = 0, + $1187 = 0, + $1188 = 0, + $1189 = 0, + $119 = 0, + $1190 = 0, + $1191 = 0, + $1192 = 0, + $1193 = 0, + $1194 = 0, + $1195 = 0, + $1196 = 0; + var $1197 = 0, + $1198 = 0, + $1199 = 0, + $12 = 0, + $120 = 0, + $1200 = 0, + $1201 = 0, + $1202 = 0, + $1203 = 0, + $1204 = 0, + $1205 = 0, + $1206 = 0, + $1207 = 0, + $1208 = 0, + $1209 = 0, + $121 = 0, + $1210 = 0, + $1211 = 0, + $1212 = 0, + $1213 = 0; + var $1214 = 0, + $1215 = 0, + $1216 = 0, + $1217 = 0, + $1218 = 0, + $1219 = 0, + $122 = 0, + $1220 = 0, + $1221 = 0, + $1222 = 0, + $1223 = 0, + $1224 = 0, + $1225 = 0, + $1226 = 0, + $1227 = 0, + $1228 = 0, + $1229 = 0, + $123 = 0, + $1230 = 0, + $1231 = 0; + var $1232 = 0, + $1233 = 0, + $1234 = 0, + $1235 = 0, + $1236 = 0, + $1237 = 0, + $1238 = 0, + $1239 = 0, + $124 = 0, + $1240 = 0, + $1241 = 0, + $1242 = 0, + $1243 = 0, + $1244 = 0, + $1245 = 0, + $1246 = 0, + $1247 = 0, + $1248 = 0, + $1249 = 0, + $125 = 0; + var $1250 = 0, + $1251 = 0, + $1252 = 0, + $1253 = 0, + $1254 = 0, + $1255 = 0, + $1256 = 0, + $1257 = 0, + $1258 = 0, + $1259 = 0, + $126 = 0, + $1260 = 0, + $1261 = 0, + $1262 = 0, + $1263 = 0, + $1264 = 0, + $1265 = 0, + $1266 = 0, + $1267 = 0, + $1268 = 0; + var $1269 = 0, + $127 = 0, + $1270 = 0, + $1271 = 0, + $1272 = 0, + $1273 = 0, + $1274 = 0, + $1275 = 0, + $1276 = 0, + $1277 = 0, + $1278 = 0, + $1279 = 0, + $128 = 0, + $1280 = 0, + $1281 = 0, + $1282 = 0, + $1283 = 0, + $1284 = 0, + $1285 = 0, + $1286 = 0; + var $1287 = 0, + $1288 = 0, + $1289 = 0, + $129 = 0, + $1290 = 0, + $1291 = 0, + $1292 = 0, + $1293 = 0, + $1294 = 0, + $1295 = 0, + $1296 = 0, + $1297 = 0, + $1298 = 0, + $1299 = 0, + $13 = 0, + $130 = 0, + $1300 = 0, + $1301 = 0, + $1302 = 0, + $1303 = 0; + var $1304 = 0, + $1305 = 0, + $1306 = 0, + $1307 = 0, + $1308 = 0, + $1309 = 0, + $131 = 0, + $1310 = 0, + $1311 = 0, + $1312 = 0, + $1313 = 0, + $1314 = 0, + $1315 = 0, + $1316 = 0, + $1317 = 0, + $1318 = 0, + $1319 = 0, + $132 = 0, + $1320 = 0, + $1321 = 0; + var $1322 = 0, + $1323 = 0, + $1324 = 0, + $1325 = 0, + $1326 = 0, + $1327 = 0, + $1328 = 0, + $1329 = 0, + $133 = 0, + $1330 = 0, + $1331 = 0, + $1332 = 0, + $1333 = 0, + $1334 = 0, + $1335 = 0, + $1336 = 0, + $1337 = 0, + $1338 = 0, + $1339 = 0, + $134 = 0; + var $1340 = 0, + $1341 = 0, + $1342 = 0, + $1343 = 0, + $1344 = 0, + $1345 = 0, + $1346 = 0, + $1347 = 0, + $1348 = 0, + $1349 = 0, + $135 = 0, + $1350 = 0, + $1351 = 0, + $1352 = 0, + $1353 = 0, + $1354 = 0, + $1355 = 0, + $1356 = 0, + $1357 = 0, + $1358 = 0; + var $1359 = 0, + $136 = 0, + $1360 = 0, + $1361 = 0, + $1362 = 0, + $1363 = 0, + $1364 = 0, + $1365 = 0, + $1366 = 0, + $1367 = 0, + $1368 = 0, + $1369 = 0, + $137 = 0, + $1370 = 0, + $1371 = 0, + $1372 = 0, + $1373 = 0, + $1374 = 0, + $1375 = 0, + $1376 = 0; + var $1377 = 0, + $1378 = 0, + $1379 = 0, + $138 = 0, + $1380 = 0, + $1381 = 0, + $1382 = 0, + $1383 = 0, + $1384 = 0, + $1385 = 0, + $1386 = 0, + $1387 = 0, + $1388 = 0, + $1389 = 0, + $139 = 0, + $1390 = 0, + $1391 = 0, + $1392 = 0, + $1393 = 0, + $1394 = 0; + var $1395 = 0, + $1396 = 0, + $1397 = 0, + $1398 = 0, + $1399 = 0, + $14 = 0, + $140 = 0, + $1400 = 0, + $1401 = 0, + $1402 = 0, + $1403 = 0, + $1404 = 0, + $1405 = 0, + $1406 = 0, + $1407 = 0, + $1408 = 0, + $1409 = 0, + $141 = 0, + $1410 = 0, + $1411 = 0; + var $1412 = 0, + $1413 = 0, + $1414 = 0, + $1415 = 0, + $1416 = 0, + $1417 = 0, + $1418 = 0, + $1419 = 0, + $142 = 0, + $1420 = 0, + $1421 = 0, + $1422 = 0, + $1423 = 0, + $1424 = 0, + $1425 = 0, + $1426 = 0, + $1427 = 0, + $1428 = 0, + $1429 = 0, + $143 = 0; + var $1430 = 0, + $1431 = 0, + $1432 = 0, + $1433 = 0, + $1434 = 0, + $1435 = 0, + $1436 = 0, + $1437 = 0, + $1438 = 0, + $1439 = 0, + $144 = 0, + $1440 = 0, + $1441 = 0, + $1442 = 0, + $1443 = 0, + $1444 = 0, + $1445 = 0, + $1446 = 0, + $1447 = 0, + $1448 = 0; + var $1449 = 0, + $145 = 0, + $1450 = 0, + $1451 = 0, + $1452 = 0, + $1453 = 0, + $1454 = 0, + $1455 = 0, + $1456 = 0, + $1457 = 0, + $1458 = 0, + $1459 = 0, + $146 = 0, + $1460 = 0, + $1461 = 0, + $1462 = 0, + $1463 = 0, + $1464 = 0, + $1465 = 0, + $1466 = 0; + var $1467 = 0, + $1468 = 0, + $1469 = 0, + $147 = 0, + $1470 = 0, + $1471 = 0, + $1472 = 0, + $1473 = 0, + $1474 = 0, + $1475 = 0, + $1476 = 0, + $1477 = 0, + $1478 = 0, + $1479 = 0, + $148 = 0, + $1480 = 0, + $1481 = 0, + $1482 = 0, + $1483 = 0, + $1484 = 0; + var $1485 = 0, + $1486 = 0, + $1487 = 0, + $1488 = 0, + $1489 = 0, + $149 = 0, + $1490 = 0, + $1491 = 0, + $1492 = 0, + $1493 = 0, + $1494 = 0, + $1495 = 0, + $1496 = 0, + $1497 = 0, + $1498 = 0, + $1499 = 0, + $15 = 0, + $150 = 0, + $1500 = 0, + $1501 = 0; + var $1502 = 0, + $1503 = 0, + $1504 = 0, + $1505 = 0, + $1506 = 0, + $1507 = 0, + $1508 = 0, + $1509 = 0, + $151 = 0, + $1510 = 0, + $1511 = 0, + $1512 = 0, + $1513 = 0, + $1514 = 0, + $1515 = 0, + $1516 = 0, + $1517 = 0, + $1518 = 0, + $1519 = 0, + $152 = 0; + var $1520 = 0, + $1521 = 0, + $1522 = 0, + $1523 = 0, + $1524 = 0, + $1525 = 0, + $1526 = 0, + $1527 = 0, + $1528 = 0, + $1529 = 0, + $153 = 0, + $1530 = 0, + $1531 = 0, + $1532 = 0, + $1533 = 0, + $1534 = 0, + $1535 = 0, + $1536 = 0, + $1537 = 0, + $1538 = 0; + var $1539 = 0, + $154 = 0, + $1540 = 0, + $1541 = 0, + $1542 = 0, + $1543 = 0, + $1544 = 0, + $1545 = 0, + $1546 = 0, + $1547 = 0, + $1548 = 0, + $1549 = 0, + $155 = 0, + $1550 = 0, + $1551 = 0, + $1552 = 0, + $1553 = 0, + $1554 = 0, + $1555 = 0, + $1556 = 0; + var $1557 = 0, + $1558 = 0, + $1559 = 0, + $156 = 0, + $1560 = 0, + $1561 = 0, + $1562 = 0, + $1563 = 0, + $1564 = 0, + $1565 = 0, + $1566 = 0, + $1567 = 0, + $1568 = 0, + $1569 = 0, + $157 = 0, + $1570 = 0, + $1571 = 0, + $1572 = 0, + $1573 = 0, + $1574 = 0; + var $1575 = 0, + $1576 = 0, + $1577 = 0, + $1578 = 0, + $1579 = 0, + $158 = 0, + $1580 = 0, + $1581 = 0, + $1582 = 0, + $1583 = 0, + $1584 = 0, + $1585 = 0, + $1586 = 0, + $1587 = 0, + $1588 = 0, + $1589 = 0, + $159 = 0, + $1590 = 0, + $1591 = 0, + $1592 = 0; + var $1593 = 0, + $1594 = 0, + $1595 = 0, + $1596 = 0, + $1597 = 0, + $1598 = 0, + $1599 = 0, + $16 = 0, + $160 = 0, + $1600 = 0, + $1601 = 0, + $1602 = 0, + $1603 = 0, + $1604 = 0, + $1605 = 0, + $1606 = 0, + $1607 = 0, + $1608 = 0, + $1609 = 0, + $161 = 0; + var $1610 = 0, + $1611 = 0, + $1612 = 0, + $1613 = 0, + $1614 = 0, + $1615 = 0, + $1616 = 0, + $1617 = 0, + $1618 = 0, + $1619 = 0, + $162 = 0, + $1620 = 0, + $1621 = 0, + $1622 = 0, + $1623 = 0, + $1624 = 0, + $1625 = 0, + $1626 = 0, + $1627 = 0, + $1628 = 0; + var $1629 = 0, + $163 = 0, + $1630 = 0, + $1631 = 0, + $1632 = 0, + $1633 = 0, + $1634 = 0, + $1635 = 0, + $1636 = 0, + $1637 = 0, + $1638 = 0, + $1639 = 0, + $164 = 0, + $1640 = 0, + $1641 = 0, + $1642 = 0, + $1643 = 0, + $1644 = 0, + $1645 = 0, + $1646 = 0; + var $1647 = 0, + $1648 = 0, + $1649 = 0, + $165 = 0, + $1650 = 0, + $1651 = 0, + $1652 = 0, + $1653 = 0, + $1654 = 0, + $1655 = 0, + $1656 = 0, + $1657 = 0, + $1658 = 0, + $1659 = 0, + $166 = 0, + $1660 = 0, + $1661 = 0, + $1662 = 0, + $1663 = 0, + $1664 = 0; + var $1665 = 0, + $1666 = 0, + $1667 = 0, + $1668 = 0, + $1669 = 0, + $167 = 0, + $1670 = 0, + $1671 = 0, + $1672 = 0, + $1673 = 0, + $1674 = 0, + $1675 = 0, + $1676 = 0, + $1677 = 0, + $1678 = 0, + $1679 = 0, + $168 = 0, + $1680 = 0, + $1681 = 0, + $1682 = 0; + var $1683 = 0, + $1684 = 0, + $1685 = 0, + $1686 = 0, + $1687 = 0, + $1688 = 0, + $1689 = 0, + $169 = 0, + $1690 = 0, + $1691 = 0, + $1692 = 0, + $1693 = 0, + $1694 = 0, + $1695 = 0, + $1696 = 0, + $1697 = 0, + $1698 = 0, + $1699 = 0, + $17 = 0, + $170 = 0; + var $1700 = 0, + $1701 = 0, + $1702 = 0, + $1703 = 0, + $1704 = 0, + $1705 = 0, + $1706 = 0, + $1707 = 0, + $1708 = 0, + $1709 = 0, + $171 = 0, + $1710 = 0, + $1711 = 0, + $1712 = 0, + $1713 = 0, + $1714 = 0, + $1715 = 0, + $1716 = 0, + $1717 = 0, + $1718 = 0; + var $1719 = 0, + $172 = 0, + $1720 = 0, + $1721 = 0, + $1722 = 0, + $1723 = 0, + $1724 = 0, + $1725 = 0, + $1726 = 0, + $1727 = 0, + $1728 = 0, + $1729 = 0, + $173 = 0, + $1730 = 0, + $1731 = 0, + $1732 = 0, + $1733 = 0, + $1734 = 0, + $1735 = 0, + $1736 = 0; + var $1737 = 0, + $1738 = 0, + $1739 = 0, + $174 = 0, + $1740 = 0, + $1741 = 0, + $1742 = 0, + $1743 = 0, + $1744 = 0, + $1745 = 0, + $1746 = 0, + $1747 = 0, + $1748 = 0, + $1749 = 0, + $175 = 0, + $1750 = 0, + $1751 = 0, + $1752 = 0, + $1753 = 0, + $1754 = 0; + var $1755 = 0, + $1756 = 0, + $1757 = 0, + $1758 = 0, + $1759 = 0, + $176 = 0, + $1760 = 0, + $1761 = 0, + $1762 = 0, + $1763 = 0, + $1764 = 0, + $1765 = 0, + $1766 = 0, + $1767 = 0, + $1768 = 0, + $1769 = 0, + $177 = 0, + $1770 = 0, + $1771 = 0, + $1772 = 0; + var $1773 = 0, + $1774 = 0, + $1775 = 0, + $1776 = 0, + $1777 = 0, + $1778 = 0, + $1779 = 0, + $178 = 0, + $1780 = 0, + $1781 = 0, + $1782 = 0, + $1783 = 0, + $1784 = 0, + $1785 = 0, + $1786 = 0, + $1787 = 0, + $1788 = 0, + $1789 = 0, + $179 = 0, + $1790 = 0; + var $1791 = 0, + $1792 = 0, + $1793 = 0, + $1794 = 0, + $1795 = 0, + $1796 = 0, + $1797 = 0, + $1798 = 0, + $1799 = 0, + $18 = 0, + $180 = 0, + $1800 = 0, + $1801 = 0, + $1802 = 0, + $1803 = 0, + $1804 = 0, + $1805 = 0, + $1806 = 0, + $1807 = 0, + $1808 = 0; + var $1809 = 0, + $181 = 0, + $1810 = 0, + $1811 = 0, + $1812 = 0, + $1813 = 0, + $1814 = 0, + $1815 = 0, + $1816 = 0, + $1817 = 0, + $1818 = 0, + $1819 = 0, + $182 = 0, + $1820 = 0, + $1821 = 0, + $1822 = 0, + $1823 = 0, + $1824 = 0, + $1825 = 0, + $1826 = 0; + var $1827 = 0, + $1828 = 0, + $1829 = 0, + $183 = 0, + $1830 = 0, + $1831 = 0, + $1832 = 0, + $1833 = 0, + $1834 = 0, + $1835 = 0, + $1836 = 0, + $1837 = 0, + $1838 = 0, + $1839 = 0, + $184 = 0, + $1840 = 0, + $1841 = 0, + $1842 = 0, + $1843 = 0, + $1844 = 0; + var $1845 = 0, + $1846 = 0, + $1847 = 0, + $1848 = 0, + $1849 = 0, + $185 = 0, + $1850 = 0, + $1851 = 0, + $1852 = 0, + $1853 = 0, + $1854 = 0, + $1855 = 0, + $1856 = 0, + $1857 = 0, + $1858 = 0, + $1859 = 0, + $186 = 0, + $1860 = 0, + $1861 = 0, + $1862 = 0; + var $1863 = 0, + $1864 = 0, + $1865 = 0, + $1866 = 0, + $1867 = 0, + $1868 = 0, + $1869 = 0, + $187 = 0, + $1870 = 0, + $1871 = 0, + $1872 = 0, + $1873 = 0, + $1874 = 0, + $1875 = 0, + $1876 = 0, + $1877 = 0, + $1878 = 0, + $1879 = 0, + $188 = 0, + $1880 = 0; + var $1881 = 0, + $1882 = 0, + $1883 = 0, + $1884 = 0, + $1885 = 0, + $1886 = 0, + $1887 = 0, + $1888 = 0, + $1889 = 0, + $189 = 0, + $1890 = 0, + $1891 = 0, + $1892 = 0, + $1893 = 0, + $1894 = 0, + $1895 = 0, + $1896 = 0, + $1897 = 0, + $1898 = 0, + $1899 = 0; + var $19 = 0, + $190 = 0, + $1900 = 0, + $1901 = 0, + $1902 = 0, + $1903 = 0, + $1904 = 0, + $1905 = 0, + $1906 = 0, + $1907 = 0, + $1908 = 0, + $1909 = 0, + $191 = 0, + $1910 = 0, + $1911 = 0, + $1912 = 0, + $1913 = 0, + $1914 = 0, + $1915 = 0, + $1916 = 0; + var $1917 = 0, + $1918 = 0, + $1919 = 0, + $192 = 0, + $1920 = 0, + $1921 = 0, + $1922 = 0, + $1923 = 0, + $1924 = 0, + $1925 = 0, + $1926 = 0, + $1927 = 0, + $1928 = 0, + $1929 = 0, + $193 = 0, + $1930 = 0, + $1931 = 0, + $1932 = 0, + $1933 = 0, + $1934 = 0; + var $1935 = 0, + $1936 = 0, + $1937 = 0, + $1938 = 0, + $1939 = 0, + $194 = 0, + $1940 = 0, + $1941 = 0, + $1942 = 0, + $1943 = 0, + $1944 = 0, + $1945 = 0, + $1946 = 0, + $1947 = 0, + $1948 = 0, + $1949 = 0, + $195 = 0, + $1950 = 0, + $1951 = 0, + $1952 = 0; + var $1953 = 0, + $1954 = 0, + $1955 = 0, + $1956 = 0, + $1957 = 0, + $1958 = 0, + $1959 = 0, + $196 = 0, + $1960 = 0, + $1961 = 0, + $1962 = 0, + $1963 = 0, + $1964 = 0, + $1965 = 0, + $1966 = 0, + $1967 = 0, + $1968 = 0, + $1969 = 0, + $197 = 0, + $1970 = 0; + var $1971 = 0, + $1972 = 0, + $1973 = 0, + $1974 = 0, + $1975 = 0, + $1976 = 0, + $1977 = 0, + $1978 = 0, + $1979 = 0, + $198 = 0, + $1980 = 0, + $1981 = 0, + $1982 = 0, + $1983 = 0, + $1984 = 0, + $1985 = 0, + $1986 = 0, + $1987 = 0, + $1988 = 0, + $1989 = 0; + var $199 = 0, + $1990 = 0, + $1991 = 0, + $1992 = 0, + $1993 = 0, + $1994 = 0, + $1995 = 0, + $1996 = 0, + $1997 = 0, + $1998 = 0, + $1999 = 0, + $2 = 0, + $20 = 0, + $200 = 0, + $2000 = 0, + $2001 = 0, + $2002 = 0, + $2003 = 0, + $2004 = 0, + $2005 = 0; + var $2006 = 0, + $2007 = 0, + $2008 = 0, + $2009 = 0, + $201 = 0, + $2010 = 0, + $2011 = 0, + $2012 = 0, + $2013 = 0, + $2014 = 0, + $2015 = 0, + $2016 = 0, + $2017 = 0, + $2018 = 0, + $2019 = 0, + $202 = 0, + $2020 = 0, + $2021 = 0, + $2022 = 0, + $2023 = 0; + var $2024 = 0, + $2025 = 0, + $2026 = 0, + $2027 = 0, + $2028 = 0, + $2029 = 0, + $203 = 0, + $2030 = 0, + $2031 = 0, + $2032 = 0, + $2033 = 0, + $2034 = 0, + $2035 = 0, + $2036 = 0, + $2037 = 0, + $2038 = 0, + $2039 = 0, + $204 = 0, + $2040 = 0, + $2041 = 0; + var $2042 = 0, + $2043 = 0, + $2044 = 0, + $2045 = 0, + $2046 = 0, + $2047 = 0, + $2048 = 0, + $2049 = 0, + $205 = 0, + $2050 = 0, + $2051 = 0, + $2052 = 0, + $2053 = 0, + $2054 = 0, + $2055 = 0, + $2056 = 0, + $2057 = 0, + $2058 = 0, + $2059 = 0, + $206 = 0; + var $2060 = 0, + $2061 = 0, + $2062 = 0, + $2063 = 0, + $2064 = 0, + $2065 = 0, + $2066 = 0, + $2067 = 0, + $2068 = 0, + $2069 = 0, + $207 = 0, + $2070 = 0, + $2071 = 0, + $2072 = 0, + $2073 = 0, + $2074 = 0, + $2075 = 0, + $2076 = 0, + $2077 = 0, + $2078 = 0; + var $2079 = 0, + $208 = 0, + $2080 = 0, + $2081 = 0, + $2082 = 0, + $2083 = 0, + $2084 = 0, + $2085 = 0, + $2086 = 0, + $2087 = 0, + $2088 = 0, + $2089 = 0, + $209 = 0, + $2090 = 0, + $2091 = 0, + $2092 = 0, + $2093 = 0, + $2094 = 0, + $2095 = 0, + $2096 = 0; + var $2097 = 0, + $2098 = 0, + $2099 = 0, + $21 = 0, + $210 = 0, + $2100 = 0, + $2101 = 0, + $2102 = 0, + $2103 = 0, + $2104 = 0, + $2105 = 0, + $2106 = 0, + $2107 = 0, + $2108 = 0, + $2109 = 0, + $211 = 0, + $2110 = 0, + $2111 = 0, + $2112 = 0, + $2113 = 0; + var $2114 = 0, + $2115 = 0, + $2116 = 0, + $2117 = 0, + $2118 = 0, + $2119 = 0, + $212 = 0, + $2120 = 0, + $2121 = 0, + $2122 = 0, + $2123 = 0, + $2124 = 0, + $2125 = 0, + $2126 = 0, + $2127 = 0, + $2128 = 0, + $2129 = 0, + $213 = 0, + $2130 = 0, + $2131 = 0; + var $2132 = 0, + $2133 = 0, + $2134 = 0, + $2135 = 0, + $2136 = 0, + $2137 = 0, + $2138 = 0, + $2139 = 0, + $214 = 0, + $2140 = 0, + $2141 = 0, + $2142 = 0, + $2143 = 0, + $2144 = 0, + $2145 = 0, + $2146 = 0, + $2147 = 0, + $2148 = 0, + $2149 = 0, + $215 = 0; + var $2150 = 0, + $2151 = 0, + $2152 = 0, + $2153 = 0, + $2154 = 0, + $2155 = 0, + $2156 = 0, + $2157 = 0, + $2158 = 0, + $2159 = 0, + $216 = 0, + $2160 = 0, + $2161 = 0, + $2162 = 0, + $2163 = 0, + $2164 = 0, + $2165 = 0, + $2166 = 0, + $2167 = 0, + $2168 = 0; + var $2169 = 0, + $217 = 0, + $2170 = 0, + $2171 = 0, + $2172 = 0, + $2173 = 0, + $2174 = 0, + $2175 = 0, + $2176 = 0, + $2177 = 0, + $2178 = 0, + $2179 = 0, + $218 = 0, + $2180 = 0, + $2181 = 0, + $2182 = 0, + $2183 = 0, + $2184 = 0, + $2185 = 0, + $2186 = 0; + var $2187 = 0, + $2188 = 0, + $2189 = 0, + $219 = 0, + $2190 = 0, + $2191 = 0, + $2192 = 0, + $2193 = 0, + $2194 = 0, + $2195 = 0, + $2196 = 0, + $2197 = 0, + $2198 = 0, + $2199 = 0, + $22 = 0, + $220 = 0, + $2200 = 0, + $2201 = 0, + $2202 = 0, + $2203 = 0; + var $2204 = 0, + $2205 = 0, + $2206 = 0, + $2207 = 0, + $2208 = 0, + $2209 = 0, + $221 = 0, + $2210 = 0, + $2211 = 0, + $2212 = 0, + $2213 = 0, + $2214 = 0, + $2215 = 0, + $2216 = 0, + $2217 = 0, + $2218 = 0, + $2219 = 0, + $222 = 0, + $2220 = 0, + $2221 = 0; + var $2222 = 0, + $2223 = 0, + $2224 = 0, + $2225 = 0, + $2226 = 0, + $2227 = 0, + $2228 = 0, + $2229 = 0, + $223 = 0, + $2230 = 0, + $2231 = 0, + $2232 = 0, + $2233 = 0, + $2234 = 0, + $2235 = 0, + $2236 = 0, + $2237 = 0, + $2238 = 0, + $2239 = 0, + $224 = 0; + var $2240 = 0, + $2241 = 0, + $2242 = 0, + $2243 = 0, + $2244 = 0, + $2245 = 0, + $2246 = 0, + $2247 = 0, + $2248 = 0, + $2249 = 0, + $225 = 0, + $2250 = 0, + $2251 = 0, + $2252 = 0, + $2253 = 0, + $2254 = 0, + $2255 = 0, + $2256 = 0, + $2257 = 0, + $2258 = 0; + var $2259 = 0, + $226 = 0, + $2260 = 0, + $2261 = 0, + $2262 = 0, + $2263 = 0, + $2264 = 0, + $2265 = 0, + $2266 = 0, + $2267 = 0, + $2268 = 0, + $2269 = 0, + $227 = 0, + $2270 = 0, + $2271 = 0, + $2272 = 0, + $2273 = 0, + $2274 = 0, + $2275 = 0, + $2276 = 0; + var $2277 = 0, + $2278 = 0, + $2279 = 0, + $228 = 0, + $2280 = 0, + $2281 = 0, + $2282 = 0, + $2283 = 0, + $2284 = 0, + $2285 = 0, + $2286 = 0, + $2287 = 0, + $2288 = 0, + $2289 = 0, + $229 = 0, + $2290 = 0, + $2291 = 0, + $2292 = 0, + $2293 = 0, + $2294 = 0; + var $2295 = 0, + $2296 = 0, + $2297 = 0, + $2298 = 0, + $2299 = 0, + $23 = 0, + $230 = 0, + $2300 = 0, + $2301 = 0, + $2302 = 0, + $2303 = 0, + $2304 = 0, + $2305 = 0, + $2306 = 0, + $2307 = 0, + $2308 = 0, + $2309 = 0, + $231 = 0, + $2310 = 0, + $2311 = 0; + var $2312 = 0, + $2313 = 0, + $2314 = 0, + $2315 = 0, + $2316 = 0, + $2317 = 0, + $2318 = 0, + $2319 = 0, + $232 = 0, + $2320 = 0, + $2321 = 0, + $2322 = 0, + $2323 = 0, + $2324 = 0, + $2325 = 0, + $2326 = 0, + $2327 = 0, + $2328 = 0, + $2329 = 0, + $233 = 0; + var $2330 = 0, + $2331 = 0, + $2332 = 0, + $2333 = 0, + $2334 = 0, + $2335 = 0, + $2336 = 0, + $2337 = 0, + $2338 = 0, + $2339 = 0, + $234 = 0, + $2340 = 0, + $2341 = 0, + $2342 = 0, + $2343 = 0, + $2344 = 0, + $2345 = 0, + $2346 = 0, + $2347 = 0, + $2348 = 0; + var $2349 = 0, + $235 = 0, + $2350 = 0, + $2351 = 0, + $2352 = 0, + $2353 = 0, + $2354 = 0, + $2355 = 0, + $2356 = 0, + $2357 = 0, + $2358 = 0, + $2359 = 0, + $236 = 0, + $2360 = 0, + $2361 = 0, + $2362 = 0, + $2363 = 0, + $2364 = 0, + $2365 = 0, + $2366 = 0; + var $2367 = 0, + $2368 = 0, + $2369 = 0, + $237 = 0, + $2370 = 0, + $2371 = 0, + $2372 = 0, + $2373 = 0, + $2374 = 0, + $2375 = 0, + $2376 = 0, + $2377 = 0, + $2378 = 0, + $2379 = 0, + $238 = 0, + $2380 = 0, + $2381 = 0, + $2382 = 0, + $2383 = 0, + $2384 = 0; + var $2385 = 0, + $2386 = 0, + $2387 = 0, + $2388 = 0, + $2389 = 0, + $239 = 0, + $2390 = 0, + $2391 = 0, + $2392 = 0, + $2393 = 0, + $2394 = 0, + $2395 = 0, + $2396 = 0, + $2397 = 0, + $2398 = 0, + $2399 = 0, + $24 = 0, + $240 = 0, + $2400 = 0, + $2401 = 0; + var $2402 = 0, + $2403 = 0, + $2404 = 0, + $2405 = 0, + $2406 = 0, + $2407 = 0, + $2408 = 0, + $2409 = 0, + $241 = 0, + $2410 = 0, + $2411 = 0, + $2412 = 0, + $2413 = 0, + $2414 = 0, + $2415 = 0, + $2416 = 0, + $2417 = 0, + $2418 = 0, + $2419 = 0, + $242 = 0; + var $2420 = 0, + $2421 = 0, + $2422 = 0, + $2423 = 0, + $2424 = 0, + $2425 = 0, + $2426 = 0, + $2427 = 0, + $2428 = 0, + $2429 = 0, + $243 = 0, + $2430 = 0, + $2431 = 0, + $2432 = 0, + $2433 = 0, + $2434 = 0, + $2435 = 0, + $2436 = 0, + $2437 = 0, + $2438 = 0; + var $2439 = 0, + $244 = 0, + $2440 = 0, + $2441 = 0, + $2442 = 0, + $2443 = 0, + $2444 = 0, + $2445 = 0, + $2446 = 0, + $2447 = 0, + $2448 = 0, + $2449 = 0, + $245 = 0, + $2450 = 0, + $2451 = 0, + $2452 = 0, + $2453 = 0, + $2454 = 0, + $2455 = 0, + $2456 = 0; + var $2457 = 0, + $2458 = 0, + $2459 = 0, + $246 = 0, + $2460 = 0, + $2461 = 0, + $2462 = 0, + $2463 = 0, + $2464 = 0, + $2465 = 0, + $2466 = 0, + $2467 = 0, + $2468 = 0, + $2469 = 0, + $247 = 0, + $2470 = 0, + $2471 = 0, + $2472 = 0, + $2473 = 0, + $2474 = 0; + var $2475 = 0, + $2476 = 0, + $2477 = 0, + $2478 = 0, + $2479 = 0, + $248 = 0, + $2480 = 0, + $2481 = 0, + $2482 = 0, + $2483 = 0, + $2484 = 0, + $2485 = 0, + $2486 = 0, + $2487 = 0, + $2488 = 0, + $2489 = 0, + $249 = 0, + $2490 = 0, + $2491 = 0, + $2492 = 0; + var $2493 = 0, + $2494 = 0, + $2495 = 0, + $2496 = 0, + $2497 = 0, + $2498 = 0, + $2499 = 0, + $25 = 0, + $250 = 0, + $2500 = 0, + $2501 = 0, + $2502 = 0, + $2503 = 0, + $2504 = 0, + $2505 = 0, + $2506 = 0, + $2507 = 0, + $2508 = 0, + $2509 = 0, + $251 = 0; + var $2510 = 0, + $2511 = 0, + $2512 = 0, + $2513 = 0, + $2514 = 0, + $2515 = 0, + $2516 = 0, + $2517 = 0, + $2518 = 0, + $2519 = 0, + $252 = 0, + $2520 = 0, + $2521 = 0, + $2522 = 0, + $2523 = 0, + $2524 = 0, + $2525 = 0, + $2526 = 0, + $2527 = 0, + $2528 = 0; + var $2529 = 0, + $253 = 0, + $2530 = 0, + $2531 = 0, + $2532 = 0, + $2533 = 0, + $2534 = 0, + $2535 = 0, + $2536 = 0, + $2537 = 0, + $2538 = 0, + $2539 = 0, + $254 = 0, + $2540 = 0, + $2541 = 0, + $2542 = 0, + $2543 = 0, + $2544 = 0, + $2545 = 0, + $2546 = 0; + var $2547 = 0, + $2548 = 0, + $2549 = 0, + $255 = 0, + $2550 = 0, + $2551 = 0, + $2552 = 0, + $2553 = 0, + $2554 = 0, + $2555 = 0, + $2556 = 0, + $2557 = 0, + $2558 = 0, + $2559 = 0, + $256 = 0, + $2560 = 0, + $2561 = 0, + $2562 = 0, + $2563 = 0, + $2564 = 0; + var $2565 = 0, + $2566 = 0, + $2567 = 0, + $2568 = 0, + $2569 = 0, + $257 = 0, + $2570 = 0, + $2571 = 0, + $2572 = 0, + $2573 = 0, + $2574 = 0, + $2575 = 0, + $2576 = 0, + $2577 = 0, + $2578 = 0, + $2579 = 0, + $258 = 0, + $2580 = 0, + $2581 = 0, + $2582 = 0; + var $2583 = 0, + $2584 = 0, + $2585 = 0, + $2586 = 0, + $2587 = 0, + $2588 = 0, + $2589 = 0, + $259 = 0, + $2590 = 0, + $2591 = 0, + $2592 = 0, + $2593 = 0, + $2594 = 0, + $2595 = 0, + $2596 = 0, + $2597 = 0, + $2598 = 0, + $2599 = 0, + $26 = 0, + $260 = 0; + var $2600 = 0, + $2601 = 0, + $2602 = 0, + $2603 = 0, + $2604 = 0, + $2605 = 0, + $2606 = 0, + $2607 = 0, + $2608 = 0, + $2609 = 0, + $261 = 0, + $2610 = 0, + $2611 = 0, + $2612 = 0, + $2613 = 0, + $2614 = 0, + $2615 = 0, + $262 = 0, + $263 = 0, + $264 = 0; + var $265 = 0, + $266 = 0, + $267 = 0, + $268 = 0, + $269 = 0, + $27 = 0, + $270 = 0, + $271 = 0, + $272 = 0, + $273 = 0, + $274 = 0, + $275 = 0, + $276 = 0, + $277 = 0, + $278 = 0, + $279 = 0, + $28 = 0, + $280 = 0, + $281 = 0, + $282 = 0; + var $283 = 0, + $284 = 0, + $285 = 0, + $286 = 0, + $287 = 0, + $288 = 0, + $289 = 0, + $29 = 0, + $290 = 0, + $291 = 0, + $292 = 0, + $293 = 0, + $294 = 0, + $295 = 0, + $296 = 0, + $297 = 0, + $298 = 0, + $299 = 0, + $3 = 0, + $30 = 0; + var $300 = 0, + $301 = 0, + $302 = 0, + $303 = 0, + $304 = 0, + $305 = 0, + $306 = 0, + $307 = 0, + $308 = 0, + $309 = 0, + $31 = 0, + $310 = 0, + $311 = 0, + $312 = 0, + $313 = 0, + $314 = 0, + $315 = 0, + $316 = 0, + $317 = 0, + $318 = 0; + var $319 = 0, + $32 = 0, + $320 = 0, + $321 = 0, + $322 = 0, + $323 = 0, + $324 = 0, + $325 = 0, + $326 = 0, + $327 = 0, + $328 = 0, + $329 = 0, + $33 = 0, + $330 = 0, + $331 = 0, + $332 = 0, + $333 = 0, + $334 = 0, + $335 = 0, + $336 = 0; + var $337 = 0, + $338 = 0, + $339 = 0, + $34 = 0, + $340 = 0, + $341 = 0, + $342 = 0, + $343 = 0, + $344 = 0, + $345 = 0, + $346 = 0, + $347 = 0, + $348 = 0, + $349 = 0, + $35 = 0, + $350 = 0, + $351 = 0, + $352 = 0, + $353 = 0, + $354 = 0; + var $355 = 0, + $356 = 0, + $357 = 0, + $358 = 0, + $359 = 0, + $36 = 0, + $360 = 0, + $361 = 0, + $362 = 0, + $363 = 0, + $364 = 0, + $365 = 0, + $366 = 0, + $367 = 0, + $368 = 0, + $369 = 0, + $37 = 0, + $370 = 0, + $371 = 0, + $372 = 0; + var $373 = 0, + $374 = 0, + $375 = 0, + $376 = 0, + $377 = 0, + $378 = 0, + $379 = 0, + $38 = 0, + $380 = 0, + $381 = 0, + $382 = 0, + $383 = 0, + $384 = 0, + $385 = 0, + $386 = 0, + $387 = 0, + $388 = 0, + $389 = 0, + $39 = 0, + $390 = 0; + var $391 = 0, + $392 = 0, + $393 = 0, + $394 = 0, + $395 = 0, + $396 = 0, + $397 = 0, + $398 = 0, + $399 = 0, + $4 = 0, + $40 = 0, + $400 = 0, + $401 = 0, + $402 = 0, + $403 = 0, + $404 = 0, + $405 = 0, + $406 = 0, + $407 = 0, + $408 = 0; + var $409 = 0, + $41 = 0, + $410 = 0, + $411 = 0, + $412 = 0, + $413 = 0, + $414 = 0, + $415 = 0, + $416 = 0, + $417 = 0, + $418 = 0, + $419 = 0, + $42 = 0, + $420 = 0, + $421 = 0, + $422 = 0, + $423 = 0, + $424 = 0, + $425 = 0, + $426 = 0; + var $427 = 0, + $428 = 0, + $429 = 0, + $43 = 0, + $430 = 0, + $431 = 0, + $432 = 0, + $433 = 0, + $434 = 0, + $435 = 0, + $436 = 0, + $437 = 0, + $438 = 0, + $439 = 0, + $44 = 0, + $440 = 0, + $441 = 0, + $442 = 0, + $443 = 0, + $444 = 0; + var $445 = 0, + $446 = 0, + $447 = 0, + $448 = 0, + $449 = 0, + $45 = 0, + $450 = 0, + $451 = 0, + $452 = 0, + $453 = 0, + $454 = 0, + $455 = 0, + $456 = 0, + $457 = 0, + $458 = 0, + $459 = 0, + $46 = 0, + $460 = 0, + $461 = 0, + $462 = 0; + var $463 = 0, + $464 = 0, + $465 = 0, + $466 = 0, + $467 = 0, + $468 = 0, + $469 = 0, + $47 = 0, + $470 = 0, + $471 = 0, + $472 = 0, + $473 = 0, + $474 = 0, + $475 = 0, + $476 = 0, + $477 = 0, + $478 = 0, + $479 = 0, + $48 = 0, + $480 = 0; + var $481 = 0, + $482 = 0, + $483 = 0, + $484 = 0, + $485 = 0, + $486 = 0, + $487 = 0, + $488 = 0, + $489 = 0, + $49 = 0, + $490 = 0, + $491 = 0, + $492 = 0, + $493 = 0, + $494 = 0, + $495 = 0, + $496 = 0, + $497 = 0, + $498 = 0, + $499 = 0; + var $5 = 0, + $50 = 0, + $500 = 0, + $501 = 0, + $502 = 0, + $503 = 0, + $504 = 0, + $505 = 0, + $506 = 0, + $507 = 0, + $508 = 0, + $509 = 0, + $51 = 0, + $510 = 0, + $511 = 0, + $512 = 0, + $513 = 0, + $514 = 0, + $515 = 0, + $516 = 0; + var $517 = 0, + $518 = 0, + $519 = 0, + $52 = 0, + $520 = 0, + $521 = 0, + $522 = 0, + $523 = 0, + $524 = 0, + $525 = 0, + $526 = 0, + $527 = 0, + $528 = 0, + $529 = 0, + $53 = 0, + $530 = 0, + $531 = 0, + $532 = 0, + $533 = 0, + $534 = 0; + var $535 = 0, + $536 = 0, + $537 = 0, + $538 = 0, + $539 = 0, + $54 = 0, + $540 = 0, + $541 = 0, + $542 = 0, + $543 = 0, + $544 = 0, + $545 = 0, + $546 = 0, + $547 = 0, + $548 = 0, + $549 = 0, + $55 = 0, + $550 = 0, + $551 = 0, + $552 = 0; + var $553 = 0, + $554 = 0, + $555 = 0, + $556 = 0, + $557 = 0, + $558 = 0, + $559 = 0, + $56 = 0, + $560 = 0, + $561 = 0, + $562 = 0, + $563 = 0, + $564 = 0, + $565 = 0, + $566 = 0, + $567 = 0, + $568 = 0, + $569 = 0, + $57 = 0, + $570 = 0; + var $571 = 0, + $572 = 0, + $573 = 0, + $574 = 0, + $575 = 0, + $576 = 0, + $577 = 0, + $578 = 0, + $579 = 0, + $58 = 0, + $580 = 0, + $581 = 0, + $582 = 0, + $583 = 0, + $584 = 0, + $585 = 0, + $586 = 0, + $587 = 0, + $588 = 0, + $589 = 0; + var $59 = 0, + $590 = 0, + $591 = 0, + $592 = 0, + $593 = 0, + $594 = 0, + $595 = 0, + $596 = 0, + $597 = 0, + $598 = 0, + $599 = 0, + $6 = 0, + $60 = 0, + $600 = 0, + $601 = 0, + $602 = 0, + $603 = 0, + $604 = 0, + $605 = 0, + $606 = 0; + var $607 = 0, + $608 = 0, + $609 = 0, + $61 = 0, + $610 = 0, + $611 = 0, + $612 = 0, + $613 = 0, + $614 = 0, + $615 = 0, + $616 = 0, + $617 = 0, + $618 = 0, + $619 = 0, + $62 = 0, + $620 = 0, + $621 = 0, + $622 = 0, + $623 = 0, + $624 = 0; + var $625 = 0, + $626 = 0, + $627 = 0, + $628 = 0, + $629 = 0, + $63 = 0, + $630 = 0, + $631 = 0, + $632 = 0, + $633 = 0, + $634 = 0, + $635 = 0, + $636 = 0, + $637 = 0, + $638 = 0, + $639 = 0, + $64 = 0, + $640 = 0, + $641 = 0, + $642 = 0; + var $643 = 0, + $644 = 0, + $645 = 0, + $646 = 0, + $647 = 0, + $648 = 0, + $649 = 0, + $65 = 0, + $650 = 0, + $651 = 0, + $652 = 0, + $653 = 0, + $654 = 0, + $655 = 0, + $656 = 0, + $657 = 0, + $658 = 0, + $659 = 0, + $66 = 0, + $660 = 0; + var $661 = 0, + $662 = 0, + $663 = 0, + $664 = 0, + $665 = 0, + $666 = 0, + $667 = 0, + $668 = 0, + $669 = 0, + $67 = 0, + $670 = 0, + $671 = 0, + $672 = 0, + $673 = 0, + $674 = 0, + $675 = 0, + $676 = 0, + $677 = 0, + $678 = 0, + $679 = 0; + var $68 = 0, + $680 = 0, + $681 = 0, + $682 = 0, + $683 = 0, + $684 = 0, + $685 = 0, + $686 = 0, + $687 = 0, + $688 = 0, + $689 = 0, + $69 = 0, + $690 = 0, + $691 = 0, + $692 = 0, + $693 = 0, + $694 = 0, + $695 = 0, + $696 = 0, + $697 = 0; + var $698 = 0, + $699 = 0, + $7 = 0, + $70 = 0, + $700 = 0, + $701 = 0, + $702 = 0, + $703 = 0, + $704 = 0, + $705 = 0, + $706 = 0, + $707 = 0, + $708 = 0, + $709 = 0, + $71 = 0, + $710 = 0, + $711 = 0, + $712 = 0, + $713 = 0, + $714 = 0; + var $715 = 0, + $716 = 0, + $717 = 0, + $718 = 0, + $719 = 0, + $72 = 0, + $720 = 0, + $721 = 0, + $722 = 0, + $723 = 0, + $724 = 0, + $725 = 0, + $726 = 0, + $727 = 0, + $728 = 0, + $729 = 0, + $73 = 0, + $730 = 0, + $731 = 0, + $732 = 0; + var $733 = 0, + $734 = 0, + $735 = 0, + $736 = 0, + $737 = 0, + $738 = 0, + $739 = 0, + $74 = 0, + $740 = 0, + $741 = 0, + $742 = 0, + $743 = 0, + $744 = 0, + $745 = 0, + $746 = 0, + $747 = 0, + $748 = 0, + $749 = 0, + $75 = 0, + $750 = 0; + var $751 = 0, + $752 = 0, + $753 = 0, + $754 = 0, + $755 = 0, + $756 = 0, + $757 = 0, + $758 = 0, + $759 = 0, + $76 = 0, + $760 = 0, + $761 = 0, + $762 = 0, + $763 = 0, + $764 = 0, + $765 = 0, + $766 = 0, + $767 = 0, + $768 = 0, + $769 = 0; + var $77 = 0, + $770 = 0, + $771 = 0, + $772 = 0, + $773 = 0, + $774 = 0, + $775 = 0, + $776 = 0, + $777 = 0, + $778 = 0, + $779 = 0, + $78 = 0, + $780 = 0, + $781 = 0, + $782 = 0, + $783 = 0, + $784 = 0, + $785 = 0, + $786 = 0, + $787 = 0; + var $788 = 0, + $789 = 0, + $79 = 0, + $790 = 0, + $791 = 0, + $792 = 0, + $793 = 0, + $794 = 0, + $795 = 0, + $796 = 0, + $797 = 0, + $798 = 0, + $799 = 0, + $8 = 0, + $80 = 0, + $800 = 0, + $801 = 0, + $802 = 0, + $803 = 0, + $804 = 0; + var $805 = 0, + $806 = 0, + $807 = 0, + $808 = 0, + $809 = 0, + $81 = 0, + $810 = 0, + $811 = 0, + $812 = 0, + $813 = 0, + $814 = 0, + $815 = 0, + $816 = 0, + $817 = 0, + $818 = 0, + $819 = 0, + $82 = 0, + $820 = 0, + $821 = 0, + $822 = 0; + var $823 = 0, + $824 = 0, + $825 = 0, + $826 = 0, + $827 = 0, + $828 = 0, + $829 = 0, + $83 = 0, + $830 = 0, + $831 = 0, + $832 = 0, + $833 = 0, + $834 = 0, + $835 = 0, + $836 = 0, + $837 = 0, + $838 = 0, + $839 = 0, + $84 = 0, + $840 = 0; + var $841 = 0, + $842 = 0, + $843 = 0, + $844 = 0, + $845 = 0, + $846 = 0, + $847 = 0, + $848 = 0, + $849 = 0, + $85 = 0, + $850 = 0, + $851 = 0, + $852 = 0, + $853 = 0, + $854 = 0, + $855 = 0, + $856 = 0, + $857 = 0, + $858 = 0, + $859 = 0; + var $86 = 0, + $860 = 0, + $861 = 0, + $862 = 0, + $863 = 0, + $864 = 0, + $865 = 0, + $866 = 0, + $867 = 0, + $868 = 0, + $869 = 0, + $87 = 0, + $870 = 0, + $871 = 0, + $872 = 0, + $873 = 0, + $874 = 0, + $875 = 0, + $876 = 0, + $877 = 0; + var $878 = 0, + $879 = 0, + $88 = 0, + $880 = 0, + $881 = 0, + $882 = 0, + $883 = 0, + $884 = 0, + $885 = 0, + $886 = 0, + $887 = 0, + $888 = 0, + $889 = 0, + $89 = 0, + $890 = 0, + $891 = 0, + $892 = 0, + $893 = 0, + $894 = 0, + $895 = 0; + var $896 = 0, + $897 = 0, + $898 = 0, + $899 = 0, + $9 = 0, + $90 = 0, + $900 = 0, + $901 = 0, + $902 = 0, + $903 = 0, + $904 = 0, + $905 = 0, + $906 = 0, + $907 = 0, + $908 = 0, + $909 = 0, + $91 = 0, + $910 = 0, + $911 = 0, + $912 = 0; + var $913 = 0, + $914 = 0, + $915 = 0, + $916 = 0, + $917 = 0, + $918 = 0, + $919 = 0, + $92 = 0, + $920 = 0, + $921 = 0, + $922 = 0, + $923 = 0, + $924 = 0, + $925 = 0, + $926 = 0, + $927 = 0, + $928 = 0, + $929 = 0, + $93 = 0, + $930 = 0; + var $931 = 0, + $932 = 0, + $933 = 0, + $934 = 0, + $935 = 0, + $936 = 0, + $937 = 0, + $938 = 0, + $939 = 0, + $94 = 0, + $940 = 0, + $941 = 0, + $942 = 0, + $943 = 0, + $944 = 0, + $945 = 0, + $946 = 0, + $947 = 0, + $948 = 0, + $949 = 0; + var $95 = 0, + $950 = 0, + $951 = 0, + $952 = 0, + $953 = 0, + $954 = 0, + $955 = 0, + $956 = 0, + $957 = 0, + $958 = 0, + $959 = 0, + $96 = 0, + $960 = 0, + $961 = 0, + $962 = 0, + $963 = 0, + $964 = 0, + $965 = 0, + $966 = 0, + $967 = 0; + var $968 = 0, + $969 = 0, + $97 = 0, + $970 = 0, + $971 = 0, + $972 = 0, + $973 = 0, + $974 = 0, + $975 = 0, + $976 = 0, + $977 = 0, + $978 = 0, + $979 = 0, + $98 = 0, + $980 = 0, + $981 = 0, + $982 = 0, + $983 = 0, + $984 = 0, + $985 = 0; + var $986 = 0, + $987 = 0, + $988 = 0, + $989 = 0, + $99 = 0, + $990 = 0, + $991 = 0, + $992 = 0, + $993 = 0, + $994 = 0, + $995 = 0, + $996 = 0, + $997 = 0, + $998 = 0, + $999 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 208) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(208 | 0); + $2 = (sp + 192) | 0; + $3 = (sp + 184) | 0; + $4 = (sp + 176) | 0; + $5 = (sp + 168) | 0; + $6 = (sp + 160) | 0; + $7 = (sp + 152) | 0; + $8 = (sp + 144) | 0; + $9 = (sp + 136) | 0; + $10 = (sp + 128) | 0; + $11 = (sp + 120) | 0; + $12 = (sp + 112) | 0; + $13 = (sp + 104) | 0; + $14 = (sp + 96) | 0; + $15 = (sp + 88) | 0; + $16 = (sp + 80) | 0; + $17 = (sp + 72) | 0; + $18 = (sp + 64) | 0; + $19 = (sp + 56) | 0; + $20 = (sp + 48) | 0; + $21 = (sp + 40) | 0; + $22 = (sp + 32) | 0; + $23 = (sp + 24) | 0; + $24 = (sp + 16) | 0; + $25 = (sp + 8) | 0; + $26 = sp; + $1 = $0; + $27 = $1; + $28 = _load_3($27) | 0; + $29 = tempRet0; + $30 = 2097151 & $28; + $31 = $2; + $32 = $31; + HEAP32[$32 >> 2] = $30; + $33 = ($31 + 4) | 0; + $34 = $33; + HEAP32[$34 >> 2] = 0; + $35 = $1; + $36 = ($35 + 2) | 0; + $37 = _load_4($36) | 0; + $38 = tempRet0; + $39 = _bitshift64Lshr($37 | 0, $38 | 0, 5) | 0; + $40 = tempRet0; + $41 = 2097151 & $39; + $42 = $3; + $43 = $42; + HEAP32[$43 >> 2] = $41; + $44 = ($42 + 4) | 0; + $45 = $44; + HEAP32[$45 >> 2] = 0; + $46 = $1; + $47 = ($46 + 5) | 0; + $48 = _load_3($47) | 0; + $49 = tempRet0; + $50 = _bitshift64Lshr($48 | 0, $49 | 0, 2) | 0; + $51 = tempRet0; + $52 = 2097151 & $50; + $53 = $4; + $54 = $53; + HEAP32[$54 >> 2] = $52; + $55 = ($53 + 4) | 0; + $56 = $55; + HEAP32[$56 >> 2] = 0; + $57 = $1; + $58 = ($57 + 7) | 0; + $59 = _load_4($58) | 0; + $60 = tempRet0; + $61 = _bitshift64Lshr($59 | 0, $60 | 0, 7) | 0; + $62 = tempRet0; + $63 = 2097151 & $61; + $64 = $5; + $65 = $64; + HEAP32[$65 >> 2] = $63; + $66 = ($64 + 4) | 0; + $67 = $66; + HEAP32[$67 >> 2] = 0; + $68 = $1; + $69 = ($68 + 10) | 0; + $70 = _load_4($69) | 0; + $71 = tempRet0; + $72 = _bitshift64Lshr($70 | 0, $71 | 0, 4) | 0; + $73 = tempRet0; + $74 = 2097151 & $72; + $75 = $6; + $76 = $75; + HEAP32[$76 >> 2] = $74; + $77 = ($75 + 4) | 0; + $78 = $77; + HEAP32[$78 >> 2] = 0; + $79 = $1; + $80 = ($79 + 13) | 0; + $81 = _load_3($80) | 0; + $82 = tempRet0; + $83 = _bitshift64Lshr($81 | 0, $82 | 0, 1) | 0; + $84 = tempRet0; + $85 = 2097151 & $83; + $86 = $7; + $87 = $86; + HEAP32[$87 >> 2] = $85; + $88 = ($86 + 4) | 0; + $89 = $88; + HEAP32[$89 >> 2] = 0; + $90 = $1; + $91 = ($90 + 15) | 0; + $92 = _load_4($91) | 0; + $93 = tempRet0; + $94 = _bitshift64Lshr($92 | 0, $93 | 0, 6) | 0; + $95 = tempRet0; + $96 = 2097151 & $94; + $97 = $8; + $98 = $97; + HEAP32[$98 >> 2] = $96; + $99 = ($97 + 4) | 0; + $100 = $99; + HEAP32[$100 >> 2] = 0; + $101 = $1; + $102 = ($101 + 18) | 0; + $103 = _load_3($102) | 0; + $104 = tempRet0; + $105 = _bitshift64Lshr($103 | 0, $104 | 0, 3) | 0; + $106 = tempRet0; + $107 = 2097151 & $105; + $108 = $9; + $109 = $108; + HEAP32[$109 >> 2] = $107; + $110 = ($108 + 4) | 0; + $111 = $110; + HEAP32[$111 >> 2] = 0; + $112 = $1; + $113 = ($112 + 21) | 0; + $114 = _load_3($113) | 0; + $115 = tempRet0; + $116 = 2097151 & $114; + $117 = $10; + $118 = $117; + HEAP32[$118 >> 2] = $116; + $119 = ($117 + 4) | 0; + $120 = $119; + HEAP32[$120 >> 2] = 0; + $121 = $1; + $122 = ($121 + 23) | 0; + $123 = _load_4($122) | 0; + $124 = tempRet0; + $125 = _bitshift64Lshr($123 | 0, $124 | 0, 5) | 0; + $126 = tempRet0; + $127 = 2097151 & $125; + $128 = $11; + $129 = $128; + HEAP32[$129 >> 2] = $127; + $130 = ($128 + 4) | 0; + $131 = $130; + HEAP32[$131 >> 2] = 0; + $132 = $1; + $133 = ($132 + 26) | 0; + $134 = _load_3($133) | 0; + $135 = tempRet0; + $136 = _bitshift64Lshr($134 | 0, $135 | 0, 2) | 0; + $137 = tempRet0; + $138 = 2097151 & $136; + $139 = $12; + $140 = $139; + HEAP32[$140 >> 2] = $138; + $141 = ($139 + 4) | 0; + $142 = $141; + HEAP32[$142 >> 2] = 0; + $143 = $1; + $144 = ($143 + 28) | 0; + $145 = _load_4($144) | 0; + $146 = tempRet0; + $147 = _bitshift64Lshr($145 | 0, $146 | 0, 7) | 0; + $148 = tempRet0; + $149 = $13; + $150 = $149; + HEAP32[$150 >> 2] = $147; + $151 = ($149 + 4) | 0; + $152 = $151; + HEAP32[$152 >> 2] = $148; + $153 = $14; + $154 = $153; + HEAP32[$154 >> 2] = 0; + $155 = ($153 + 4) | 0; + $156 = $155; + HEAP32[$156 >> 2] = 0; + $157 = $2; + $158 = $157; + $159 = HEAP32[$158 >> 2] | 0; + $160 = ($157 + 4) | 0; + $161 = $160; + $162 = HEAP32[$161 >> 2] | 0; + $163 = _i64Add($159 | 0, $162 | 0, 1048576, 0) | 0; + $164 = tempRet0; + $165 = _bitshift64Ashr($163 | 0, $164 | 0, 21) | 0; + $166 = tempRet0; + $167 = $15; + $168 = $167; + HEAP32[$168 >> 2] = $165; + $169 = ($167 + 4) | 0; + $170 = $169; + HEAP32[$170 >> 2] = $166; + $171 = $15; + $172 = $171; + $173 = HEAP32[$172 >> 2] | 0; + $174 = ($171 + 4) | 0; + $175 = $174; + $176 = HEAP32[$175 >> 2] | 0; + $177 = $3; + $178 = $177; + $179 = HEAP32[$178 >> 2] | 0; + $180 = ($177 + 4) | 0; + $181 = $180; + $182 = HEAP32[$181 >> 2] | 0; + $183 = _i64Add($179 | 0, $182 | 0, $173 | 0, $176 | 0) | 0; + $184 = tempRet0; + $185 = $3; + $186 = $185; + HEAP32[$186 >> 2] = $183; + $187 = ($185 + 4) | 0; + $188 = $187; + HEAP32[$188 >> 2] = $184; + $189 = $15; + $190 = $189; + $191 = HEAP32[$190 >> 2] | 0; + $192 = ($189 + 4) | 0; + $193 = $192; + $194 = HEAP32[$193 >> 2] | 0; + $195 = _bitshift64Shl($191 | 0, $194 | 0, 21) | 0; + $196 = tempRet0; + $197 = $2; + $198 = $197; + $199 = HEAP32[$198 >> 2] | 0; + $200 = ($197 + 4) | 0; + $201 = $200; + $202 = HEAP32[$201 >> 2] | 0; + $203 = _i64Subtract($199 | 0, $202 | 0, $195 | 0, $196 | 0) | 0; + $204 = tempRet0; + $205 = $2; + $206 = $205; + HEAP32[$206 >> 2] = $203; + $207 = ($205 + 4) | 0; + $208 = $207; + HEAP32[$208 >> 2] = $204; + $209 = $4; + $210 = $209; + $211 = HEAP32[$210 >> 2] | 0; + $212 = ($209 + 4) | 0; + $213 = $212; + $214 = HEAP32[$213 >> 2] | 0; + $215 = _i64Add($211 | 0, $214 | 0, 1048576, 0) | 0; + $216 = tempRet0; + $217 = _bitshift64Ashr($215 | 0, $216 | 0, 21) | 0; + $218 = tempRet0; + $219 = $17; + $220 = $219; + HEAP32[$220 >> 2] = $217; + $221 = ($219 + 4) | 0; + $222 = $221; + HEAP32[$222 >> 2] = $218; + $223 = $17; + $224 = $223; + $225 = HEAP32[$224 >> 2] | 0; + $226 = ($223 + 4) | 0; + $227 = $226; + $228 = HEAP32[$227 >> 2] | 0; + $229 = $5; + $230 = $229; + $231 = HEAP32[$230 >> 2] | 0; + $232 = ($229 + 4) | 0; + $233 = $232; + $234 = HEAP32[$233 >> 2] | 0; + $235 = _i64Add($231 | 0, $234 | 0, $225 | 0, $228 | 0) | 0; + $236 = tempRet0; + $237 = $5; + $238 = $237; + HEAP32[$238 >> 2] = $235; + $239 = ($237 + 4) | 0; + $240 = $239; + HEAP32[$240 >> 2] = $236; + $241 = $17; + $242 = $241; + $243 = HEAP32[$242 >> 2] | 0; + $244 = ($241 + 4) | 0; + $245 = $244; + $246 = HEAP32[$245 >> 2] | 0; + $247 = _bitshift64Shl($243 | 0, $246 | 0, 21) | 0; + $248 = tempRet0; + $249 = $4; + $250 = $249; + $251 = HEAP32[$250 >> 2] | 0; + $252 = ($249 + 4) | 0; + $253 = $252; + $254 = HEAP32[$253 >> 2] | 0; + $255 = _i64Subtract($251 | 0, $254 | 0, $247 | 0, $248 | 0) | 0; + $256 = tempRet0; + $257 = $4; + $258 = $257; + HEAP32[$258 >> 2] = $255; + $259 = ($257 + 4) | 0; + $260 = $259; + HEAP32[$260 >> 2] = $256; + $261 = $6; + $262 = $261; + $263 = HEAP32[$262 >> 2] | 0; + $264 = ($261 + 4) | 0; + $265 = $264; + $266 = HEAP32[$265 >> 2] | 0; + $267 = _i64Add($263 | 0, $266 | 0, 1048576, 0) | 0; + $268 = tempRet0; + $269 = _bitshift64Ashr($267 | 0, $268 | 0, 21) | 0; + $270 = tempRet0; + $271 = $19; + $272 = $271; + HEAP32[$272 >> 2] = $269; + $273 = ($271 + 4) | 0; + $274 = $273; + HEAP32[$274 >> 2] = $270; + $275 = $19; + $276 = $275; + $277 = HEAP32[$276 >> 2] | 0; + $278 = ($275 + 4) | 0; + $279 = $278; + $280 = HEAP32[$279 >> 2] | 0; + $281 = $7; + $282 = $281; + $283 = HEAP32[$282 >> 2] | 0; + $284 = ($281 + 4) | 0; + $285 = $284; + $286 = HEAP32[$285 >> 2] | 0; + $287 = _i64Add($283 | 0, $286 | 0, $277 | 0, $280 | 0) | 0; + $288 = tempRet0; + $289 = $7; + $290 = $289; + HEAP32[$290 >> 2] = $287; + $291 = ($289 + 4) | 0; + $292 = $291; + HEAP32[$292 >> 2] = $288; + $293 = $19; + $294 = $293; + $295 = HEAP32[$294 >> 2] | 0; + $296 = ($293 + 4) | 0; + $297 = $296; + $298 = HEAP32[$297 >> 2] | 0; + $299 = _bitshift64Shl($295 | 0, $298 | 0, 21) | 0; + $300 = tempRet0; + $301 = $6; + $302 = $301; + $303 = HEAP32[$302 >> 2] | 0; + $304 = ($301 + 4) | 0; + $305 = $304; + $306 = HEAP32[$305 >> 2] | 0; + $307 = _i64Subtract($303 | 0, $306 | 0, $299 | 0, $300 | 0) | 0; + $308 = tempRet0; + $309 = $6; + $310 = $309; + HEAP32[$310 >> 2] = $307; + $311 = ($309 + 4) | 0; + $312 = $311; + HEAP32[$312 >> 2] = $308; + $313 = $8; + $314 = $313; + $315 = HEAP32[$314 >> 2] | 0; + $316 = ($313 + 4) | 0; + $317 = $316; + $318 = HEAP32[$317 >> 2] | 0; + $319 = _i64Add($315 | 0, $318 | 0, 1048576, 0) | 0; + $320 = tempRet0; + $321 = _bitshift64Ashr($319 | 0, $320 | 0, 21) | 0; + $322 = tempRet0; + $323 = $21; + $324 = $323; + HEAP32[$324 >> 2] = $321; + $325 = ($323 + 4) | 0; + $326 = $325; + HEAP32[$326 >> 2] = $322; + $327 = $21; + $328 = $327; + $329 = HEAP32[$328 >> 2] | 0; + $330 = ($327 + 4) | 0; + $331 = $330; + $332 = HEAP32[$331 >> 2] | 0; + $333 = $9; + $334 = $333; + $335 = HEAP32[$334 >> 2] | 0; + $336 = ($333 + 4) | 0; + $337 = $336; + $338 = HEAP32[$337 >> 2] | 0; + $339 = _i64Add($335 | 0, $338 | 0, $329 | 0, $332 | 0) | 0; + $340 = tempRet0; + $341 = $9; + $342 = $341; + HEAP32[$342 >> 2] = $339; + $343 = ($341 + 4) | 0; + $344 = $343; + HEAP32[$344 >> 2] = $340; + $345 = $21; + $346 = $345; + $347 = HEAP32[$346 >> 2] | 0; + $348 = ($345 + 4) | 0; + $349 = $348; + $350 = HEAP32[$349 >> 2] | 0; + $351 = _bitshift64Shl($347 | 0, $350 | 0, 21) | 0; + $352 = tempRet0; + $353 = $8; + $354 = $353; + $355 = HEAP32[$354 >> 2] | 0; + $356 = ($353 + 4) | 0; + $357 = $356; + $358 = HEAP32[$357 >> 2] | 0; + $359 = _i64Subtract($355 | 0, $358 | 0, $351 | 0, $352 | 0) | 0; + $360 = tempRet0; + $361 = $8; + $362 = $361; + HEAP32[$362 >> 2] = $359; + $363 = ($361 + 4) | 0; + $364 = $363; + HEAP32[$364 >> 2] = $360; + $365 = $10; + $366 = $365; + $367 = HEAP32[$366 >> 2] | 0; + $368 = ($365 + 4) | 0; + $369 = $368; + $370 = HEAP32[$369 >> 2] | 0; + $371 = _i64Add($367 | 0, $370 | 0, 1048576, 0) | 0; + $372 = tempRet0; + $373 = _bitshift64Ashr($371 | 0, $372 | 0, 21) | 0; + $374 = tempRet0; + $375 = $23; + $376 = $375; + HEAP32[$376 >> 2] = $373; + $377 = ($375 + 4) | 0; + $378 = $377; + HEAP32[$378 >> 2] = $374; + $379 = $23; + $380 = $379; + $381 = HEAP32[$380 >> 2] | 0; + $382 = ($379 + 4) | 0; + $383 = $382; + $384 = HEAP32[$383 >> 2] | 0; + $385 = $11; + $386 = $385; + $387 = HEAP32[$386 >> 2] | 0; + $388 = ($385 + 4) | 0; + $389 = $388; + $390 = HEAP32[$389 >> 2] | 0; + $391 = _i64Add($387 | 0, $390 | 0, $381 | 0, $384 | 0) | 0; + $392 = tempRet0; + $393 = $11; + $394 = $393; + HEAP32[$394 >> 2] = $391; + $395 = ($393 + 4) | 0; + $396 = $395; + HEAP32[$396 >> 2] = $392; + $397 = $23; + $398 = $397; + $399 = HEAP32[$398 >> 2] | 0; + $400 = ($397 + 4) | 0; + $401 = $400; + $402 = HEAP32[$401 >> 2] | 0; + $403 = _bitshift64Shl($399 | 0, $402 | 0, 21) | 0; + $404 = tempRet0; + $405 = $10; + $406 = $405; + $407 = HEAP32[$406 >> 2] | 0; + $408 = ($405 + 4) | 0; + $409 = $408; + $410 = HEAP32[$409 >> 2] | 0; + $411 = _i64Subtract($407 | 0, $410 | 0, $403 | 0, $404 | 0) | 0; + $412 = tempRet0; + $413 = $10; + $414 = $413; + HEAP32[$414 >> 2] = $411; + $415 = ($413 + 4) | 0; + $416 = $415; + HEAP32[$416 >> 2] = $412; + $417 = $12; + $418 = $417; + $419 = HEAP32[$418 >> 2] | 0; + $420 = ($417 + 4) | 0; + $421 = $420; + $422 = HEAP32[$421 >> 2] | 0; + $423 = _i64Add($419 | 0, $422 | 0, 1048576, 0) | 0; + $424 = tempRet0; + $425 = _bitshift64Ashr($423 | 0, $424 | 0, 21) | 0; + $426 = tempRet0; + $427 = $25; + $428 = $427; + HEAP32[$428 >> 2] = $425; + $429 = ($427 + 4) | 0; + $430 = $429; + HEAP32[$430 >> 2] = $426; + $431 = $25; + $432 = $431; + $433 = HEAP32[$432 >> 2] | 0; + $434 = ($431 + 4) | 0; + $435 = $434; + $436 = HEAP32[$435 >> 2] | 0; + $437 = $13; + $438 = $437; + $439 = HEAP32[$438 >> 2] | 0; + $440 = ($437 + 4) | 0; + $441 = $440; + $442 = HEAP32[$441 >> 2] | 0; + $443 = _i64Add($439 | 0, $442 | 0, $433 | 0, $436 | 0) | 0; + $444 = tempRet0; + $445 = $13; + $446 = $445; + HEAP32[$446 >> 2] = $443; + $447 = ($445 + 4) | 0; + $448 = $447; + HEAP32[$448 >> 2] = $444; + $449 = $25; + $450 = $449; + $451 = HEAP32[$450 >> 2] | 0; + $452 = ($449 + 4) | 0; + $453 = $452; + $454 = HEAP32[$453 >> 2] | 0; + $455 = _bitshift64Shl($451 | 0, $454 | 0, 21) | 0; + $456 = tempRet0; + $457 = $12; + $458 = $457; + $459 = HEAP32[$458 >> 2] | 0; + $460 = ($457 + 4) | 0; + $461 = $460; + $462 = HEAP32[$461 >> 2] | 0; + $463 = _i64Subtract($459 | 0, $462 | 0, $455 | 0, $456 | 0) | 0; + $464 = tempRet0; + $465 = $12; + $466 = $465; + HEAP32[$466 >> 2] = $463; + $467 = ($465 + 4) | 0; + $468 = $467; + HEAP32[$468 >> 2] = $464; + $469 = $3; + $470 = $469; + $471 = HEAP32[$470 >> 2] | 0; + $472 = ($469 + 4) | 0; + $473 = $472; + $474 = HEAP32[$473 >> 2] | 0; + $475 = _i64Add($471 | 0, $474 | 0, 1048576, 0) | 0; + $476 = tempRet0; + $477 = _bitshift64Ashr($475 | 0, $476 | 0, 21) | 0; + $478 = tempRet0; + $479 = $16; + $480 = $479; + HEAP32[$480 >> 2] = $477; + $481 = ($479 + 4) | 0; + $482 = $481; + HEAP32[$482 >> 2] = $478; + $483 = $16; + $484 = $483; + $485 = HEAP32[$484 >> 2] | 0; + $486 = ($483 + 4) | 0; + $487 = $486; + $488 = HEAP32[$487 >> 2] | 0; + $489 = $4; + $490 = $489; + $491 = HEAP32[$490 >> 2] | 0; + $492 = ($489 + 4) | 0; + $493 = $492; + $494 = HEAP32[$493 >> 2] | 0; + $495 = _i64Add($491 | 0, $494 | 0, $485 | 0, $488 | 0) | 0; + $496 = tempRet0; + $497 = $4; + $498 = $497; + HEAP32[$498 >> 2] = $495; + $499 = ($497 + 4) | 0; + $500 = $499; + HEAP32[$500 >> 2] = $496; + $501 = $16; + $502 = $501; + $503 = HEAP32[$502 >> 2] | 0; + $504 = ($501 + 4) | 0; + $505 = $504; + $506 = HEAP32[$505 >> 2] | 0; + $507 = _bitshift64Shl($503 | 0, $506 | 0, 21) | 0; + $508 = tempRet0; + $509 = $3; + $510 = $509; + $511 = HEAP32[$510 >> 2] | 0; + $512 = ($509 + 4) | 0; + $513 = $512; + $514 = HEAP32[$513 >> 2] | 0; + $515 = _i64Subtract($511 | 0, $514 | 0, $507 | 0, $508 | 0) | 0; + $516 = tempRet0; + $517 = $3; + $518 = $517; + HEAP32[$518 >> 2] = $515; + $519 = ($517 + 4) | 0; + $520 = $519; + HEAP32[$520 >> 2] = $516; + $521 = $5; + $522 = $521; + $523 = HEAP32[$522 >> 2] | 0; + $524 = ($521 + 4) | 0; + $525 = $524; + $526 = HEAP32[$525 >> 2] | 0; + $527 = _i64Add($523 | 0, $526 | 0, 1048576, 0) | 0; + $528 = tempRet0; + $529 = _bitshift64Ashr($527 | 0, $528 | 0, 21) | 0; + $530 = tempRet0; + $531 = $18; + $532 = $531; + HEAP32[$532 >> 2] = $529; + $533 = ($531 + 4) | 0; + $534 = $533; + HEAP32[$534 >> 2] = $530; + $535 = $18; + $536 = $535; + $537 = HEAP32[$536 >> 2] | 0; + $538 = ($535 + 4) | 0; + $539 = $538; + $540 = HEAP32[$539 >> 2] | 0; + $541 = $6; + $542 = $541; + $543 = HEAP32[$542 >> 2] | 0; + $544 = ($541 + 4) | 0; + $545 = $544; + $546 = HEAP32[$545 >> 2] | 0; + $547 = _i64Add($543 | 0, $546 | 0, $537 | 0, $540 | 0) | 0; + $548 = tempRet0; + $549 = $6; + $550 = $549; + HEAP32[$550 >> 2] = $547; + $551 = ($549 + 4) | 0; + $552 = $551; + HEAP32[$552 >> 2] = $548; + $553 = $18; + $554 = $553; + $555 = HEAP32[$554 >> 2] | 0; + $556 = ($553 + 4) | 0; + $557 = $556; + $558 = HEAP32[$557 >> 2] | 0; + $559 = _bitshift64Shl($555 | 0, $558 | 0, 21) | 0; + $560 = tempRet0; + $561 = $5; + $562 = $561; + $563 = HEAP32[$562 >> 2] | 0; + $564 = ($561 + 4) | 0; + $565 = $564; + $566 = HEAP32[$565 >> 2] | 0; + $567 = _i64Subtract($563 | 0, $566 | 0, $559 | 0, $560 | 0) | 0; + $568 = tempRet0; + $569 = $5; + $570 = $569; + HEAP32[$570 >> 2] = $567; + $571 = ($569 + 4) | 0; + $572 = $571; + HEAP32[$572 >> 2] = $568; + $573 = $7; + $574 = $573; + $575 = HEAP32[$574 >> 2] | 0; + $576 = ($573 + 4) | 0; + $577 = $576; + $578 = HEAP32[$577 >> 2] | 0; + $579 = _i64Add($575 | 0, $578 | 0, 1048576, 0) | 0; + $580 = tempRet0; + $581 = _bitshift64Ashr($579 | 0, $580 | 0, 21) | 0; + $582 = tempRet0; + $583 = $20; + $584 = $583; + HEAP32[$584 >> 2] = $581; + $585 = ($583 + 4) | 0; + $586 = $585; + HEAP32[$586 >> 2] = $582; + $587 = $20; + $588 = $587; + $589 = HEAP32[$588 >> 2] | 0; + $590 = ($587 + 4) | 0; + $591 = $590; + $592 = HEAP32[$591 >> 2] | 0; + $593 = $8; + $594 = $593; + $595 = HEAP32[$594 >> 2] | 0; + $596 = ($593 + 4) | 0; + $597 = $596; + $598 = HEAP32[$597 >> 2] | 0; + $599 = _i64Add($595 | 0, $598 | 0, $589 | 0, $592 | 0) | 0; + $600 = tempRet0; + $601 = $8; + $602 = $601; + HEAP32[$602 >> 2] = $599; + $603 = ($601 + 4) | 0; + $604 = $603; + HEAP32[$604 >> 2] = $600; + $605 = $20; + $606 = $605; + $607 = HEAP32[$606 >> 2] | 0; + $608 = ($605 + 4) | 0; + $609 = $608; + $610 = HEAP32[$609 >> 2] | 0; + $611 = _bitshift64Shl($607 | 0, $610 | 0, 21) | 0; + $612 = tempRet0; + $613 = $7; + $614 = $613; + $615 = HEAP32[$614 >> 2] | 0; + $616 = ($613 + 4) | 0; + $617 = $616; + $618 = HEAP32[$617 >> 2] | 0; + $619 = _i64Subtract($615 | 0, $618 | 0, $611 | 0, $612 | 0) | 0; + $620 = tempRet0; + $621 = $7; + $622 = $621; + HEAP32[$622 >> 2] = $619; + $623 = ($621 + 4) | 0; + $624 = $623; + HEAP32[$624 >> 2] = $620; + $625 = $9; + $626 = $625; + $627 = HEAP32[$626 >> 2] | 0; + $628 = ($625 + 4) | 0; + $629 = $628; + $630 = HEAP32[$629 >> 2] | 0; + $631 = _i64Add($627 | 0, $630 | 0, 1048576, 0) | 0; + $632 = tempRet0; + $633 = _bitshift64Ashr($631 | 0, $632 | 0, 21) | 0; + $634 = tempRet0; + $635 = $22; + $636 = $635; + HEAP32[$636 >> 2] = $633; + $637 = ($635 + 4) | 0; + $638 = $637; + HEAP32[$638 >> 2] = $634; + $639 = $22; + $640 = $639; + $641 = HEAP32[$640 >> 2] | 0; + $642 = ($639 + 4) | 0; + $643 = $642; + $644 = HEAP32[$643 >> 2] | 0; + $645 = $10; + $646 = $645; + $647 = HEAP32[$646 >> 2] | 0; + $648 = ($645 + 4) | 0; + $649 = $648; + $650 = HEAP32[$649 >> 2] | 0; + $651 = _i64Add($647 | 0, $650 | 0, $641 | 0, $644 | 0) | 0; + $652 = tempRet0; + $653 = $10; + $654 = $653; + HEAP32[$654 >> 2] = $651; + $655 = ($653 + 4) | 0; + $656 = $655; + HEAP32[$656 >> 2] = $652; + $657 = $22; + $658 = $657; + $659 = HEAP32[$658 >> 2] | 0; + $660 = ($657 + 4) | 0; + $661 = $660; + $662 = HEAP32[$661 >> 2] | 0; + $663 = _bitshift64Shl($659 | 0, $662 | 0, 21) | 0; + $664 = tempRet0; + $665 = $9; + $666 = $665; + $667 = HEAP32[$666 >> 2] | 0; + $668 = ($665 + 4) | 0; + $669 = $668; + $670 = HEAP32[$669 >> 2] | 0; + $671 = _i64Subtract($667 | 0, $670 | 0, $663 | 0, $664 | 0) | 0; + $672 = tempRet0; + $673 = $9; + $674 = $673; + HEAP32[$674 >> 2] = $671; + $675 = ($673 + 4) | 0; + $676 = $675; + HEAP32[$676 >> 2] = $672; + $677 = $11; + $678 = $677; + $679 = HEAP32[$678 >> 2] | 0; + $680 = ($677 + 4) | 0; + $681 = $680; + $682 = HEAP32[$681 >> 2] | 0; + $683 = _i64Add($679 | 0, $682 | 0, 1048576, 0) | 0; + $684 = tempRet0; + $685 = _bitshift64Ashr($683 | 0, $684 | 0, 21) | 0; + $686 = tempRet0; + $687 = $24; + $688 = $687; + HEAP32[$688 >> 2] = $685; + $689 = ($687 + 4) | 0; + $690 = $689; + HEAP32[$690 >> 2] = $686; + $691 = $24; + $692 = $691; + $693 = HEAP32[$692 >> 2] | 0; + $694 = ($691 + 4) | 0; + $695 = $694; + $696 = HEAP32[$695 >> 2] | 0; + $697 = $12; + $698 = $697; + $699 = HEAP32[$698 >> 2] | 0; + $700 = ($697 + 4) | 0; + $701 = $700; + $702 = HEAP32[$701 >> 2] | 0; + $703 = _i64Add($699 | 0, $702 | 0, $693 | 0, $696 | 0) | 0; + $704 = tempRet0; + $705 = $12; + $706 = $705; + HEAP32[$706 >> 2] = $703; + $707 = ($705 + 4) | 0; + $708 = $707; + HEAP32[$708 >> 2] = $704; + $709 = $24; + $710 = $709; + $711 = HEAP32[$710 >> 2] | 0; + $712 = ($709 + 4) | 0; + $713 = $712; + $714 = HEAP32[$713 >> 2] | 0; + $715 = _bitshift64Shl($711 | 0, $714 | 0, 21) | 0; + $716 = tempRet0; + $717 = $11; + $718 = $717; + $719 = HEAP32[$718 >> 2] | 0; + $720 = ($717 + 4) | 0; + $721 = $720; + $722 = HEAP32[$721 >> 2] | 0; + $723 = _i64Subtract($719 | 0, $722 | 0, $715 | 0, $716 | 0) | 0; + $724 = tempRet0; + $725 = $11; + $726 = $725; + HEAP32[$726 >> 2] = $723; + $727 = ($725 + 4) | 0; + $728 = $727; + HEAP32[$728 >> 2] = $724; + $729 = $13; + $730 = $729; + $731 = HEAP32[$730 >> 2] | 0; + $732 = ($729 + 4) | 0; + $733 = $732; + $734 = HEAP32[$733 >> 2] | 0; + $735 = _i64Add($731 | 0, $734 | 0, 1048576, 0) | 0; + $736 = tempRet0; + $737 = _bitshift64Ashr($735 | 0, $736 | 0, 21) | 0; + $738 = tempRet0; + $739 = $26; + $740 = $739; + HEAP32[$740 >> 2] = $737; + $741 = ($739 + 4) | 0; + $742 = $741; + HEAP32[$742 >> 2] = $738; + $743 = $26; + $744 = $743; + $745 = HEAP32[$744 >> 2] | 0; + $746 = ($743 + 4) | 0; + $747 = $746; + $748 = HEAP32[$747 >> 2] | 0; + $749 = $14; + $750 = $749; + $751 = HEAP32[$750 >> 2] | 0; + $752 = ($749 + 4) | 0; + $753 = $752; + $754 = HEAP32[$753 >> 2] | 0; + $755 = _i64Add($751 | 0, $754 | 0, $745 | 0, $748 | 0) | 0; + $756 = tempRet0; + $757 = $14; + $758 = $757; + HEAP32[$758 >> 2] = $755; + $759 = ($757 + 4) | 0; + $760 = $759; + HEAP32[$760 >> 2] = $756; + $761 = $26; + $762 = $761; + $763 = HEAP32[$762 >> 2] | 0; + $764 = ($761 + 4) | 0; + $765 = $764; + $766 = HEAP32[$765 >> 2] | 0; + $767 = _bitshift64Shl($763 | 0, $766 | 0, 21) | 0; + $768 = tempRet0; + $769 = $13; + $770 = $769; + $771 = HEAP32[$770 >> 2] | 0; + $772 = ($769 + 4) | 0; + $773 = $772; + $774 = HEAP32[$773 >> 2] | 0; + $775 = _i64Subtract($771 | 0, $774 | 0, $767 | 0, $768 | 0) | 0; + $776 = tempRet0; + $777 = $13; + $778 = $777; + HEAP32[$778 >> 2] = $775; + $779 = ($777 + 4) | 0; + $780 = $779; + HEAP32[$780 >> 2] = $776; + $781 = $14; + $782 = $781; + $783 = HEAP32[$782 >> 2] | 0; + $784 = ($781 + 4) | 0; + $785 = $784; + $786 = HEAP32[$785 >> 2] | 0; + $787 = ___muldi3($783 | 0, $786 | 0, 666643, 0) | 0; + $788 = tempRet0; + $789 = $2; + $790 = $789; + $791 = HEAP32[$790 >> 2] | 0; + $792 = ($789 + 4) | 0; + $793 = $792; + $794 = HEAP32[$793 >> 2] | 0; + $795 = _i64Add($791 | 0, $794 | 0, $787 | 0, $788 | 0) | 0; + $796 = tempRet0; + $797 = $2; + $798 = $797; + HEAP32[$798 >> 2] = $795; + $799 = ($797 + 4) | 0; + $800 = $799; + HEAP32[$800 >> 2] = $796; + $801 = $14; + $802 = $801; + $803 = HEAP32[$802 >> 2] | 0; + $804 = ($801 + 4) | 0; + $805 = $804; + $806 = HEAP32[$805 >> 2] | 0; + $807 = ___muldi3($803 | 0, $806 | 0, 470296, 0) | 0; + $808 = tempRet0; + $809 = $3; + $810 = $809; + $811 = HEAP32[$810 >> 2] | 0; + $812 = ($809 + 4) | 0; + $813 = $812; + $814 = HEAP32[$813 >> 2] | 0; + $815 = _i64Add($811 | 0, $814 | 0, $807 | 0, $808 | 0) | 0; + $816 = tempRet0; + $817 = $3; + $818 = $817; + HEAP32[$818 >> 2] = $815; + $819 = ($817 + 4) | 0; + $820 = $819; + HEAP32[$820 >> 2] = $816; + $821 = $14; + $822 = $821; + $823 = HEAP32[$822 >> 2] | 0; + $824 = ($821 + 4) | 0; + $825 = $824; + $826 = HEAP32[$825 >> 2] | 0; + $827 = ___muldi3($823 | 0, $826 | 0, 654183, 0) | 0; + $828 = tempRet0; + $829 = $4; + $830 = $829; + $831 = HEAP32[$830 >> 2] | 0; + $832 = ($829 + 4) | 0; + $833 = $832; + $834 = HEAP32[$833 >> 2] | 0; + $835 = _i64Add($831 | 0, $834 | 0, $827 | 0, $828 | 0) | 0; + $836 = tempRet0; + $837 = $4; + $838 = $837; + HEAP32[$838 >> 2] = $835; + $839 = ($837 + 4) | 0; + $840 = $839; + HEAP32[$840 >> 2] = $836; + $841 = $14; + $842 = $841; + $843 = HEAP32[$842 >> 2] | 0; + $844 = ($841 + 4) | 0; + $845 = $844; + $846 = HEAP32[$845 >> 2] | 0; + $847 = ___muldi3($843 | 0, $846 | 0, 997805, 0) | 0; + $848 = tempRet0; + $849 = $5; $850 = $849; - $851 = $850 & 7; - $852 = ($851|0)==(0); - $853 = (0 - ($850))|0; - $854 = $853 & 7; - $855 = $852 ? 0 : $854; - $856 = (($848) + ($855)|0); - $857 = ((($585)) + 16|0); - $858 = ($856>>>0)<($857>>>0); - $859 = $858 ? $585 : $856; - $860 = ((($859)) + 8|0); - $861 = ((($859)) + 24|0); - $862 = (($$723947$i) + -40)|0; - $863 = ((($$748$i)) + 8|0); - $864 = $863; - $865 = $864 & 7; - $866 = ($865|0)==(0); - $867 = (0 - ($864))|0; - $868 = $867 & 7; - $869 = $866 ? 0 : $868; - $870 = (($$748$i) + ($869)|0); - $871 = (($862) - ($869))|0; - HEAP32[(1208)>>2] = $870; - HEAP32[(1196)>>2] = $871; - $872 = $871 | 1; - $873 = ((($870)) + 4|0); - HEAP32[$873>>2] = $872; - $874 = (($$748$i) + ($862)|0); - $875 = ((($874)) + 4|0); - HEAP32[$875>>2] = 40; - $876 = HEAP32[(1672)>>2]|0; - HEAP32[(1212)>>2] = $876; - $877 = ((($859)) + 4|0); - HEAP32[$877>>2] = 27; - ;HEAP32[$860>>2]=HEAP32[(1632)>>2]|0;HEAP32[$860+4>>2]=HEAP32[(1632)+4>>2]|0;HEAP32[$860+8>>2]=HEAP32[(1632)+8>>2]|0;HEAP32[$860+12>>2]=HEAP32[(1632)+12>>2]|0; - HEAP32[(1632)>>2] = $$748$i; - HEAP32[(1636)>>2] = $$723947$i; - HEAP32[(1644)>>2] = 0; - HEAP32[(1640)>>2] = $860; - $879 = $861; - while(1) { - $878 = ((($879)) + 4|0); - HEAP32[$878>>2] = 7; - $880 = ((($879)) + 8|0); - $881 = ($880>>>0)<($844>>>0); - if ($881) { - $879 = $878; - } else { - break; - } - } - $882 = ($859|0)==($585|0); - if (!($882)) { - $883 = $859; - $884 = $585; - $885 = (($883) - ($884))|0; - $886 = HEAP32[$877>>2]|0; - $887 = $886 & -2; - HEAP32[$877>>2] = $887; - $888 = $885 | 1; - $889 = ((($585)) + 4|0); - HEAP32[$889>>2] = $888; - HEAP32[$859>>2] = $885; - $890 = $885 >>> 3; - $891 = ($885>>>0)<(256); - if ($891) { - $892 = $890 << 1; - $893 = (1224 + ($892<<2)|0); - $894 = HEAP32[296]|0; - $895 = 1 << $890; - $896 = $894 & $895; - $897 = ($896|0)==(0); - if ($897) { - $898 = $894 | $895; - HEAP32[296] = $898; - $$pre$i$i = ((($893)) + 8|0); - $$0206$i$i = $893;$$pre$phi$i$iZ2D = $$pre$i$i; - } else { - $899 = ((($893)) + 8|0); - $900 = HEAP32[$899>>2]|0; - $$0206$i$i = $900;$$pre$phi$i$iZ2D = $899; - } - HEAP32[$$pre$phi$i$iZ2D>>2] = $585; - $901 = ((($$0206$i$i)) + 12|0); - HEAP32[$901>>2] = $585; - $902 = ((($585)) + 8|0); - HEAP32[$902>>2] = $$0206$i$i; - $903 = ((($585)) + 12|0); - HEAP32[$903>>2] = $893; - break; - } - $904 = $885 >>> 8; - $905 = ($904|0)==(0); - if ($905) { - $$0207$i$i = 0; - } else { - $906 = ($885>>>0)>(16777215); - if ($906) { - $$0207$i$i = 31; - } else { - $907 = (($904) + 1048320)|0; - $908 = $907 >>> 16; - $909 = $908 & 8; - $910 = $904 << $909; - $911 = (($910) + 520192)|0; - $912 = $911 >>> 16; - $913 = $912 & 4; - $914 = $913 | $909; - $915 = $910 << $913; - $916 = (($915) + 245760)|0; - $917 = $916 >>> 16; - $918 = $917 & 2; - $919 = $914 | $918; - $920 = (14 - ($919))|0; - $921 = $915 << $918; - $922 = $921 >>> 15; - $923 = (($920) + ($922))|0; - $924 = $923 << 1; - $925 = (($923) + 7)|0; - $926 = $885 >>> $925; - $927 = $926 & 1; - $928 = $927 | $924; - $$0207$i$i = $928; - } - } - $929 = (1488 + ($$0207$i$i<<2)|0); - $930 = ((($585)) + 28|0); - HEAP32[$930>>2] = $$0207$i$i; - $931 = ((($585)) + 20|0); - HEAP32[$931>>2] = 0; - HEAP32[$857>>2] = 0; - $932 = HEAP32[(1188)>>2]|0; - $933 = 1 << $$0207$i$i; - $934 = $932 & $933; - $935 = ($934|0)==(0); - if ($935) { - $936 = $932 | $933; - HEAP32[(1188)>>2] = $936; - HEAP32[$929>>2] = $585; - $937 = ((($585)) + 24|0); - HEAP32[$937>>2] = $929; - $938 = ((($585)) + 12|0); - HEAP32[$938>>2] = $585; - $939 = ((($585)) + 8|0); - HEAP32[$939>>2] = $585; - break; - } - $940 = HEAP32[$929>>2]|0; - $941 = ((($940)) + 4|0); - $942 = HEAP32[$941>>2]|0; - $943 = $942 & -8; - $944 = ($943|0)==($885|0); - L325: do { - if ($944) { - $$0202$lcssa$i$i = $940; - } else { - $945 = ($$0207$i$i|0)==(31); - $946 = $$0207$i$i >>> 1; - $947 = (25 - ($946))|0; - $948 = $945 ? 0 : $947; - $949 = $885 << $948; - $$02014$i$i = $949;$$02023$i$i = $940; - while(1) { - $956 = $$02014$i$i >>> 31; - $957 = (((($$02023$i$i)) + 16|0) + ($956<<2)|0); - $952 = HEAP32[$957>>2]|0; - $958 = ($952|0)==(0|0); - if ($958) { - break; - } - $950 = $$02014$i$i << 1; - $951 = ((($952)) + 4|0); - $953 = HEAP32[$951>>2]|0; - $954 = $953 & -8; - $955 = ($954|0)==($885|0); - if ($955) { - $$0202$lcssa$i$i = $952; - break L325; - } else { - $$02014$i$i = $950;$$02023$i$i = $952; - } - } - HEAP32[$957>>2] = $585; - $959 = ((($585)) + 24|0); - HEAP32[$959>>2] = $$02023$i$i; - $960 = ((($585)) + 12|0); - HEAP32[$960>>2] = $585; - $961 = ((($585)) + 8|0); - HEAP32[$961>>2] = $585; - break L215; - } - } while(0); - $962 = ((($$0202$lcssa$i$i)) + 8|0); - $963 = HEAP32[$962>>2]|0; - $964 = ((($963)) + 12|0); - HEAP32[$964>>2] = $585; - HEAP32[$962>>2] = $585; - $965 = ((($585)) + 8|0); - HEAP32[$965>>2] = $963; - $966 = ((($585)) + 12|0); - HEAP32[$966>>2] = $$0202$lcssa$i$i; - $967 = ((($585)) + 24|0); - HEAP32[$967>>2] = 0; - } - } - } while(0); - $969 = HEAP32[(1196)>>2]|0; - $970 = ($969>>>0)>($$0192>>>0); - if ($970) { - $971 = (($969) - ($$0192))|0; - HEAP32[(1196)>>2] = $971; - $972 = HEAP32[(1208)>>2]|0; - $973 = (($972) + ($$0192)|0); - HEAP32[(1208)>>2] = $973; - $974 = $971 | 1; - $975 = ((($973)) + 4|0); - HEAP32[$975>>2] = $974; - $976 = $$0192 | 3; - $977 = ((($972)) + 4|0); - HEAP32[$977>>2] = $976; - $978 = ((($972)) + 8|0); - $$0 = $978; - STACKTOP = sp;return ($$0|0); - } - } - $979 = (___errno_location()|0); - HEAP32[$979>>2] = 12; - $$0 = 0; - STACKTOP = sp;return ($$0|0); -} -function _free($0) { - $0 = $0|0; - var $$0194$i = 0, $$0194$in$i = 0, $$0346381 = 0, $$0347$lcssa = 0, $$0347380 = 0, $$0359 = 0, $$0366 = 0, $$1 = 0, $$1345 = 0, $$1350 = 0, $$1350$be = 0, $$1350$ph = 0, $$1353 = 0, $$1353$be = 0, $$1353$ph = 0, $$1361 = 0, $$1361$be = 0, $$1361$ph = 0, $$1365 = 0, $$1365$be = 0; - var $$1365$ph = 0, $$2 = 0, $$3 = 0, $$3363 = 0, $$pre = 0, $$pre$phiZ2D = 0, $$sink = 0, $$sink395 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0; - var $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0; - var $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0; - var $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0; - var $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0; - var $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0; - var $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0; - var $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0; - var $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0; - var $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0; - var $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0; - var $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0; - var $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0; - var $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond371 = 0, $cond372 = 0, label = 0, sp = 0; - sp = STACKTOP; - $1 = ($0|0)==(0|0); - if ($1) { - return; - } - $2 = ((($0)) + -8|0); - $3 = HEAP32[(1200)>>2]|0; - $4 = ((($0)) + -4|0); - $5 = HEAP32[$4>>2]|0; - $6 = $5 & -8; - $7 = (($2) + ($6)|0); - $8 = $5 & 1; - $9 = ($8|0)==(0); - do { - if ($9) { - $10 = HEAP32[$2>>2]|0; - $11 = $5 & 3; - $12 = ($11|0)==(0); - if ($12) { + $851 = HEAP32[$850 >> 2] | 0; + $852 = ($849 + 4) | 0; + $853 = $852; + $854 = HEAP32[$853 >> 2] | 0; + $855 = _i64Subtract($851 | 0, $854 | 0, $847 | 0, $848 | 0) | 0; + $856 = tempRet0; + $857 = $5; + $858 = $857; + HEAP32[$858 >> 2] = $855; + $859 = ($857 + 4) | 0; + $860 = $859; + HEAP32[$860 >> 2] = $856; + $861 = $14; + $862 = $861; + $863 = HEAP32[$862 >> 2] | 0; + $864 = ($861 + 4) | 0; + $865 = $864; + $866 = HEAP32[$865 >> 2] | 0; + $867 = ___muldi3($863 | 0, $866 | 0, 136657, 0) | 0; + $868 = tempRet0; + $869 = $6; + $870 = $869; + $871 = HEAP32[$870 >> 2] | 0; + $872 = ($869 + 4) | 0; + $873 = $872; + $874 = HEAP32[$873 >> 2] | 0; + $875 = _i64Add($871 | 0, $874 | 0, $867 | 0, $868 | 0) | 0; + $876 = tempRet0; + $877 = $6; + $878 = $877; + HEAP32[$878 >> 2] = $875; + $879 = ($877 + 4) | 0; + $880 = $879; + HEAP32[$880 >> 2] = $876; + $881 = $14; + $882 = $881; + $883 = HEAP32[$882 >> 2] | 0; + $884 = ($881 + 4) | 0; + $885 = $884; + $886 = HEAP32[$885 >> 2] | 0; + $887 = ___muldi3($883 | 0, $886 | 0, 683901, 0) | 0; + $888 = tempRet0; + $889 = $7; + $890 = $889; + $891 = HEAP32[$890 >> 2] | 0; + $892 = ($889 + 4) | 0; + $893 = $892; + $894 = HEAP32[$893 >> 2] | 0; + $895 = _i64Subtract($891 | 0, $894 | 0, $887 | 0, $888 | 0) | 0; + $896 = tempRet0; + $897 = $7; + $898 = $897; + HEAP32[$898 >> 2] = $895; + $899 = ($897 + 4) | 0; + $900 = $899; + HEAP32[$900 >> 2] = $896; + $901 = $14; + $902 = $901; + HEAP32[$902 >> 2] = 0; + $903 = ($901 + 4) | 0; + $904 = $903; + HEAP32[$904 >> 2] = 0; + $905 = $2; + $906 = $905; + $907 = HEAP32[$906 >> 2] | 0; + $908 = ($905 + 4) | 0; + $909 = $908; + $910 = HEAP32[$909 >> 2] | 0; + $911 = _bitshift64Ashr($907 | 0, $910 | 0, 21) | 0; + $912 = tempRet0; + $913 = $15; + $914 = $913; + HEAP32[$914 >> 2] = $911; + $915 = ($913 + 4) | 0; + $916 = $915; + HEAP32[$916 >> 2] = $912; + $917 = $15; + $918 = $917; + $919 = HEAP32[$918 >> 2] | 0; + $920 = ($917 + 4) | 0; + $921 = $920; + $922 = HEAP32[$921 >> 2] | 0; + $923 = $3; + $924 = $923; + $925 = HEAP32[$924 >> 2] | 0; + $926 = ($923 + 4) | 0; + $927 = $926; + $928 = HEAP32[$927 >> 2] | 0; + $929 = _i64Add($925 | 0, $928 | 0, $919 | 0, $922 | 0) | 0; + $930 = tempRet0; + $931 = $3; + $932 = $931; + HEAP32[$932 >> 2] = $929; + $933 = ($931 + 4) | 0; + $934 = $933; + HEAP32[$934 >> 2] = $930; + $935 = $15; + $936 = $935; + $937 = HEAP32[$936 >> 2] | 0; + $938 = ($935 + 4) | 0; + $939 = $938; + $940 = HEAP32[$939 >> 2] | 0; + $941 = _bitshift64Shl($937 | 0, $940 | 0, 21) | 0; + $942 = tempRet0; + $943 = $2; + $944 = $943; + $945 = HEAP32[$944 >> 2] | 0; + $946 = ($943 + 4) | 0; + $947 = $946; + $948 = HEAP32[$947 >> 2] | 0; + $949 = _i64Subtract($945 | 0, $948 | 0, $941 | 0, $942 | 0) | 0; + $950 = tempRet0; + $951 = $2; + $952 = $951; + HEAP32[$952 >> 2] = $949; + $953 = ($951 + 4) | 0; + $954 = $953; + HEAP32[$954 >> 2] = $950; + $955 = $3; + $956 = $955; + $957 = HEAP32[$956 >> 2] | 0; + $958 = ($955 + 4) | 0; + $959 = $958; + $960 = HEAP32[$959 >> 2] | 0; + $961 = _bitshift64Ashr($957 | 0, $960 | 0, 21) | 0; + $962 = tempRet0; + $963 = $16; + $964 = $963; + HEAP32[$964 >> 2] = $961; + $965 = ($963 + 4) | 0; + $966 = $965; + HEAP32[$966 >> 2] = $962; + $967 = $16; + $968 = $967; + $969 = HEAP32[$968 >> 2] | 0; + $970 = ($967 + 4) | 0; + $971 = $970; + $972 = HEAP32[$971 >> 2] | 0; + $973 = $4; + $974 = $973; + $975 = HEAP32[$974 >> 2] | 0; + $976 = ($973 + 4) | 0; + $977 = $976; + $978 = HEAP32[$977 >> 2] | 0; + $979 = _i64Add($975 | 0, $978 | 0, $969 | 0, $972 | 0) | 0; + $980 = tempRet0; + $981 = $4; + $982 = $981; + HEAP32[$982 >> 2] = $979; + $983 = ($981 + 4) | 0; + $984 = $983; + HEAP32[$984 >> 2] = $980; + $985 = $16; + $986 = $985; + $987 = HEAP32[$986 >> 2] | 0; + $988 = ($985 + 4) | 0; + $989 = $988; + $990 = HEAP32[$989 >> 2] | 0; + $991 = _bitshift64Shl($987 | 0, $990 | 0, 21) | 0; + $992 = tempRet0; + $993 = $3; + $994 = $993; + $995 = HEAP32[$994 >> 2] | 0; + $996 = ($993 + 4) | 0; + $997 = $996; + $998 = HEAP32[$997 >> 2] | 0; + $999 = _i64Subtract($995 | 0, $998 | 0, $991 | 0, $992 | 0) | 0; + $1000 = tempRet0; + $1001 = $3; + $1002 = $1001; + HEAP32[$1002 >> 2] = $999; + $1003 = ($1001 + 4) | 0; + $1004 = $1003; + HEAP32[$1004 >> 2] = $1000; + $1005 = $4; + $1006 = $1005; + $1007 = HEAP32[$1006 >> 2] | 0; + $1008 = ($1005 + 4) | 0; + $1009 = $1008; + $1010 = HEAP32[$1009 >> 2] | 0; + $1011 = _bitshift64Ashr($1007 | 0, $1010 | 0, 21) | 0; + $1012 = tempRet0; + $1013 = $17; + $1014 = $1013; + HEAP32[$1014 >> 2] = $1011; + $1015 = ($1013 + 4) | 0; + $1016 = $1015; + HEAP32[$1016 >> 2] = $1012; + $1017 = $17; + $1018 = $1017; + $1019 = HEAP32[$1018 >> 2] | 0; + $1020 = ($1017 + 4) | 0; + $1021 = $1020; + $1022 = HEAP32[$1021 >> 2] | 0; + $1023 = $5; + $1024 = $1023; + $1025 = HEAP32[$1024 >> 2] | 0; + $1026 = ($1023 + 4) | 0; + $1027 = $1026; + $1028 = HEAP32[$1027 >> 2] | 0; + $1029 = _i64Add($1025 | 0, $1028 | 0, $1019 | 0, $1022 | 0) | 0; + $1030 = tempRet0; + $1031 = $5; + $1032 = $1031; + HEAP32[$1032 >> 2] = $1029; + $1033 = ($1031 + 4) | 0; + $1034 = $1033; + HEAP32[$1034 >> 2] = $1030; + $1035 = $17; + $1036 = $1035; + $1037 = HEAP32[$1036 >> 2] | 0; + $1038 = ($1035 + 4) | 0; + $1039 = $1038; + $1040 = HEAP32[$1039 >> 2] | 0; + $1041 = _bitshift64Shl($1037 | 0, $1040 | 0, 21) | 0; + $1042 = tempRet0; + $1043 = $4; + $1044 = $1043; + $1045 = HEAP32[$1044 >> 2] | 0; + $1046 = ($1043 + 4) | 0; + $1047 = $1046; + $1048 = HEAP32[$1047 >> 2] | 0; + $1049 = _i64Subtract($1045 | 0, $1048 | 0, $1041 | 0, $1042 | 0) | 0; + $1050 = tempRet0; + $1051 = $4; + $1052 = $1051; + HEAP32[$1052 >> 2] = $1049; + $1053 = ($1051 + 4) | 0; + $1054 = $1053; + HEAP32[$1054 >> 2] = $1050; + $1055 = $5; + $1056 = $1055; + $1057 = HEAP32[$1056 >> 2] | 0; + $1058 = ($1055 + 4) | 0; + $1059 = $1058; + $1060 = HEAP32[$1059 >> 2] | 0; + $1061 = _bitshift64Ashr($1057 | 0, $1060 | 0, 21) | 0; + $1062 = tempRet0; + $1063 = $18; + $1064 = $1063; + HEAP32[$1064 >> 2] = $1061; + $1065 = ($1063 + 4) | 0; + $1066 = $1065; + HEAP32[$1066 >> 2] = $1062; + $1067 = $18; + $1068 = $1067; + $1069 = HEAP32[$1068 >> 2] | 0; + $1070 = ($1067 + 4) | 0; + $1071 = $1070; + $1072 = HEAP32[$1071 >> 2] | 0; + $1073 = $6; + $1074 = $1073; + $1075 = HEAP32[$1074 >> 2] | 0; + $1076 = ($1073 + 4) | 0; + $1077 = $1076; + $1078 = HEAP32[$1077 >> 2] | 0; + $1079 = _i64Add($1075 | 0, $1078 | 0, $1069 | 0, $1072 | 0) | 0; + $1080 = tempRet0; + $1081 = $6; + $1082 = $1081; + HEAP32[$1082 >> 2] = $1079; + $1083 = ($1081 + 4) | 0; + $1084 = $1083; + HEAP32[$1084 >> 2] = $1080; + $1085 = $18; + $1086 = $1085; + $1087 = HEAP32[$1086 >> 2] | 0; + $1088 = ($1085 + 4) | 0; + $1089 = $1088; + $1090 = HEAP32[$1089 >> 2] | 0; + $1091 = _bitshift64Shl($1087 | 0, $1090 | 0, 21) | 0; + $1092 = tempRet0; + $1093 = $5; + $1094 = $1093; + $1095 = HEAP32[$1094 >> 2] | 0; + $1096 = ($1093 + 4) | 0; + $1097 = $1096; + $1098 = HEAP32[$1097 >> 2] | 0; + $1099 = _i64Subtract($1095 | 0, $1098 | 0, $1091 | 0, $1092 | 0) | 0; + $1100 = tempRet0; + $1101 = $5; + $1102 = $1101; + HEAP32[$1102 >> 2] = $1099; + $1103 = ($1101 + 4) | 0; + $1104 = $1103; + HEAP32[$1104 >> 2] = $1100; + $1105 = $6; + $1106 = $1105; + $1107 = HEAP32[$1106 >> 2] | 0; + $1108 = ($1105 + 4) | 0; + $1109 = $1108; + $1110 = HEAP32[$1109 >> 2] | 0; + $1111 = _bitshift64Ashr($1107 | 0, $1110 | 0, 21) | 0; + $1112 = tempRet0; + $1113 = $19; + $1114 = $1113; + HEAP32[$1114 >> 2] = $1111; + $1115 = ($1113 + 4) | 0; + $1116 = $1115; + HEAP32[$1116 >> 2] = $1112; + $1117 = $19; + $1118 = $1117; + $1119 = HEAP32[$1118 >> 2] | 0; + $1120 = ($1117 + 4) | 0; + $1121 = $1120; + $1122 = HEAP32[$1121 >> 2] | 0; + $1123 = $7; + $1124 = $1123; + $1125 = HEAP32[$1124 >> 2] | 0; + $1126 = ($1123 + 4) | 0; + $1127 = $1126; + $1128 = HEAP32[$1127 >> 2] | 0; + $1129 = _i64Add($1125 | 0, $1128 | 0, $1119 | 0, $1122 | 0) | 0; + $1130 = tempRet0; + $1131 = $7; + $1132 = $1131; + HEAP32[$1132 >> 2] = $1129; + $1133 = ($1131 + 4) | 0; + $1134 = $1133; + HEAP32[$1134 >> 2] = $1130; + $1135 = $19; + $1136 = $1135; + $1137 = HEAP32[$1136 >> 2] | 0; + $1138 = ($1135 + 4) | 0; + $1139 = $1138; + $1140 = HEAP32[$1139 >> 2] | 0; + $1141 = _bitshift64Shl($1137 | 0, $1140 | 0, 21) | 0; + $1142 = tempRet0; + $1143 = $6; + $1144 = $1143; + $1145 = HEAP32[$1144 >> 2] | 0; + $1146 = ($1143 + 4) | 0; + $1147 = $1146; + $1148 = HEAP32[$1147 >> 2] | 0; + $1149 = _i64Subtract($1145 | 0, $1148 | 0, $1141 | 0, $1142 | 0) | 0; + $1150 = tempRet0; + $1151 = $6; + $1152 = $1151; + HEAP32[$1152 >> 2] = $1149; + $1153 = ($1151 + 4) | 0; + $1154 = $1153; + HEAP32[$1154 >> 2] = $1150; + $1155 = $7; + $1156 = $1155; + $1157 = HEAP32[$1156 >> 2] | 0; + $1158 = ($1155 + 4) | 0; + $1159 = $1158; + $1160 = HEAP32[$1159 >> 2] | 0; + $1161 = _bitshift64Ashr($1157 | 0, $1160 | 0, 21) | 0; + $1162 = tempRet0; + $1163 = $20; + $1164 = $1163; + HEAP32[$1164 >> 2] = $1161; + $1165 = ($1163 + 4) | 0; + $1166 = $1165; + HEAP32[$1166 >> 2] = $1162; + $1167 = $20; + $1168 = $1167; + $1169 = HEAP32[$1168 >> 2] | 0; + $1170 = ($1167 + 4) | 0; + $1171 = $1170; + $1172 = HEAP32[$1171 >> 2] | 0; + $1173 = $8; + $1174 = $1173; + $1175 = HEAP32[$1174 >> 2] | 0; + $1176 = ($1173 + 4) | 0; + $1177 = $1176; + $1178 = HEAP32[$1177 >> 2] | 0; + $1179 = _i64Add($1175 | 0, $1178 | 0, $1169 | 0, $1172 | 0) | 0; + $1180 = tempRet0; + $1181 = $8; + $1182 = $1181; + HEAP32[$1182 >> 2] = $1179; + $1183 = ($1181 + 4) | 0; + $1184 = $1183; + HEAP32[$1184 >> 2] = $1180; + $1185 = $20; + $1186 = $1185; + $1187 = HEAP32[$1186 >> 2] | 0; + $1188 = ($1185 + 4) | 0; + $1189 = $1188; + $1190 = HEAP32[$1189 >> 2] | 0; + $1191 = _bitshift64Shl($1187 | 0, $1190 | 0, 21) | 0; + $1192 = tempRet0; + $1193 = $7; + $1194 = $1193; + $1195 = HEAP32[$1194 >> 2] | 0; + $1196 = ($1193 + 4) | 0; + $1197 = $1196; + $1198 = HEAP32[$1197 >> 2] | 0; + $1199 = _i64Subtract($1195 | 0, $1198 | 0, $1191 | 0, $1192 | 0) | 0; + $1200 = tempRet0; + $1201 = $7; + $1202 = $1201; + HEAP32[$1202 >> 2] = $1199; + $1203 = ($1201 + 4) | 0; + $1204 = $1203; + HEAP32[$1204 >> 2] = $1200; + $1205 = $8; + $1206 = $1205; + $1207 = HEAP32[$1206 >> 2] | 0; + $1208 = ($1205 + 4) | 0; + $1209 = $1208; + $1210 = HEAP32[$1209 >> 2] | 0; + $1211 = _bitshift64Ashr($1207 | 0, $1210 | 0, 21) | 0; + $1212 = tempRet0; + $1213 = $21; + $1214 = $1213; + HEAP32[$1214 >> 2] = $1211; + $1215 = ($1213 + 4) | 0; + $1216 = $1215; + HEAP32[$1216 >> 2] = $1212; + $1217 = $21; + $1218 = $1217; + $1219 = HEAP32[$1218 >> 2] | 0; + $1220 = ($1217 + 4) | 0; + $1221 = $1220; + $1222 = HEAP32[$1221 >> 2] | 0; + $1223 = $9; + $1224 = $1223; + $1225 = HEAP32[$1224 >> 2] | 0; + $1226 = ($1223 + 4) | 0; + $1227 = $1226; + $1228 = HEAP32[$1227 >> 2] | 0; + $1229 = _i64Add($1225 | 0, $1228 | 0, $1219 | 0, $1222 | 0) | 0; + $1230 = tempRet0; + $1231 = $9; + $1232 = $1231; + HEAP32[$1232 >> 2] = $1229; + $1233 = ($1231 + 4) | 0; + $1234 = $1233; + HEAP32[$1234 >> 2] = $1230; + $1235 = $21; + $1236 = $1235; + $1237 = HEAP32[$1236 >> 2] | 0; + $1238 = ($1235 + 4) | 0; + $1239 = $1238; + $1240 = HEAP32[$1239 >> 2] | 0; + $1241 = _bitshift64Shl($1237 | 0, $1240 | 0, 21) | 0; + $1242 = tempRet0; + $1243 = $8; + $1244 = $1243; + $1245 = HEAP32[$1244 >> 2] | 0; + $1246 = ($1243 + 4) | 0; + $1247 = $1246; + $1248 = HEAP32[$1247 >> 2] | 0; + $1249 = _i64Subtract($1245 | 0, $1248 | 0, $1241 | 0, $1242 | 0) | 0; + $1250 = tempRet0; + $1251 = $8; + $1252 = $1251; + HEAP32[$1252 >> 2] = $1249; + $1253 = ($1251 + 4) | 0; + $1254 = $1253; + HEAP32[$1254 >> 2] = $1250; + $1255 = $9; + $1256 = $1255; + $1257 = HEAP32[$1256 >> 2] | 0; + $1258 = ($1255 + 4) | 0; + $1259 = $1258; + $1260 = HEAP32[$1259 >> 2] | 0; + $1261 = _bitshift64Ashr($1257 | 0, $1260 | 0, 21) | 0; + $1262 = tempRet0; + $1263 = $22; + $1264 = $1263; + HEAP32[$1264 >> 2] = $1261; + $1265 = ($1263 + 4) | 0; + $1266 = $1265; + HEAP32[$1266 >> 2] = $1262; + $1267 = $22; + $1268 = $1267; + $1269 = HEAP32[$1268 >> 2] | 0; + $1270 = ($1267 + 4) | 0; + $1271 = $1270; + $1272 = HEAP32[$1271 >> 2] | 0; + $1273 = $10; + $1274 = $1273; + $1275 = HEAP32[$1274 >> 2] | 0; + $1276 = ($1273 + 4) | 0; + $1277 = $1276; + $1278 = HEAP32[$1277 >> 2] | 0; + $1279 = _i64Add($1275 | 0, $1278 | 0, $1269 | 0, $1272 | 0) | 0; + $1280 = tempRet0; + $1281 = $10; + $1282 = $1281; + HEAP32[$1282 >> 2] = $1279; + $1283 = ($1281 + 4) | 0; + $1284 = $1283; + HEAP32[$1284 >> 2] = $1280; + $1285 = $22; + $1286 = $1285; + $1287 = HEAP32[$1286 >> 2] | 0; + $1288 = ($1285 + 4) | 0; + $1289 = $1288; + $1290 = HEAP32[$1289 >> 2] | 0; + $1291 = _bitshift64Shl($1287 | 0, $1290 | 0, 21) | 0; + $1292 = tempRet0; + $1293 = $9; + $1294 = $1293; + $1295 = HEAP32[$1294 >> 2] | 0; + $1296 = ($1293 + 4) | 0; + $1297 = $1296; + $1298 = HEAP32[$1297 >> 2] | 0; + $1299 = _i64Subtract($1295 | 0, $1298 | 0, $1291 | 0, $1292 | 0) | 0; + $1300 = tempRet0; + $1301 = $9; + $1302 = $1301; + HEAP32[$1302 >> 2] = $1299; + $1303 = ($1301 + 4) | 0; + $1304 = $1303; + HEAP32[$1304 >> 2] = $1300; + $1305 = $10; + $1306 = $1305; + $1307 = HEAP32[$1306 >> 2] | 0; + $1308 = ($1305 + 4) | 0; + $1309 = $1308; + $1310 = HEAP32[$1309 >> 2] | 0; + $1311 = _bitshift64Ashr($1307 | 0, $1310 | 0, 21) | 0; + $1312 = tempRet0; + $1313 = $23; + $1314 = $1313; + HEAP32[$1314 >> 2] = $1311; + $1315 = ($1313 + 4) | 0; + $1316 = $1315; + HEAP32[$1316 >> 2] = $1312; + $1317 = $23; + $1318 = $1317; + $1319 = HEAP32[$1318 >> 2] | 0; + $1320 = ($1317 + 4) | 0; + $1321 = $1320; + $1322 = HEAP32[$1321 >> 2] | 0; + $1323 = $11; + $1324 = $1323; + $1325 = HEAP32[$1324 >> 2] | 0; + $1326 = ($1323 + 4) | 0; + $1327 = $1326; + $1328 = HEAP32[$1327 >> 2] | 0; + $1329 = _i64Add($1325 | 0, $1328 | 0, $1319 | 0, $1322 | 0) | 0; + $1330 = tempRet0; + $1331 = $11; + $1332 = $1331; + HEAP32[$1332 >> 2] = $1329; + $1333 = ($1331 + 4) | 0; + $1334 = $1333; + HEAP32[$1334 >> 2] = $1330; + $1335 = $23; + $1336 = $1335; + $1337 = HEAP32[$1336 >> 2] | 0; + $1338 = ($1335 + 4) | 0; + $1339 = $1338; + $1340 = HEAP32[$1339 >> 2] | 0; + $1341 = _bitshift64Shl($1337 | 0, $1340 | 0, 21) | 0; + $1342 = tempRet0; + $1343 = $10; + $1344 = $1343; + $1345 = HEAP32[$1344 >> 2] | 0; + $1346 = ($1343 + 4) | 0; + $1347 = $1346; + $1348 = HEAP32[$1347 >> 2] | 0; + $1349 = _i64Subtract($1345 | 0, $1348 | 0, $1341 | 0, $1342 | 0) | 0; + $1350 = tempRet0; + $1351 = $10; + $1352 = $1351; + HEAP32[$1352 >> 2] = $1349; + $1353 = ($1351 + 4) | 0; + $1354 = $1353; + HEAP32[$1354 >> 2] = $1350; + $1355 = $11; + $1356 = $1355; + $1357 = HEAP32[$1356 >> 2] | 0; + $1358 = ($1355 + 4) | 0; + $1359 = $1358; + $1360 = HEAP32[$1359 >> 2] | 0; + $1361 = _bitshift64Ashr($1357 | 0, $1360 | 0, 21) | 0; + $1362 = tempRet0; + $1363 = $24; + $1364 = $1363; + HEAP32[$1364 >> 2] = $1361; + $1365 = ($1363 + 4) | 0; + $1366 = $1365; + HEAP32[$1366 >> 2] = $1362; + $1367 = $24; + $1368 = $1367; + $1369 = HEAP32[$1368 >> 2] | 0; + $1370 = ($1367 + 4) | 0; + $1371 = $1370; + $1372 = HEAP32[$1371 >> 2] | 0; + $1373 = $12; + $1374 = $1373; + $1375 = HEAP32[$1374 >> 2] | 0; + $1376 = ($1373 + 4) | 0; + $1377 = $1376; + $1378 = HEAP32[$1377 >> 2] | 0; + $1379 = _i64Add($1375 | 0, $1378 | 0, $1369 | 0, $1372 | 0) | 0; + $1380 = tempRet0; + $1381 = $12; + $1382 = $1381; + HEAP32[$1382 >> 2] = $1379; + $1383 = ($1381 + 4) | 0; + $1384 = $1383; + HEAP32[$1384 >> 2] = $1380; + $1385 = $24; + $1386 = $1385; + $1387 = HEAP32[$1386 >> 2] | 0; + $1388 = ($1385 + 4) | 0; + $1389 = $1388; + $1390 = HEAP32[$1389 >> 2] | 0; + $1391 = _bitshift64Shl($1387 | 0, $1390 | 0, 21) | 0; + $1392 = tempRet0; + $1393 = $11; + $1394 = $1393; + $1395 = HEAP32[$1394 >> 2] | 0; + $1396 = ($1393 + 4) | 0; + $1397 = $1396; + $1398 = HEAP32[$1397 >> 2] | 0; + $1399 = _i64Subtract($1395 | 0, $1398 | 0, $1391 | 0, $1392 | 0) | 0; + $1400 = tempRet0; + $1401 = $11; + $1402 = $1401; + HEAP32[$1402 >> 2] = $1399; + $1403 = ($1401 + 4) | 0; + $1404 = $1403; + HEAP32[$1404 >> 2] = $1400; + $1405 = $12; + $1406 = $1405; + $1407 = HEAP32[$1406 >> 2] | 0; + $1408 = ($1405 + 4) | 0; + $1409 = $1408; + $1410 = HEAP32[$1409 >> 2] | 0; + $1411 = _bitshift64Ashr($1407 | 0, $1410 | 0, 21) | 0; + $1412 = tempRet0; + $1413 = $25; + $1414 = $1413; + HEAP32[$1414 >> 2] = $1411; + $1415 = ($1413 + 4) | 0; + $1416 = $1415; + HEAP32[$1416 >> 2] = $1412; + $1417 = $25; + $1418 = $1417; + $1419 = HEAP32[$1418 >> 2] | 0; + $1420 = ($1417 + 4) | 0; + $1421 = $1420; + $1422 = HEAP32[$1421 >> 2] | 0; + $1423 = $13; + $1424 = $1423; + $1425 = HEAP32[$1424 >> 2] | 0; + $1426 = ($1423 + 4) | 0; + $1427 = $1426; + $1428 = HEAP32[$1427 >> 2] | 0; + $1429 = _i64Add($1425 | 0, $1428 | 0, $1419 | 0, $1422 | 0) | 0; + $1430 = tempRet0; + $1431 = $13; + $1432 = $1431; + HEAP32[$1432 >> 2] = $1429; + $1433 = ($1431 + 4) | 0; + $1434 = $1433; + HEAP32[$1434 >> 2] = $1430; + $1435 = $25; + $1436 = $1435; + $1437 = HEAP32[$1436 >> 2] | 0; + $1438 = ($1435 + 4) | 0; + $1439 = $1438; + $1440 = HEAP32[$1439 >> 2] | 0; + $1441 = _bitshift64Shl($1437 | 0, $1440 | 0, 21) | 0; + $1442 = tempRet0; + $1443 = $12; + $1444 = $1443; + $1445 = HEAP32[$1444 >> 2] | 0; + $1446 = ($1443 + 4) | 0; + $1447 = $1446; + $1448 = HEAP32[$1447 >> 2] | 0; + $1449 = _i64Subtract($1445 | 0, $1448 | 0, $1441 | 0, $1442 | 0) | 0; + $1450 = tempRet0; + $1451 = $12; + $1452 = $1451; + HEAP32[$1452 >> 2] = $1449; + $1453 = ($1451 + 4) | 0; + $1454 = $1453; + HEAP32[$1454 >> 2] = $1450; + $1455 = $13; + $1456 = $1455; + $1457 = HEAP32[$1456 >> 2] | 0; + $1458 = ($1455 + 4) | 0; + $1459 = $1458; + $1460 = HEAP32[$1459 >> 2] | 0; + $1461 = _bitshift64Ashr($1457 | 0, $1460 | 0, 21) | 0; + $1462 = tempRet0; + $1463 = $26; + $1464 = $1463; + HEAP32[$1464 >> 2] = $1461; + $1465 = ($1463 + 4) | 0; + $1466 = $1465; + HEAP32[$1466 >> 2] = $1462; + $1467 = $26; + $1468 = $1467; + $1469 = HEAP32[$1468 >> 2] | 0; + $1470 = ($1467 + 4) | 0; + $1471 = $1470; + $1472 = HEAP32[$1471 >> 2] | 0; + $1473 = $14; + $1474 = $1473; + $1475 = HEAP32[$1474 >> 2] | 0; + $1476 = ($1473 + 4) | 0; + $1477 = $1476; + $1478 = HEAP32[$1477 >> 2] | 0; + $1479 = _i64Add($1475 | 0, $1478 | 0, $1469 | 0, $1472 | 0) | 0; + $1480 = tempRet0; + $1481 = $14; + $1482 = $1481; + HEAP32[$1482 >> 2] = $1479; + $1483 = ($1481 + 4) | 0; + $1484 = $1483; + HEAP32[$1484 >> 2] = $1480; + $1485 = $26; + $1486 = $1485; + $1487 = HEAP32[$1486 >> 2] | 0; + $1488 = ($1485 + 4) | 0; + $1489 = $1488; + $1490 = HEAP32[$1489 >> 2] | 0; + $1491 = _bitshift64Shl($1487 | 0, $1490 | 0, 21) | 0; + $1492 = tempRet0; + $1493 = $13; + $1494 = $1493; + $1495 = HEAP32[$1494 >> 2] | 0; + $1496 = ($1493 + 4) | 0; + $1497 = $1496; + $1498 = HEAP32[$1497 >> 2] | 0; + $1499 = _i64Subtract($1495 | 0, $1498 | 0, $1491 | 0, $1492 | 0) | 0; + $1500 = tempRet0; + $1501 = $13; + $1502 = $1501; + HEAP32[$1502 >> 2] = $1499; + $1503 = ($1501 + 4) | 0; + $1504 = $1503; + HEAP32[$1504 >> 2] = $1500; + $1505 = $14; + $1506 = $1505; + $1507 = HEAP32[$1506 >> 2] | 0; + $1508 = ($1505 + 4) | 0; + $1509 = $1508; + $1510 = HEAP32[$1509 >> 2] | 0; + $1511 = ___muldi3($1507 | 0, $1510 | 0, 666643, 0) | 0; + $1512 = tempRet0; + $1513 = $2; + $1514 = $1513; + $1515 = HEAP32[$1514 >> 2] | 0; + $1516 = ($1513 + 4) | 0; + $1517 = $1516; + $1518 = HEAP32[$1517 >> 2] | 0; + $1519 = _i64Add($1515 | 0, $1518 | 0, $1511 | 0, $1512 | 0) | 0; + $1520 = tempRet0; + $1521 = $2; + $1522 = $1521; + HEAP32[$1522 >> 2] = $1519; + $1523 = ($1521 + 4) | 0; + $1524 = $1523; + HEAP32[$1524 >> 2] = $1520; + $1525 = $14; + $1526 = $1525; + $1527 = HEAP32[$1526 >> 2] | 0; + $1528 = ($1525 + 4) | 0; + $1529 = $1528; + $1530 = HEAP32[$1529 >> 2] | 0; + $1531 = ___muldi3($1527 | 0, $1530 | 0, 470296, 0) | 0; + $1532 = tempRet0; + $1533 = $3; + $1534 = $1533; + $1535 = HEAP32[$1534 >> 2] | 0; + $1536 = ($1533 + 4) | 0; + $1537 = $1536; + $1538 = HEAP32[$1537 >> 2] | 0; + $1539 = _i64Add($1535 | 0, $1538 | 0, $1531 | 0, $1532 | 0) | 0; + $1540 = tempRet0; + $1541 = $3; + $1542 = $1541; + HEAP32[$1542 >> 2] = $1539; + $1543 = ($1541 + 4) | 0; + $1544 = $1543; + HEAP32[$1544 >> 2] = $1540; + $1545 = $14; + $1546 = $1545; + $1547 = HEAP32[$1546 >> 2] | 0; + $1548 = ($1545 + 4) | 0; + $1549 = $1548; + $1550 = HEAP32[$1549 >> 2] | 0; + $1551 = ___muldi3($1547 | 0, $1550 | 0, 654183, 0) | 0; + $1552 = tempRet0; + $1553 = $4; + $1554 = $1553; + $1555 = HEAP32[$1554 >> 2] | 0; + $1556 = ($1553 + 4) | 0; + $1557 = $1556; + $1558 = HEAP32[$1557 >> 2] | 0; + $1559 = _i64Add($1555 | 0, $1558 | 0, $1551 | 0, $1552 | 0) | 0; + $1560 = tempRet0; + $1561 = $4; + $1562 = $1561; + HEAP32[$1562 >> 2] = $1559; + $1563 = ($1561 + 4) | 0; + $1564 = $1563; + HEAP32[$1564 >> 2] = $1560; + $1565 = $14; + $1566 = $1565; + $1567 = HEAP32[$1566 >> 2] | 0; + $1568 = ($1565 + 4) | 0; + $1569 = $1568; + $1570 = HEAP32[$1569 >> 2] | 0; + $1571 = ___muldi3($1567 | 0, $1570 | 0, 997805, 0) | 0; + $1572 = tempRet0; + $1573 = $5; + $1574 = $1573; + $1575 = HEAP32[$1574 >> 2] | 0; + $1576 = ($1573 + 4) | 0; + $1577 = $1576; + $1578 = HEAP32[$1577 >> 2] | 0; + $1579 = _i64Subtract($1575 | 0, $1578 | 0, $1571 | 0, $1572 | 0) | 0; + $1580 = tempRet0; + $1581 = $5; + $1582 = $1581; + HEAP32[$1582 >> 2] = $1579; + $1583 = ($1581 + 4) | 0; + $1584 = $1583; + HEAP32[$1584 >> 2] = $1580; + $1585 = $14; + $1586 = $1585; + $1587 = HEAP32[$1586 >> 2] | 0; + $1588 = ($1585 + 4) | 0; + $1589 = $1588; + $1590 = HEAP32[$1589 >> 2] | 0; + $1591 = ___muldi3($1587 | 0, $1590 | 0, 136657, 0) | 0; + $1592 = tempRet0; + $1593 = $6; + $1594 = $1593; + $1595 = HEAP32[$1594 >> 2] | 0; + $1596 = ($1593 + 4) | 0; + $1597 = $1596; + $1598 = HEAP32[$1597 >> 2] | 0; + $1599 = _i64Add($1595 | 0, $1598 | 0, $1591 | 0, $1592 | 0) | 0; + $1600 = tempRet0; + $1601 = $6; + $1602 = $1601; + HEAP32[$1602 >> 2] = $1599; + $1603 = ($1601 + 4) | 0; + $1604 = $1603; + HEAP32[$1604 >> 2] = $1600; + $1605 = $14; + $1606 = $1605; + $1607 = HEAP32[$1606 >> 2] | 0; + $1608 = ($1605 + 4) | 0; + $1609 = $1608; + $1610 = HEAP32[$1609 >> 2] | 0; + $1611 = ___muldi3($1607 | 0, $1610 | 0, 683901, 0) | 0; + $1612 = tempRet0; + $1613 = $7; + $1614 = $1613; + $1615 = HEAP32[$1614 >> 2] | 0; + $1616 = ($1613 + 4) | 0; + $1617 = $1616; + $1618 = HEAP32[$1617 >> 2] | 0; + $1619 = _i64Subtract($1615 | 0, $1618 | 0, $1611 | 0, $1612 | 0) | 0; + $1620 = tempRet0; + $1621 = $7; + $1622 = $1621; + HEAP32[$1622 >> 2] = $1619; + $1623 = ($1621 + 4) | 0; + $1624 = $1623; + HEAP32[$1624 >> 2] = $1620; + $1625 = $2; + $1626 = $1625; + $1627 = HEAP32[$1626 >> 2] | 0; + $1628 = ($1625 + 4) | 0; + $1629 = $1628; + $1630 = HEAP32[$1629 >> 2] | 0; + $1631 = _bitshift64Ashr($1627 | 0, $1630 | 0, 21) | 0; + $1632 = tempRet0; + $1633 = $15; + $1634 = $1633; + HEAP32[$1634 >> 2] = $1631; + $1635 = ($1633 + 4) | 0; + $1636 = $1635; + HEAP32[$1636 >> 2] = $1632; + $1637 = $15; + $1638 = $1637; + $1639 = HEAP32[$1638 >> 2] | 0; + $1640 = ($1637 + 4) | 0; + $1641 = $1640; + $1642 = HEAP32[$1641 >> 2] | 0; + $1643 = $3; + $1644 = $1643; + $1645 = HEAP32[$1644 >> 2] | 0; + $1646 = ($1643 + 4) | 0; + $1647 = $1646; + $1648 = HEAP32[$1647 >> 2] | 0; + $1649 = _i64Add($1645 | 0, $1648 | 0, $1639 | 0, $1642 | 0) | 0; + $1650 = tempRet0; + $1651 = $3; + $1652 = $1651; + HEAP32[$1652 >> 2] = $1649; + $1653 = ($1651 + 4) | 0; + $1654 = $1653; + HEAP32[$1654 >> 2] = $1650; + $1655 = $15; + $1656 = $1655; + $1657 = HEAP32[$1656 >> 2] | 0; + $1658 = ($1655 + 4) | 0; + $1659 = $1658; + $1660 = HEAP32[$1659 >> 2] | 0; + $1661 = _bitshift64Shl($1657 | 0, $1660 | 0, 21) | 0; + $1662 = tempRet0; + $1663 = $2; + $1664 = $1663; + $1665 = HEAP32[$1664 >> 2] | 0; + $1666 = ($1663 + 4) | 0; + $1667 = $1666; + $1668 = HEAP32[$1667 >> 2] | 0; + $1669 = _i64Subtract($1665 | 0, $1668 | 0, $1661 | 0, $1662 | 0) | 0; + $1670 = tempRet0; + $1671 = $2; + $1672 = $1671; + HEAP32[$1672 >> 2] = $1669; + $1673 = ($1671 + 4) | 0; + $1674 = $1673; + HEAP32[$1674 >> 2] = $1670; + $1675 = $3; + $1676 = $1675; + $1677 = HEAP32[$1676 >> 2] | 0; + $1678 = ($1675 + 4) | 0; + $1679 = $1678; + $1680 = HEAP32[$1679 >> 2] | 0; + $1681 = _bitshift64Ashr($1677 | 0, $1680 | 0, 21) | 0; + $1682 = tempRet0; + $1683 = $16; + $1684 = $1683; + HEAP32[$1684 >> 2] = $1681; + $1685 = ($1683 + 4) | 0; + $1686 = $1685; + HEAP32[$1686 >> 2] = $1682; + $1687 = $16; + $1688 = $1687; + $1689 = HEAP32[$1688 >> 2] | 0; + $1690 = ($1687 + 4) | 0; + $1691 = $1690; + $1692 = HEAP32[$1691 >> 2] | 0; + $1693 = $4; + $1694 = $1693; + $1695 = HEAP32[$1694 >> 2] | 0; + $1696 = ($1693 + 4) | 0; + $1697 = $1696; + $1698 = HEAP32[$1697 >> 2] | 0; + $1699 = _i64Add($1695 | 0, $1698 | 0, $1689 | 0, $1692 | 0) | 0; + $1700 = tempRet0; + $1701 = $4; + $1702 = $1701; + HEAP32[$1702 >> 2] = $1699; + $1703 = ($1701 + 4) | 0; + $1704 = $1703; + HEAP32[$1704 >> 2] = $1700; + $1705 = $16; + $1706 = $1705; + $1707 = HEAP32[$1706 >> 2] | 0; + $1708 = ($1705 + 4) | 0; + $1709 = $1708; + $1710 = HEAP32[$1709 >> 2] | 0; + $1711 = _bitshift64Shl($1707 | 0, $1710 | 0, 21) | 0; + $1712 = tempRet0; + $1713 = $3; + $1714 = $1713; + $1715 = HEAP32[$1714 >> 2] | 0; + $1716 = ($1713 + 4) | 0; + $1717 = $1716; + $1718 = HEAP32[$1717 >> 2] | 0; + $1719 = _i64Subtract($1715 | 0, $1718 | 0, $1711 | 0, $1712 | 0) | 0; + $1720 = tempRet0; + $1721 = $3; + $1722 = $1721; + HEAP32[$1722 >> 2] = $1719; + $1723 = ($1721 + 4) | 0; + $1724 = $1723; + HEAP32[$1724 >> 2] = $1720; + $1725 = $4; + $1726 = $1725; + $1727 = HEAP32[$1726 >> 2] | 0; + $1728 = ($1725 + 4) | 0; + $1729 = $1728; + $1730 = HEAP32[$1729 >> 2] | 0; + $1731 = _bitshift64Ashr($1727 | 0, $1730 | 0, 21) | 0; + $1732 = tempRet0; + $1733 = $17; + $1734 = $1733; + HEAP32[$1734 >> 2] = $1731; + $1735 = ($1733 + 4) | 0; + $1736 = $1735; + HEAP32[$1736 >> 2] = $1732; + $1737 = $17; + $1738 = $1737; + $1739 = HEAP32[$1738 >> 2] | 0; + $1740 = ($1737 + 4) | 0; + $1741 = $1740; + $1742 = HEAP32[$1741 >> 2] | 0; + $1743 = $5; + $1744 = $1743; + $1745 = HEAP32[$1744 >> 2] | 0; + $1746 = ($1743 + 4) | 0; + $1747 = $1746; + $1748 = HEAP32[$1747 >> 2] | 0; + $1749 = _i64Add($1745 | 0, $1748 | 0, $1739 | 0, $1742 | 0) | 0; + $1750 = tempRet0; + $1751 = $5; + $1752 = $1751; + HEAP32[$1752 >> 2] = $1749; + $1753 = ($1751 + 4) | 0; + $1754 = $1753; + HEAP32[$1754 >> 2] = $1750; + $1755 = $17; + $1756 = $1755; + $1757 = HEAP32[$1756 >> 2] | 0; + $1758 = ($1755 + 4) | 0; + $1759 = $1758; + $1760 = HEAP32[$1759 >> 2] | 0; + $1761 = _bitshift64Shl($1757 | 0, $1760 | 0, 21) | 0; + $1762 = tempRet0; + $1763 = $4; + $1764 = $1763; + $1765 = HEAP32[$1764 >> 2] | 0; + $1766 = ($1763 + 4) | 0; + $1767 = $1766; + $1768 = HEAP32[$1767 >> 2] | 0; + $1769 = _i64Subtract($1765 | 0, $1768 | 0, $1761 | 0, $1762 | 0) | 0; + $1770 = tempRet0; + $1771 = $4; + $1772 = $1771; + HEAP32[$1772 >> 2] = $1769; + $1773 = ($1771 + 4) | 0; + $1774 = $1773; + HEAP32[$1774 >> 2] = $1770; + $1775 = $5; + $1776 = $1775; + $1777 = HEAP32[$1776 >> 2] | 0; + $1778 = ($1775 + 4) | 0; + $1779 = $1778; + $1780 = HEAP32[$1779 >> 2] | 0; + $1781 = _bitshift64Ashr($1777 | 0, $1780 | 0, 21) | 0; + $1782 = tempRet0; + $1783 = $18; + $1784 = $1783; + HEAP32[$1784 >> 2] = $1781; + $1785 = ($1783 + 4) | 0; + $1786 = $1785; + HEAP32[$1786 >> 2] = $1782; + $1787 = $18; + $1788 = $1787; + $1789 = HEAP32[$1788 >> 2] | 0; + $1790 = ($1787 + 4) | 0; + $1791 = $1790; + $1792 = HEAP32[$1791 >> 2] | 0; + $1793 = $6; + $1794 = $1793; + $1795 = HEAP32[$1794 >> 2] | 0; + $1796 = ($1793 + 4) | 0; + $1797 = $1796; + $1798 = HEAP32[$1797 >> 2] | 0; + $1799 = _i64Add($1795 | 0, $1798 | 0, $1789 | 0, $1792 | 0) | 0; + $1800 = tempRet0; + $1801 = $6; + $1802 = $1801; + HEAP32[$1802 >> 2] = $1799; + $1803 = ($1801 + 4) | 0; + $1804 = $1803; + HEAP32[$1804 >> 2] = $1800; + $1805 = $18; + $1806 = $1805; + $1807 = HEAP32[$1806 >> 2] | 0; + $1808 = ($1805 + 4) | 0; + $1809 = $1808; + $1810 = HEAP32[$1809 >> 2] | 0; + $1811 = _bitshift64Shl($1807 | 0, $1810 | 0, 21) | 0; + $1812 = tempRet0; + $1813 = $5; + $1814 = $1813; + $1815 = HEAP32[$1814 >> 2] | 0; + $1816 = ($1813 + 4) | 0; + $1817 = $1816; + $1818 = HEAP32[$1817 >> 2] | 0; + $1819 = _i64Subtract($1815 | 0, $1818 | 0, $1811 | 0, $1812 | 0) | 0; + $1820 = tempRet0; + $1821 = $5; + $1822 = $1821; + HEAP32[$1822 >> 2] = $1819; + $1823 = ($1821 + 4) | 0; + $1824 = $1823; + HEAP32[$1824 >> 2] = $1820; + $1825 = $6; + $1826 = $1825; + $1827 = HEAP32[$1826 >> 2] | 0; + $1828 = ($1825 + 4) | 0; + $1829 = $1828; + $1830 = HEAP32[$1829 >> 2] | 0; + $1831 = _bitshift64Ashr($1827 | 0, $1830 | 0, 21) | 0; + $1832 = tempRet0; + $1833 = $19; + $1834 = $1833; + HEAP32[$1834 >> 2] = $1831; + $1835 = ($1833 + 4) | 0; + $1836 = $1835; + HEAP32[$1836 >> 2] = $1832; + $1837 = $19; + $1838 = $1837; + $1839 = HEAP32[$1838 >> 2] | 0; + $1840 = ($1837 + 4) | 0; + $1841 = $1840; + $1842 = HEAP32[$1841 >> 2] | 0; + $1843 = $7; + $1844 = $1843; + $1845 = HEAP32[$1844 >> 2] | 0; + $1846 = ($1843 + 4) | 0; + $1847 = $1846; + $1848 = HEAP32[$1847 >> 2] | 0; + $1849 = _i64Add($1845 | 0, $1848 | 0, $1839 | 0, $1842 | 0) | 0; + $1850 = tempRet0; + $1851 = $7; + $1852 = $1851; + HEAP32[$1852 >> 2] = $1849; + $1853 = ($1851 + 4) | 0; + $1854 = $1853; + HEAP32[$1854 >> 2] = $1850; + $1855 = $19; + $1856 = $1855; + $1857 = HEAP32[$1856 >> 2] | 0; + $1858 = ($1855 + 4) | 0; + $1859 = $1858; + $1860 = HEAP32[$1859 >> 2] | 0; + $1861 = _bitshift64Shl($1857 | 0, $1860 | 0, 21) | 0; + $1862 = tempRet0; + $1863 = $6; + $1864 = $1863; + $1865 = HEAP32[$1864 >> 2] | 0; + $1866 = ($1863 + 4) | 0; + $1867 = $1866; + $1868 = HEAP32[$1867 >> 2] | 0; + $1869 = _i64Subtract($1865 | 0, $1868 | 0, $1861 | 0, $1862 | 0) | 0; + $1870 = tempRet0; + $1871 = $6; + $1872 = $1871; + HEAP32[$1872 >> 2] = $1869; + $1873 = ($1871 + 4) | 0; + $1874 = $1873; + HEAP32[$1874 >> 2] = $1870; + $1875 = $7; + $1876 = $1875; + $1877 = HEAP32[$1876 >> 2] | 0; + $1878 = ($1875 + 4) | 0; + $1879 = $1878; + $1880 = HEAP32[$1879 >> 2] | 0; + $1881 = _bitshift64Ashr($1877 | 0, $1880 | 0, 21) | 0; + $1882 = tempRet0; + $1883 = $20; + $1884 = $1883; + HEAP32[$1884 >> 2] = $1881; + $1885 = ($1883 + 4) | 0; + $1886 = $1885; + HEAP32[$1886 >> 2] = $1882; + $1887 = $20; + $1888 = $1887; + $1889 = HEAP32[$1888 >> 2] | 0; + $1890 = ($1887 + 4) | 0; + $1891 = $1890; + $1892 = HEAP32[$1891 >> 2] | 0; + $1893 = $8; + $1894 = $1893; + $1895 = HEAP32[$1894 >> 2] | 0; + $1896 = ($1893 + 4) | 0; + $1897 = $1896; + $1898 = HEAP32[$1897 >> 2] | 0; + $1899 = _i64Add($1895 | 0, $1898 | 0, $1889 | 0, $1892 | 0) | 0; + $1900 = tempRet0; + $1901 = $8; + $1902 = $1901; + HEAP32[$1902 >> 2] = $1899; + $1903 = ($1901 + 4) | 0; + $1904 = $1903; + HEAP32[$1904 >> 2] = $1900; + $1905 = $20; + $1906 = $1905; + $1907 = HEAP32[$1906 >> 2] | 0; + $1908 = ($1905 + 4) | 0; + $1909 = $1908; + $1910 = HEAP32[$1909 >> 2] | 0; + $1911 = _bitshift64Shl($1907 | 0, $1910 | 0, 21) | 0; + $1912 = tempRet0; + $1913 = $7; + $1914 = $1913; + $1915 = HEAP32[$1914 >> 2] | 0; + $1916 = ($1913 + 4) | 0; + $1917 = $1916; + $1918 = HEAP32[$1917 >> 2] | 0; + $1919 = _i64Subtract($1915 | 0, $1918 | 0, $1911 | 0, $1912 | 0) | 0; + $1920 = tempRet0; + $1921 = $7; + $1922 = $1921; + HEAP32[$1922 >> 2] = $1919; + $1923 = ($1921 + 4) | 0; + $1924 = $1923; + HEAP32[$1924 >> 2] = $1920; + $1925 = $8; + $1926 = $1925; + $1927 = HEAP32[$1926 >> 2] | 0; + $1928 = ($1925 + 4) | 0; + $1929 = $1928; + $1930 = HEAP32[$1929 >> 2] | 0; + $1931 = _bitshift64Ashr($1927 | 0, $1930 | 0, 21) | 0; + $1932 = tempRet0; + $1933 = $21; + $1934 = $1933; + HEAP32[$1934 >> 2] = $1931; + $1935 = ($1933 + 4) | 0; + $1936 = $1935; + HEAP32[$1936 >> 2] = $1932; + $1937 = $21; + $1938 = $1937; + $1939 = HEAP32[$1938 >> 2] | 0; + $1940 = ($1937 + 4) | 0; + $1941 = $1940; + $1942 = HEAP32[$1941 >> 2] | 0; + $1943 = $9; + $1944 = $1943; + $1945 = HEAP32[$1944 >> 2] | 0; + $1946 = ($1943 + 4) | 0; + $1947 = $1946; + $1948 = HEAP32[$1947 >> 2] | 0; + $1949 = _i64Add($1945 | 0, $1948 | 0, $1939 | 0, $1942 | 0) | 0; + $1950 = tempRet0; + $1951 = $9; + $1952 = $1951; + HEAP32[$1952 >> 2] = $1949; + $1953 = ($1951 + 4) | 0; + $1954 = $1953; + HEAP32[$1954 >> 2] = $1950; + $1955 = $21; + $1956 = $1955; + $1957 = HEAP32[$1956 >> 2] | 0; + $1958 = ($1955 + 4) | 0; + $1959 = $1958; + $1960 = HEAP32[$1959 >> 2] | 0; + $1961 = _bitshift64Shl($1957 | 0, $1960 | 0, 21) | 0; + $1962 = tempRet0; + $1963 = $8; + $1964 = $1963; + $1965 = HEAP32[$1964 >> 2] | 0; + $1966 = ($1963 + 4) | 0; + $1967 = $1966; + $1968 = HEAP32[$1967 >> 2] | 0; + $1969 = _i64Subtract($1965 | 0, $1968 | 0, $1961 | 0, $1962 | 0) | 0; + $1970 = tempRet0; + $1971 = $8; + $1972 = $1971; + HEAP32[$1972 >> 2] = $1969; + $1973 = ($1971 + 4) | 0; + $1974 = $1973; + HEAP32[$1974 >> 2] = $1970; + $1975 = $9; + $1976 = $1975; + $1977 = HEAP32[$1976 >> 2] | 0; + $1978 = ($1975 + 4) | 0; + $1979 = $1978; + $1980 = HEAP32[$1979 >> 2] | 0; + $1981 = _bitshift64Ashr($1977 | 0, $1980 | 0, 21) | 0; + $1982 = tempRet0; + $1983 = $22; + $1984 = $1983; + HEAP32[$1984 >> 2] = $1981; + $1985 = ($1983 + 4) | 0; + $1986 = $1985; + HEAP32[$1986 >> 2] = $1982; + $1987 = $22; + $1988 = $1987; + $1989 = HEAP32[$1988 >> 2] | 0; + $1990 = ($1987 + 4) | 0; + $1991 = $1990; + $1992 = HEAP32[$1991 >> 2] | 0; + $1993 = $10; + $1994 = $1993; + $1995 = HEAP32[$1994 >> 2] | 0; + $1996 = ($1993 + 4) | 0; + $1997 = $1996; + $1998 = HEAP32[$1997 >> 2] | 0; + $1999 = _i64Add($1995 | 0, $1998 | 0, $1989 | 0, $1992 | 0) | 0; + $2000 = tempRet0; + $2001 = $10; + $2002 = $2001; + HEAP32[$2002 >> 2] = $1999; + $2003 = ($2001 + 4) | 0; + $2004 = $2003; + HEAP32[$2004 >> 2] = $2000; + $2005 = $22; + $2006 = $2005; + $2007 = HEAP32[$2006 >> 2] | 0; + $2008 = ($2005 + 4) | 0; + $2009 = $2008; + $2010 = HEAP32[$2009 >> 2] | 0; + $2011 = _bitshift64Shl($2007 | 0, $2010 | 0, 21) | 0; + $2012 = tempRet0; + $2013 = $9; + $2014 = $2013; + $2015 = HEAP32[$2014 >> 2] | 0; + $2016 = ($2013 + 4) | 0; + $2017 = $2016; + $2018 = HEAP32[$2017 >> 2] | 0; + $2019 = _i64Subtract($2015 | 0, $2018 | 0, $2011 | 0, $2012 | 0) | 0; + $2020 = tempRet0; + $2021 = $9; + $2022 = $2021; + HEAP32[$2022 >> 2] = $2019; + $2023 = ($2021 + 4) | 0; + $2024 = $2023; + HEAP32[$2024 >> 2] = $2020; + $2025 = $10; + $2026 = $2025; + $2027 = HEAP32[$2026 >> 2] | 0; + $2028 = ($2025 + 4) | 0; + $2029 = $2028; + $2030 = HEAP32[$2029 >> 2] | 0; + $2031 = _bitshift64Ashr($2027 | 0, $2030 | 0, 21) | 0; + $2032 = tempRet0; + $2033 = $23; + $2034 = $2033; + HEAP32[$2034 >> 2] = $2031; + $2035 = ($2033 + 4) | 0; + $2036 = $2035; + HEAP32[$2036 >> 2] = $2032; + $2037 = $23; + $2038 = $2037; + $2039 = HEAP32[$2038 >> 2] | 0; + $2040 = ($2037 + 4) | 0; + $2041 = $2040; + $2042 = HEAP32[$2041 >> 2] | 0; + $2043 = $11; + $2044 = $2043; + $2045 = HEAP32[$2044 >> 2] | 0; + $2046 = ($2043 + 4) | 0; + $2047 = $2046; + $2048 = HEAP32[$2047 >> 2] | 0; + $2049 = _i64Add($2045 | 0, $2048 | 0, $2039 | 0, $2042 | 0) | 0; + $2050 = tempRet0; + $2051 = $11; + $2052 = $2051; + HEAP32[$2052 >> 2] = $2049; + $2053 = ($2051 + 4) | 0; + $2054 = $2053; + HEAP32[$2054 >> 2] = $2050; + $2055 = $23; + $2056 = $2055; + $2057 = HEAP32[$2056 >> 2] | 0; + $2058 = ($2055 + 4) | 0; + $2059 = $2058; + $2060 = HEAP32[$2059 >> 2] | 0; + $2061 = _bitshift64Shl($2057 | 0, $2060 | 0, 21) | 0; + $2062 = tempRet0; + $2063 = $10; + $2064 = $2063; + $2065 = HEAP32[$2064 >> 2] | 0; + $2066 = ($2063 + 4) | 0; + $2067 = $2066; + $2068 = HEAP32[$2067 >> 2] | 0; + $2069 = _i64Subtract($2065 | 0, $2068 | 0, $2061 | 0, $2062 | 0) | 0; + $2070 = tempRet0; + $2071 = $10; + $2072 = $2071; + HEAP32[$2072 >> 2] = $2069; + $2073 = ($2071 + 4) | 0; + $2074 = $2073; + HEAP32[$2074 >> 2] = $2070; + $2075 = $11; + $2076 = $2075; + $2077 = HEAP32[$2076 >> 2] | 0; + $2078 = ($2075 + 4) | 0; + $2079 = $2078; + $2080 = HEAP32[$2079 >> 2] | 0; + $2081 = _bitshift64Ashr($2077 | 0, $2080 | 0, 21) | 0; + $2082 = tempRet0; + $2083 = $24; + $2084 = $2083; + HEAP32[$2084 >> 2] = $2081; + $2085 = ($2083 + 4) | 0; + $2086 = $2085; + HEAP32[$2086 >> 2] = $2082; + $2087 = $24; + $2088 = $2087; + $2089 = HEAP32[$2088 >> 2] | 0; + $2090 = ($2087 + 4) | 0; + $2091 = $2090; + $2092 = HEAP32[$2091 >> 2] | 0; + $2093 = $12; + $2094 = $2093; + $2095 = HEAP32[$2094 >> 2] | 0; + $2096 = ($2093 + 4) | 0; + $2097 = $2096; + $2098 = HEAP32[$2097 >> 2] | 0; + $2099 = _i64Add($2095 | 0, $2098 | 0, $2089 | 0, $2092 | 0) | 0; + $2100 = tempRet0; + $2101 = $12; + $2102 = $2101; + HEAP32[$2102 >> 2] = $2099; + $2103 = ($2101 + 4) | 0; + $2104 = $2103; + HEAP32[$2104 >> 2] = $2100; + $2105 = $24; + $2106 = $2105; + $2107 = HEAP32[$2106 >> 2] | 0; + $2108 = ($2105 + 4) | 0; + $2109 = $2108; + $2110 = HEAP32[$2109 >> 2] | 0; + $2111 = _bitshift64Shl($2107 | 0, $2110 | 0, 21) | 0; + $2112 = tempRet0; + $2113 = $11; + $2114 = $2113; + $2115 = HEAP32[$2114 >> 2] | 0; + $2116 = ($2113 + 4) | 0; + $2117 = $2116; + $2118 = HEAP32[$2117 >> 2] | 0; + $2119 = _i64Subtract($2115 | 0, $2118 | 0, $2111 | 0, $2112 | 0) | 0; + $2120 = tempRet0; + $2121 = $11; + $2122 = $2121; + HEAP32[$2122 >> 2] = $2119; + $2123 = ($2121 + 4) | 0; + $2124 = $2123; + HEAP32[$2124 >> 2] = $2120; + $2125 = $12; + $2126 = $2125; + $2127 = HEAP32[$2126 >> 2] | 0; + $2128 = ($2125 + 4) | 0; + $2129 = $2128; + $2130 = HEAP32[$2129 >> 2] | 0; + $2131 = _bitshift64Ashr($2127 | 0, $2130 | 0, 21) | 0; + $2132 = tempRet0; + $2133 = $25; + $2134 = $2133; + HEAP32[$2134 >> 2] = $2131; + $2135 = ($2133 + 4) | 0; + $2136 = $2135; + HEAP32[$2136 >> 2] = $2132; + $2137 = $25; + $2138 = $2137; + $2139 = HEAP32[$2138 >> 2] | 0; + $2140 = ($2137 + 4) | 0; + $2141 = $2140; + $2142 = HEAP32[$2141 >> 2] | 0; + $2143 = $13; + $2144 = $2143; + $2145 = HEAP32[$2144 >> 2] | 0; + $2146 = ($2143 + 4) | 0; + $2147 = $2146; + $2148 = HEAP32[$2147 >> 2] | 0; + $2149 = _i64Add($2145 | 0, $2148 | 0, $2139 | 0, $2142 | 0) | 0; + $2150 = tempRet0; + $2151 = $13; + $2152 = $2151; + HEAP32[$2152 >> 2] = $2149; + $2153 = ($2151 + 4) | 0; + $2154 = $2153; + HEAP32[$2154 >> 2] = $2150; + $2155 = $25; + $2156 = $2155; + $2157 = HEAP32[$2156 >> 2] | 0; + $2158 = ($2155 + 4) | 0; + $2159 = $2158; + $2160 = HEAP32[$2159 >> 2] | 0; + $2161 = _bitshift64Shl($2157 | 0, $2160 | 0, 21) | 0; + $2162 = tempRet0; + $2163 = $12; + $2164 = $2163; + $2165 = HEAP32[$2164 >> 2] | 0; + $2166 = ($2163 + 4) | 0; + $2167 = $2166; + $2168 = HEAP32[$2167 >> 2] | 0; + $2169 = _i64Subtract($2165 | 0, $2168 | 0, $2161 | 0, $2162 | 0) | 0; + $2170 = tempRet0; + $2171 = $12; + $2172 = $2171; + HEAP32[$2172 >> 2] = $2169; + $2173 = ($2171 + 4) | 0; + $2174 = $2173; + HEAP32[$2174 >> 2] = $2170; + $2175 = $2; + $2176 = $2175; + $2177 = HEAP32[$2176 >> 2] | 0; + $2178 = ($2175 + 4) | 0; + $2179 = $2178; + $2180 = HEAP32[$2179 >> 2] | 0; + $2181 = _bitshift64Ashr($2177 | 0, $2180 | 0, 0) | 0; + $2182 = tempRet0; + $2183 = $2181 & 255; + $2184 = $1; + HEAP8[$2184 >> 0] = $2183; + $2185 = $2; + $2186 = $2185; + $2187 = HEAP32[$2186 >> 2] | 0; + $2188 = ($2185 + 4) | 0; + $2189 = $2188; + $2190 = HEAP32[$2189 >> 2] | 0; + $2191 = _bitshift64Ashr($2187 | 0, $2190 | 0, 8) | 0; + $2192 = tempRet0; + $2193 = $2191 & 255; + $2194 = $1; + $2195 = ($2194 + 1) | 0; + HEAP8[$2195 >> 0] = $2193; + $2196 = $2; + $2197 = $2196; + $2198 = HEAP32[$2197 >> 2] | 0; + $2199 = ($2196 + 4) | 0; + $2200 = $2199; + $2201 = HEAP32[$2200 >> 2] | 0; + $2202 = _bitshift64Ashr($2198 | 0, $2201 | 0, 16) | 0; + $2203 = tempRet0; + $2204 = $3; + $2205 = $2204; + $2206 = HEAP32[$2205 >> 2] | 0; + $2207 = ($2204 + 4) | 0; + $2208 = $2207; + $2209 = HEAP32[$2208 >> 2] | 0; + $2210 = _bitshift64Shl($2206 | 0, $2209 | 0, 5) | 0; + $2211 = tempRet0; + $2212 = $2202 | $2210; + $2203 | $2211; + $2213 = $2212 & 255; + $2214 = $1; + $2215 = ($2214 + 2) | 0; + HEAP8[$2215 >> 0] = $2213; + $2216 = $3; + $2217 = $2216; + $2218 = HEAP32[$2217 >> 2] | 0; + $2219 = ($2216 + 4) | 0; + $2220 = $2219; + $2221 = HEAP32[$2220 >> 2] | 0; + $2222 = _bitshift64Ashr($2218 | 0, $2221 | 0, 3) | 0; + $2223 = tempRet0; + $2224 = $2222 & 255; + $2225 = $1; + $2226 = ($2225 + 3) | 0; + HEAP8[$2226 >> 0] = $2224; + $2227 = $3; + $2228 = $2227; + $2229 = HEAP32[$2228 >> 2] | 0; + $2230 = ($2227 + 4) | 0; + $2231 = $2230; + $2232 = HEAP32[$2231 >> 2] | 0; + $2233 = _bitshift64Ashr($2229 | 0, $2232 | 0, 11) | 0; + $2234 = tempRet0; + $2235 = $2233 & 255; + $2236 = $1; + $2237 = ($2236 + 4) | 0; + HEAP8[$2237 >> 0] = $2235; + $2238 = $3; + $2239 = $2238; + $2240 = HEAP32[$2239 >> 2] | 0; + $2241 = ($2238 + 4) | 0; + $2242 = $2241; + $2243 = HEAP32[$2242 >> 2] | 0; + $2244 = _bitshift64Ashr($2240 | 0, $2243 | 0, 19) | 0; + $2245 = tempRet0; + $2246 = $4; + $2247 = $2246; + $2248 = HEAP32[$2247 >> 2] | 0; + $2249 = ($2246 + 4) | 0; + $2250 = $2249; + $2251 = HEAP32[$2250 >> 2] | 0; + $2252 = _bitshift64Shl($2248 | 0, $2251 | 0, 2) | 0; + $2253 = tempRet0; + $2254 = $2244 | $2252; + $2245 | $2253; + $2255 = $2254 & 255; + $2256 = $1; + $2257 = ($2256 + 5) | 0; + HEAP8[$2257 >> 0] = $2255; + $2258 = $4; + $2259 = $2258; + $2260 = HEAP32[$2259 >> 2] | 0; + $2261 = ($2258 + 4) | 0; + $2262 = $2261; + $2263 = HEAP32[$2262 >> 2] | 0; + $2264 = _bitshift64Ashr($2260 | 0, $2263 | 0, 6) | 0; + $2265 = tempRet0; + $2266 = $2264 & 255; + $2267 = $1; + $2268 = ($2267 + 6) | 0; + HEAP8[$2268 >> 0] = $2266; + $2269 = $4; + $2270 = $2269; + $2271 = HEAP32[$2270 >> 2] | 0; + $2272 = ($2269 + 4) | 0; + $2273 = $2272; + $2274 = HEAP32[$2273 >> 2] | 0; + $2275 = _bitshift64Ashr($2271 | 0, $2274 | 0, 14) | 0; + $2276 = tempRet0; + $2277 = $5; + $2278 = $2277; + $2279 = HEAP32[$2278 >> 2] | 0; + $2280 = ($2277 + 4) | 0; + $2281 = $2280; + $2282 = HEAP32[$2281 >> 2] | 0; + $2283 = _bitshift64Shl($2279 | 0, $2282 | 0, 7) | 0; + $2284 = tempRet0; + $2285 = $2275 | $2283; + $2276 | $2284; + $2286 = $2285 & 255; + $2287 = $1; + $2288 = ($2287 + 7) | 0; + HEAP8[$2288 >> 0] = $2286; + $2289 = $5; + $2290 = $2289; + $2291 = HEAP32[$2290 >> 2] | 0; + $2292 = ($2289 + 4) | 0; + $2293 = $2292; + $2294 = HEAP32[$2293 >> 2] | 0; + $2295 = _bitshift64Ashr($2291 | 0, $2294 | 0, 1) | 0; + $2296 = tempRet0; + $2297 = $2295 & 255; + $2298 = $1; + $2299 = ($2298 + 8) | 0; + HEAP8[$2299 >> 0] = $2297; + $2300 = $5; + $2301 = $2300; + $2302 = HEAP32[$2301 >> 2] | 0; + $2303 = ($2300 + 4) | 0; + $2304 = $2303; + $2305 = HEAP32[$2304 >> 2] | 0; + $2306 = _bitshift64Ashr($2302 | 0, $2305 | 0, 9) | 0; + $2307 = tempRet0; + $2308 = $2306 & 255; + $2309 = $1; + $2310 = ($2309 + 9) | 0; + HEAP8[$2310 >> 0] = $2308; + $2311 = $5; + $2312 = $2311; + $2313 = HEAP32[$2312 >> 2] | 0; + $2314 = ($2311 + 4) | 0; + $2315 = $2314; + $2316 = HEAP32[$2315 >> 2] | 0; + $2317 = _bitshift64Ashr($2313 | 0, $2316 | 0, 17) | 0; + $2318 = tempRet0; + $2319 = $6; + $2320 = $2319; + $2321 = HEAP32[$2320 >> 2] | 0; + $2322 = ($2319 + 4) | 0; + $2323 = $2322; + $2324 = HEAP32[$2323 >> 2] | 0; + $2325 = _bitshift64Shl($2321 | 0, $2324 | 0, 4) | 0; + $2326 = tempRet0; + $2327 = $2317 | $2325; + $2318 | $2326; + $2328 = $2327 & 255; + $2329 = $1; + $2330 = ($2329 + 10) | 0; + HEAP8[$2330 >> 0] = $2328; + $2331 = $6; + $2332 = $2331; + $2333 = HEAP32[$2332 >> 2] | 0; + $2334 = ($2331 + 4) | 0; + $2335 = $2334; + $2336 = HEAP32[$2335 >> 2] | 0; + $2337 = _bitshift64Ashr($2333 | 0, $2336 | 0, 4) | 0; + $2338 = tempRet0; + $2339 = $2337 & 255; + $2340 = $1; + $2341 = ($2340 + 11) | 0; + HEAP8[$2341 >> 0] = $2339; + $2342 = $6; + $2343 = $2342; + $2344 = HEAP32[$2343 >> 2] | 0; + $2345 = ($2342 + 4) | 0; + $2346 = $2345; + $2347 = HEAP32[$2346 >> 2] | 0; + $2348 = _bitshift64Ashr($2344 | 0, $2347 | 0, 12) | 0; + $2349 = tempRet0; + $2350 = $2348 & 255; + $2351 = $1; + $2352 = ($2351 + 12) | 0; + HEAP8[$2352 >> 0] = $2350; + $2353 = $6; + $2354 = $2353; + $2355 = HEAP32[$2354 >> 2] | 0; + $2356 = ($2353 + 4) | 0; + $2357 = $2356; + $2358 = HEAP32[$2357 >> 2] | 0; + $2359 = _bitshift64Ashr($2355 | 0, $2358 | 0, 20) | 0; + $2360 = tempRet0; + $2361 = $7; + $2362 = $2361; + $2363 = HEAP32[$2362 >> 2] | 0; + $2364 = ($2361 + 4) | 0; + $2365 = $2364; + $2366 = HEAP32[$2365 >> 2] | 0; + $2367 = _bitshift64Shl($2363 | 0, $2366 | 0, 1) | 0; + $2368 = tempRet0; + $2369 = $2359 | $2367; + $2360 | $2368; + $2370 = $2369 & 255; + $2371 = $1; + $2372 = ($2371 + 13) | 0; + HEAP8[$2372 >> 0] = $2370; + $2373 = $7; + $2374 = $2373; + $2375 = HEAP32[$2374 >> 2] | 0; + $2376 = ($2373 + 4) | 0; + $2377 = $2376; + $2378 = HEAP32[$2377 >> 2] | 0; + $2379 = _bitshift64Ashr($2375 | 0, $2378 | 0, 7) | 0; + $2380 = tempRet0; + $2381 = $2379 & 255; + $2382 = $1; + $2383 = ($2382 + 14) | 0; + HEAP8[$2383 >> 0] = $2381; + $2384 = $7; + $2385 = $2384; + $2386 = HEAP32[$2385 >> 2] | 0; + $2387 = ($2384 + 4) | 0; + $2388 = $2387; + $2389 = HEAP32[$2388 >> 2] | 0; + $2390 = _bitshift64Ashr($2386 | 0, $2389 | 0, 15) | 0; + $2391 = tempRet0; + $2392 = $8; + $2393 = $2392; + $2394 = HEAP32[$2393 >> 2] | 0; + $2395 = ($2392 + 4) | 0; + $2396 = $2395; + $2397 = HEAP32[$2396 >> 2] | 0; + $2398 = _bitshift64Shl($2394 | 0, $2397 | 0, 6) | 0; + $2399 = tempRet0; + $2400 = $2390 | $2398; + $2391 | $2399; + $2401 = $2400 & 255; + $2402 = $1; + $2403 = ($2402 + 15) | 0; + HEAP8[$2403 >> 0] = $2401; + $2404 = $8; + $2405 = $2404; + $2406 = HEAP32[$2405 >> 2] | 0; + $2407 = ($2404 + 4) | 0; + $2408 = $2407; + $2409 = HEAP32[$2408 >> 2] | 0; + $2410 = _bitshift64Ashr($2406 | 0, $2409 | 0, 2) | 0; + $2411 = tempRet0; + $2412 = $2410 & 255; + $2413 = $1; + $2414 = ($2413 + 16) | 0; + HEAP8[$2414 >> 0] = $2412; + $2415 = $8; + $2416 = $2415; + $2417 = HEAP32[$2416 >> 2] | 0; + $2418 = ($2415 + 4) | 0; + $2419 = $2418; + $2420 = HEAP32[$2419 >> 2] | 0; + $2421 = _bitshift64Ashr($2417 | 0, $2420 | 0, 10) | 0; + $2422 = tempRet0; + $2423 = $2421 & 255; + $2424 = $1; + $2425 = ($2424 + 17) | 0; + HEAP8[$2425 >> 0] = $2423; + $2426 = $8; + $2427 = $2426; + $2428 = HEAP32[$2427 >> 2] | 0; + $2429 = ($2426 + 4) | 0; + $2430 = $2429; + $2431 = HEAP32[$2430 >> 2] | 0; + $2432 = _bitshift64Ashr($2428 | 0, $2431 | 0, 18) | 0; + $2433 = tempRet0; + $2434 = $9; + $2435 = $2434; + $2436 = HEAP32[$2435 >> 2] | 0; + $2437 = ($2434 + 4) | 0; + $2438 = $2437; + $2439 = HEAP32[$2438 >> 2] | 0; + $2440 = _bitshift64Shl($2436 | 0, $2439 | 0, 3) | 0; + $2441 = tempRet0; + $2442 = $2432 | $2440; + $2433 | $2441; + $2443 = $2442 & 255; + $2444 = $1; + $2445 = ($2444 + 18) | 0; + HEAP8[$2445 >> 0] = $2443; + $2446 = $9; + $2447 = $2446; + $2448 = HEAP32[$2447 >> 2] | 0; + $2449 = ($2446 + 4) | 0; + $2450 = $2449; + $2451 = HEAP32[$2450 >> 2] | 0; + $2452 = _bitshift64Ashr($2448 | 0, $2451 | 0, 5) | 0; + $2453 = tempRet0; + $2454 = $2452 & 255; + $2455 = $1; + $2456 = ($2455 + 19) | 0; + HEAP8[$2456 >> 0] = $2454; + $2457 = $9; + $2458 = $2457; + $2459 = HEAP32[$2458 >> 2] | 0; + $2460 = ($2457 + 4) | 0; + $2461 = $2460; + $2462 = HEAP32[$2461 >> 2] | 0; + $2463 = _bitshift64Ashr($2459 | 0, $2462 | 0, 13) | 0; + $2464 = tempRet0; + $2465 = $2463 & 255; + $2466 = $1; + $2467 = ($2466 + 20) | 0; + HEAP8[$2467 >> 0] = $2465; + $2468 = $10; + $2469 = $2468; + $2470 = HEAP32[$2469 >> 2] | 0; + $2471 = ($2468 + 4) | 0; + $2472 = $2471; + $2473 = HEAP32[$2472 >> 2] | 0; + $2474 = _bitshift64Ashr($2470 | 0, $2473 | 0, 0) | 0; + $2475 = tempRet0; + $2476 = $2474 & 255; + $2477 = $1; + $2478 = ($2477 + 21) | 0; + HEAP8[$2478 >> 0] = $2476; + $2479 = $10; + $2480 = $2479; + $2481 = HEAP32[$2480 >> 2] | 0; + $2482 = ($2479 + 4) | 0; + $2483 = $2482; + $2484 = HEAP32[$2483 >> 2] | 0; + $2485 = _bitshift64Ashr($2481 | 0, $2484 | 0, 8) | 0; + $2486 = tempRet0; + $2487 = $2485 & 255; + $2488 = $1; + $2489 = ($2488 + 22) | 0; + HEAP8[$2489 >> 0] = $2487; + $2490 = $10; + $2491 = $2490; + $2492 = HEAP32[$2491 >> 2] | 0; + $2493 = ($2490 + 4) | 0; + $2494 = $2493; + $2495 = HEAP32[$2494 >> 2] | 0; + $2496 = _bitshift64Ashr($2492 | 0, $2495 | 0, 16) | 0; + $2497 = tempRet0; + $2498 = $11; + $2499 = $2498; + $2500 = HEAP32[$2499 >> 2] | 0; + $2501 = ($2498 + 4) | 0; + $2502 = $2501; + $2503 = HEAP32[$2502 >> 2] | 0; + $2504 = _bitshift64Shl($2500 | 0, $2503 | 0, 5) | 0; + $2505 = tempRet0; + $2506 = $2496 | $2504; + $2497 | $2505; + $2507 = $2506 & 255; + $2508 = $1; + $2509 = ($2508 + 23) | 0; + HEAP8[$2509 >> 0] = $2507; + $2510 = $11; + $2511 = $2510; + $2512 = HEAP32[$2511 >> 2] | 0; + $2513 = ($2510 + 4) | 0; + $2514 = $2513; + $2515 = HEAP32[$2514 >> 2] | 0; + $2516 = _bitshift64Ashr($2512 | 0, $2515 | 0, 3) | 0; + $2517 = tempRet0; + $2518 = $2516 & 255; + $2519 = $1; + $2520 = ($2519 + 24) | 0; + HEAP8[$2520 >> 0] = $2518; + $2521 = $11; + $2522 = $2521; + $2523 = HEAP32[$2522 >> 2] | 0; + $2524 = ($2521 + 4) | 0; + $2525 = $2524; + $2526 = HEAP32[$2525 >> 2] | 0; + $2527 = _bitshift64Ashr($2523 | 0, $2526 | 0, 11) | 0; + $2528 = tempRet0; + $2529 = $2527 & 255; + $2530 = $1; + $2531 = ($2530 + 25) | 0; + HEAP8[$2531 >> 0] = $2529; + $2532 = $11; + $2533 = $2532; + $2534 = HEAP32[$2533 >> 2] | 0; + $2535 = ($2532 + 4) | 0; + $2536 = $2535; + $2537 = HEAP32[$2536 >> 2] | 0; + $2538 = _bitshift64Ashr($2534 | 0, $2537 | 0, 19) | 0; + $2539 = tempRet0; + $2540 = $12; + $2541 = $2540; + $2542 = HEAP32[$2541 >> 2] | 0; + $2543 = ($2540 + 4) | 0; + $2544 = $2543; + $2545 = HEAP32[$2544 >> 2] | 0; + $2546 = _bitshift64Shl($2542 | 0, $2545 | 0, 2) | 0; + $2547 = tempRet0; + $2548 = $2538 | $2546; + $2539 | $2547; + $2549 = $2548 & 255; + $2550 = $1; + $2551 = ($2550 + 26) | 0; + HEAP8[$2551 >> 0] = $2549; + $2552 = $12; + $2553 = $2552; + $2554 = HEAP32[$2553 >> 2] | 0; + $2555 = ($2552 + 4) | 0; + $2556 = $2555; + $2557 = HEAP32[$2556 >> 2] | 0; + $2558 = _bitshift64Ashr($2554 | 0, $2557 | 0, 6) | 0; + $2559 = tempRet0; + $2560 = $2558 & 255; + $2561 = $1; + $2562 = ($2561 + 27) | 0; + HEAP8[$2562 >> 0] = $2560; + $2563 = $12; + $2564 = $2563; + $2565 = HEAP32[$2564 >> 2] | 0; + $2566 = ($2563 + 4) | 0; + $2567 = $2566; + $2568 = HEAP32[$2567 >> 2] | 0; + $2569 = _bitshift64Ashr($2565 | 0, $2568 | 0, 14) | 0; + $2570 = tempRet0; + $2571 = $13; + $2572 = $2571; + $2573 = HEAP32[$2572 >> 2] | 0; + $2574 = ($2571 + 4) | 0; + $2575 = $2574; + $2576 = HEAP32[$2575 >> 2] | 0; + $2577 = _bitshift64Shl($2573 | 0, $2576 | 0, 7) | 0; + $2578 = tempRet0; + $2579 = $2569 | $2577; + $2570 | $2578; + $2580 = $2579 & 255; + $2581 = $1; + $2582 = ($2581 + 28) | 0; + HEAP8[$2582 >> 0] = $2580; + $2583 = $13; + $2584 = $2583; + $2585 = HEAP32[$2584 >> 2] | 0; + $2586 = ($2583 + 4) | 0; + $2587 = $2586; + $2588 = HEAP32[$2587 >> 2] | 0; + $2589 = _bitshift64Ashr($2585 | 0, $2588 | 0, 1) | 0; + $2590 = tempRet0; + $2591 = $2589 & 255; + $2592 = $1; + $2593 = ($2592 + 29) | 0; + HEAP8[$2593 >> 0] = $2591; + $2594 = $13; + $2595 = $2594; + $2596 = HEAP32[$2595 >> 2] | 0; + $2597 = ($2594 + 4) | 0; + $2598 = $2597; + $2599 = HEAP32[$2598 >> 2] | 0; + $2600 = _bitshift64Ashr($2596 | 0, $2599 | 0, 9) | 0; + $2601 = tempRet0; + $2602 = $2600 & 255; + $2603 = $1; + $2604 = ($2603 + 30) | 0; + HEAP8[$2604 >> 0] = $2602; + $2605 = $13; + $2606 = $2605; + $2607 = HEAP32[$2606 >> 2] | 0; + $2608 = ($2605 + 4) | 0; + $2609 = $2608; + $2610 = HEAP32[$2609 >> 2] | 0; + $2611 = _bitshift64Ashr($2607 | 0, $2610 | 0, 17) | 0; + $2612 = tempRet0; + $2613 = $2611 & 255; + $2614 = $1; + $2615 = ($2614 + 31) | 0; + HEAP8[$2615 >> 0] = $2613; + STACKTOP = sp; return; - } - $13 = (0 - ($10))|0; - $14 = (($2) + ($13)|0); - $15 = (($10) + ($6))|0; - $16 = ($14>>>0)<($3>>>0); - if ($16) { - return; - } - $17 = HEAP32[(1204)>>2]|0; - $18 = ($17|0)==($14|0); - if ($18) { - $79 = ((($7)) + 4|0); - $80 = HEAP32[$79>>2]|0; - $81 = $80 & 3; - $82 = ($81|0)==(3); - if (!($82)) { - $$1 = $14;$$1345 = $15;$88 = $14; - break; - } - $83 = (($14) + ($15)|0); - $84 = ((($14)) + 4|0); - $85 = $15 | 1; - $86 = $80 & -2; - HEAP32[(1192)>>2] = $15; - HEAP32[$79>>2] = $86; - HEAP32[$84>>2] = $85; - HEAP32[$83>>2] = $15; - return; - } - $19 = $10 >>> 3; - $20 = ($10>>>0)<(256); - if ($20) { - $21 = ((($14)) + 8|0); - $22 = HEAP32[$21>>2]|0; - $23 = ((($14)) + 12|0); - $24 = HEAP32[$23>>2]|0; - $25 = ($24|0)==($22|0); - if ($25) { - $26 = 1 << $19; - $27 = $26 ^ -1; - $28 = HEAP32[296]|0; - $29 = $28 & $27; - HEAP32[296] = $29; - $$1 = $14;$$1345 = $15;$88 = $14; - break; - } else { - $30 = ((($22)) + 12|0); - HEAP32[$30>>2] = $24; - $31 = ((($24)) + 8|0); - HEAP32[$31>>2] = $22; - $$1 = $14;$$1345 = $15;$88 = $14; - break; - } - } - $32 = ((($14)) + 24|0); - $33 = HEAP32[$32>>2]|0; - $34 = ((($14)) + 12|0); - $35 = HEAP32[$34>>2]|0; - $36 = ($35|0)==($14|0); - do { - if ($36) { - $41 = ((($14)) + 16|0); - $42 = ((($41)) + 4|0); - $43 = HEAP32[$42>>2]|0; - $44 = ($43|0)==(0|0); - if ($44) { - $45 = HEAP32[$41>>2]|0; - $46 = ($45|0)==(0|0); - if ($46) { - $$3 = 0; - break; - } else { - $$1350$ph = $45;$$1353$ph = $41; - } - } else { - $$1350$ph = $43;$$1353$ph = $42; - } - $$1350 = $$1350$ph;$$1353 = $$1353$ph; - while(1) { - $47 = ((($$1350)) + 20|0); - $48 = HEAP32[$47>>2]|0; - $49 = ($48|0)==(0|0); - if ($49) { - $50 = ((($$1350)) + 16|0); - $51 = HEAP32[$50>>2]|0; - $52 = ($51|0)==(0|0); - if ($52) { - break; - } else { - $$1350$be = $51;$$1353$be = $50; - } - } else { - $$1350$be = $48;$$1353$be = $47; - } - $$1350 = $$1350$be;$$1353 = $$1353$be; - } - HEAP32[$$1353>>2] = 0; - $$3 = $$1350; - } else { - $37 = ((($14)) + 8|0); - $38 = HEAP32[$37>>2]|0; - $39 = ((($38)) + 12|0); - HEAP32[$39>>2] = $35; - $40 = ((($35)) + 8|0); - HEAP32[$40>>2] = $38; - $$3 = $35; - } - } while(0); - $53 = ($33|0)==(0|0); - if ($53) { - $$1 = $14;$$1345 = $15;$88 = $14; - } else { - $54 = ((($14)) + 28|0); - $55 = HEAP32[$54>>2]|0; - $56 = (1488 + ($55<<2)|0); - $57 = HEAP32[$56>>2]|0; - $58 = ($57|0)==($14|0); - if ($58) { - HEAP32[$56>>2] = $$3; - $cond371 = ($$3|0)==(0|0); - if ($cond371) { - $59 = 1 << $55; - $60 = $59 ^ -1; - $61 = HEAP32[(1188)>>2]|0; - $62 = $61 & $60; - HEAP32[(1188)>>2] = $62; - $$1 = $14;$$1345 = $15;$88 = $14; - break; - } - } else { - $63 = ((($33)) + 16|0); - $64 = HEAP32[$63>>2]|0; - $65 = ($64|0)==($14|0); - $66 = ((($33)) + 20|0); - $$sink = $65 ? $63 : $66; - HEAP32[$$sink>>2] = $$3; - $67 = ($$3|0)==(0|0); - if ($67) { - $$1 = $14;$$1345 = $15;$88 = $14; - break; - } - } - $68 = ((($$3)) + 24|0); - HEAP32[$68>>2] = $33; - $69 = ((($14)) + 16|0); - $70 = HEAP32[$69>>2]|0; - $71 = ($70|0)==(0|0); - if (!($71)) { - $72 = ((($$3)) + 16|0); - HEAP32[$72>>2] = $70; - $73 = ((($70)) + 24|0); - HEAP32[$73>>2] = $$3; - } - $74 = ((($69)) + 4|0); - $75 = HEAP32[$74>>2]|0; - $76 = ($75|0)==(0|0); - if ($76) { - $$1 = $14;$$1345 = $15;$88 = $14; - } else { - $77 = ((($$3)) + 20|0); - HEAP32[$77>>2] = $75; - $78 = ((($75)) + 24|0); - HEAP32[$78>>2] = $$3; - $$1 = $14;$$1345 = $15;$88 = $14; - } - } - } else { - $$1 = $2;$$1345 = $6;$88 = $2; } - } while(0); - $87 = ($88>>>0)<($7>>>0); - if (!($87)) { - return; - } - $89 = ((($7)) + 4|0); - $90 = HEAP32[$89>>2]|0; - $91 = $90 & 1; - $92 = ($91|0)==(0); - if ($92) { - return; - } - $93 = $90 & 2; - $94 = ($93|0)==(0); - if ($94) { - $95 = HEAP32[(1208)>>2]|0; - $96 = ($95|0)==($7|0); - if ($96) { - $97 = HEAP32[(1196)>>2]|0; - $98 = (($97) + ($$1345))|0; - HEAP32[(1196)>>2] = $98; - HEAP32[(1208)>>2] = $$1; - $99 = $98 | 1; - $100 = ((($$1)) + 4|0); - HEAP32[$100>>2] = $99; - $101 = HEAP32[(1204)>>2]|0; - $102 = ($$1|0)==($101|0); - if (!($102)) { - return; - } - HEAP32[(1204)>>2] = 0; - HEAP32[(1192)>>2] = 0; - return; - } - $103 = HEAP32[(1204)>>2]|0; - $104 = ($103|0)==($7|0); - if ($104) { - $105 = HEAP32[(1192)>>2]|0; - $106 = (($105) + ($$1345))|0; - HEAP32[(1192)>>2] = $106; - HEAP32[(1204)>>2] = $88; - $107 = $106 | 1; - $108 = ((($$1)) + 4|0); - HEAP32[$108>>2] = $107; - $109 = (($88) + ($106)|0); - HEAP32[$109>>2] = $106; - return; - } - $110 = $90 & -8; - $111 = (($110) + ($$1345))|0; - $112 = $90 >>> 3; - $113 = ($90>>>0)<(256); - do { - if ($113) { - $114 = ((($7)) + 8|0); - $115 = HEAP32[$114>>2]|0; - $116 = ((($7)) + 12|0); - $117 = HEAP32[$116>>2]|0; - $118 = ($117|0)==($115|0); - if ($118) { - $119 = 1 << $112; - $120 = $119 ^ -1; - $121 = HEAP32[296]|0; - $122 = $121 & $120; - HEAP32[296] = $122; - break; - } else { - $123 = ((($115)) + 12|0); - HEAP32[$123>>2] = $117; - $124 = ((($117)) + 8|0); - HEAP32[$124>>2] = $115; - break; - } - } else { - $125 = ((($7)) + 24|0); - $126 = HEAP32[$125>>2]|0; - $127 = ((($7)) + 12|0); - $128 = HEAP32[$127>>2]|0; - $129 = ($128|0)==($7|0); + function _malloc($0) { + $0 = $0 | 0; + var $$0 = 0, + $$0$i = 0, + $$0$i$i = 0, + $$0$i$i$i = 0, + $$0$i20$i = 0, + $$0169$i = 0, + $$0170$i = 0, + $$0171$i = 0, + $$0192 = 0, + $$0194 = 0, + $$02014$i$i = 0, + $$0202$lcssa$i$i = 0, + $$02023$i$i = 0, + $$0206$i$i = 0, + $$0207$i$i = 0, + $$024372$i = 0, + $$0259$i$i = 0, + $$02604$i$i = 0, + $$0261$lcssa$i$i = 0, + $$02613$i$i = 0; + var $$0267$i$i = 0, + $$0268$i$i = 0, + $$0318$i = 0, + $$032012$i = 0, + $$0321$lcssa$i = 0, + $$032111$i = 0, + $$0323$i = 0, + $$0329$i = 0, + $$0335$i = 0, + $$0336$i = 0, + $$0338$i = 0, + $$0339$i = 0, + $$0344$i = 0, + $$1174$i = 0, + $$1174$i$be = 0, + $$1174$i$ph = 0, + $$1176$i = 0, + $$1176$i$be = 0, + $$1176$i$ph = 0, + $$124471$i = 0; + var $$1263$i$i = 0, + $$1263$i$i$be = 0, + $$1263$i$i$ph = 0, + $$1265$i$i = 0, + $$1265$i$i$be = 0, + $$1265$i$i$ph = 0, + $$1319$i = 0, + $$1324$i = 0, + $$1340$i = 0, + $$1346$i = 0, + $$1346$i$be = 0, + $$1346$i$ph = 0, + $$1350$i = 0, + $$1350$i$be = 0, + $$1350$i$ph = 0, + $$2234243136$i = 0, + $$2247$ph$i = 0, + $$2253$ph$i = 0, + $$2331$i = 0, + $$3$i = 0; + var $$3$i$i = 0, + $$3$i198 = 0, + $$3$i198211 = 0, + $$3326$i = 0, + $$3348$i = 0, + $$4$lcssa$i = 0, + $$415$i = 0, + $$415$i$ph = 0, + $$4236$i = 0, + $$4327$lcssa$i = 0, + $$432714$i = 0, + $$432714$i$ph = 0, + $$4333$i = 0, + $$533413$i = 0, + $$533413$i$ph = 0, + $$723947$i = 0, + $$748$i = 0, + $$pre = 0, + $$pre$i = 0, + $$pre$i$i = 0; + var $$pre$i16$i = 0, + $$pre$i195 = 0, + $$pre$i204 = 0, + $$pre$phi$i$iZ2D = 0, + $$pre$phi$i17$iZ2D = 0, + $$pre$phi$i205Z2D = 0, + $$pre$phi$iZ2D = 0, + $$pre$phiZ2D = 0, + $$sink = 0, + $$sink320 = 0, + $$sink321 = 0, + $1 = 0, + $10 = 0, + $100 = 0, + $101 = 0, + $102 = 0, + $103 = 0, + $104 = 0, + $105 = 0, + $106 = 0; + var $107 = 0, + $108 = 0, + $109 = 0, + $11 = 0, + $110 = 0, + $111 = 0, + $112 = 0, + $113 = 0, + $114 = 0, + $115 = 0, + $116 = 0, + $117 = 0, + $118 = 0, + $119 = 0, + $12 = 0, + $120 = 0, + $121 = 0, + $122 = 0, + $123 = 0, + $124 = 0; + var $125 = 0, + $126 = 0, + $127 = 0, + $128 = 0, + $129 = 0, + $13 = 0, + $130 = 0, + $131 = 0, + $132 = 0, + $133 = 0, + $134 = 0, + $135 = 0, + $136 = 0, + $137 = 0, + $138 = 0, + $139 = 0, + $14 = 0, + $140 = 0, + $141 = 0, + $142 = 0; + var $143 = 0, + $144 = 0, + $145 = 0, + $146 = 0, + $147 = 0, + $148 = 0, + $149 = 0, + $15 = 0, + $150 = 0, + $151 = 0, + $152 = 0, + $153 = 0, + $154 = 0, + $155 = 0, + $156 = 0, + $157 = 0, + $158 = 0, + $159 = 0, + $16 = 0, + $160 = 0; + var $161 = 0, + $162 = 0, + $163 = 0, + $164 = 0, + $165 = 0, + $166 = 0, + $167 = 0, + $168 = 0, + $169 = 0, + $17 = 0, + $170 = 0, + $171 = 0, + $172 = 0, + $173 = 0, + $174 = 0, + $175 = 0, + $176 = 0, + $177 = 0, + $178 = 0, + $179 = 0; + var $18 = 0, + $180 = 0, + $181 = 0, + $182 = 0, + $183 = 0, + $184 = 0, + $185 = 0, + $186 = 0, + $187 = 0, + $188 = 0, + $189 = 0, + $19 = 0, + $190 = 0, + $191 = 0, + $192 = 0, + $193 = 0, + $194 = 0, + $195 = 0, + $196 = 0, + $197 = 0; + var $198 = 0, + $199 = 0, + $2 = 0, + $20 = 0, + $200 = 0, + $201 = 0, + $202 = 0, + $203 = 0, + $204 = 0, + $205 = 0, + $206 = 0, + $207 = 0, + $208 = 0, + $209 = 0, + $21 = 0, + $210 = 0, + $211 = 0, + $212 = 0, + $213 = 0, + $214 = 0; + var $215 = 0, + $216 = 0, + $217 = 0, + $218 = 0, + $219 = 0, + $22 = 0, + $220 = 0, + $221 = 0, + $222 = 0, + $223 = 0, + $224 = 0, + $225 = 0, + $226 = 0, + $227 = 0, + $228 = 0, + $229 = 0, + $23 = 0, + $230 = 0, + $231 = 0, + $232 = 0; + var $233 = 0, + $234 = 0, + $235 = 0, + $236 = 0, + $237 = 0, + $238 = 0, + $239 = 0, + $24 = 0, + $240 = 0, + $241 = 0, + $242 = 0, + $243 = 0, + $244 = 0, + $245 = 0, + $246 = 0, + $247 = 0, + $248 = 0, + $249 = 0, + $25 = 0, + $250 = 0; + var $251 = 0, + $252 = 0, + $253 = 0, + $254 = 0, + $255 = 0, + $256 = 0, + $257 = 0, + $258 = 0, + $259 = 0, + $26 = 0, + $260 = 0, + $261 = 0, + $262 = 0, + $263 = 0, + $264 = 0, + $265 = 0, + $266 = 0, + $267 = 0, + $268 = 0, + $269 = 0; + var $27 = 0, + $270 = 0, + $271 = 0, + $272 = 0, + $273 = 0, + $274 = 0, + $275 = 0, + $276 = 0, + $277 = 0, + $278 = 0, + $279 = 0, + $28 = 0, + $280 = 0, + $281 = 0, + $282 = 0, + $283 = 0, + $284 = 0, + $285 = 0, + $286 = 0, + $287 = 0; + var $288 = 0, + $289 = 0, + $29 = 0, + $290 = 0, + $291 = 0, + $292 = 0, + $293 = 0, + $294 = 0, + $295 = 0, + $296 = 0, + $297 = 0, + $298 = 0, + $299 = 0, + $3 = 0, + $30 = 0, + $300 = 0, + $301 = 0, + $302 = 0, + $303 = 0, + $304 = 0; + var $305 = 0, + $306 = 0, + $307 = 0, + $308 = 0, + $309 = 0, + $31 = 0, + $310 = 0, + $311 = 0, + $312 = 0, + $313 = 0, + $314 = 0, + $315 = 0, + $316 = 0, + $317 = 0, + $318 = 0, + $319 = 0, + $32 = 0, + $320 = 0, + $321 = 0, + $322 = 0; + var $323 = 0, + $324 = 0, + $325 = 0, + $326 = 0, + $327 = 0, + $328 = 0, + $329 = 0, + $33 = 0, + $330 = 0, + $331 = 0, + $332 = 0, + $333 = 0, + $334 = 0, + $335 = 0, + $336 = 0, + $337 = 0, + $338 = 0, + $339 = 0, + $34 = 0, + $340 = 0; + var $341 = 0, + $342 = 0, + $343 = 0, + $344 = 0, + $345 = 0, + $346 = 0, + $347 = 0, + $348 = 0, + $349 = 0, + $35 = 0, + $350 = 0, + $351 = 0, + $352 = 0, + $353 = 0, + $354 = 0, + $355 = 0, + $356 = 0, + $357 = 0, + $358 = 0, + $359 = 0; + var $36 = 0, + $360 = 0, + $361 = 0, + $362 = 0, + $363 = 0, + $364 = 0, + $365 = 0, + $366 = 0, + $367 = 0, + $368 = 0, + $369 = 0, + $37 = 0, + $370 = 0, + $371 = 0, + $372 = 0, + $373 = 0, + $374 = 0, + $375 = 0, + $376 = 0, + $377 = 0; + var $378 = 0, + $379 = 0, + $38 = 0, + $380 = 0, + $381 = 0, + $382 = 0, + $383 = 0, + $384 = 0, + $385 = 0, + $386 = 0, + $387 = 0, + $388 = 0, + $389 = 0, + $39 = 0, + $390 = 0, + $391 = 0, + $392 = 0, + $393 = 0, + $394 = 0, + $395 = 0; + var $396 = 0, + $397 = 0, + $398 = 0, + $399 = 0, + $4 = 0, + $40 = 0, + $400 = 0, + $401 = 0, + $402 = 0, + $403 = 0, + $404 = 0, + $405 = 0, + $406 = 0, + $407 = 0, + $408 = 0, + $409 = 0, + $41 = 0, + $410 = 0, + $411 = 0, + $412 = 0; + var $413 = 0, + $414 = 0, + $415 = 0, + $416 = 0, + $417 = 0, + $418 = 0, + $419 = 0, + $42 = 0, + $420 = 0, + $421 = 0, + $422 = 0, + $423 = 0, + $424 = 0, + $425 = 0, + $426 = 0, + $427 = 0, + $428 = 0, + $429 = 0, + $43 = 0, + $430 = 0; + var $431 = 0, + $432 = 0, + $433 = 0, + $434 = 0, + $435 = 0, + $436 = 0, + $437 = 0, + $438 = 0, + $439 = 0, + $44 = 0, + $440 = 0, + $441 = 0, + $442 = 0, + $443 = 0, + $444 = 0, + $445 = 0, + $446 = 0, + $447 = 0, + $448 = 0, + $449 = 0; + var $45 = 0, + $450 = 0, + $451 = 0, + $452 = 0, + $453 = 0, + $454 = 0, + $455 = 0, + $456 = 0, + $457 = 0, + $458 = 0, + $459 = 0, + $46 = 0, + $460 = 0, + $461 = 0, + $462 = 0, + $463 = 0, + $464 = 0, + $465 = 0, + $466 = 0, + $467 = 0; + var $468 = 0, + $469 = 0, + $47 = 0, + $470 = 0, + $471 = 0, + $472 = 0, + $473 = 0, + $474 = 0, + $475 = 0, + $476 = 0, + $477 = 0, + $478 = 0, + $479 = 0, + $48 = 0, + $480 = 0, + $481 = 0, + $482 = 0, + $483 = 0, + $484 = 0, + $485 = 0; + var $486 = 0, + $487 = 0, + $488 = 0, + $489 = 0, + $49 = 0, + $490 = 0, + $491 = 0, + $492 = 0, + $493 = 0, + $494 = 0, + $495 = 0, + $496 = 0, + $497 = 0, + $498 = 0, + $499 = 0, + $5 = 0, + $50 = 0, + $500 = 0, + $501 = 0, + $502 = 0; + var $503 = 0, + $504 = 0, + $505 = 0, + $506 = 0, + $507 = 0, + $508 = 0, + $509 = 0, + $51 = 0, + $510 = 0, + $511 = 0, + $512 = 0, + $513 = 0, + $514 = 0, + $515 = 0, + $516 = 0, + $517 = 0, + $518 = 0, + $519 = 0, + $52 = 0, + $520 = 0; + var $521 = 0, + $522 = 0, + $523 = 0, + $524 = 0, + $525 = 0, + $526 = 0, + $527 = 0, + $528 = 0, + $529 = 0, + $53 = 0, + $530 = 0, + $531 = 0, + $532 = 0, + $533 = 0, + $534 = 0, + $535 = 0, + $536 = 0, + $537 = 0, + $538 = 0, + $539 = 0; + var $54 = 0, + $540 = 0, + $541 = 0, + $542 = 0, + $543 = 0, + $544 = 0, + $545 = 0, + $546 = 0, + $547 = 0, + $548 = 0, + $549 = 0, + $55 = 0, + $550 = 0, + $551 = 0, + $552 = 0, + $553 = 0, + $554 = 0, + $555 = 0, + $556 = 0, + $557 = 0; + var $558 = 0, + $559 = 0, + $56 = 0, + $560 = 0, + $561 = 0, + $562 = 0, + $563 = 0, + $564 = 0, + $565 = 0, + $566 = 0, + $567 = 0, + $568 = 0, + $569 = 0, + $57 = 0, + $570 = 0, + $571 = 0, + $572 = 0, + $573 = 0, + $574 = 0, + $575 = 0; + var $576 = 0, + $577 = 0, + $578 = 0, + $579 = 0, + $58 = 0, + $580 = 0, + $581 = 0, + $582 = 0, + $583 = 0, + $584 = 0, + $585 = 0, + $586 = 0, + $587 = 0, + $588 = 0, + $589 = 0, + $59 = 0, + $590 = 0, + $591 = 0, + $592 = 0, + $593 = 0; + var $594 = 0, + $595 = 0, + $596 = 0, + $597 = 0, + $598 = 0, + $599 = 0, + $6 = 0, + $60 = 0, + $600 = 0, + $601 = 0, + $602 = 0, + $603 = 0, + $604 = 0, + $605 = 0, + $606 = 0, + $607 = 0, + $608 = 0, + $609 = 0, + $61 = 0, + $610 = 0; + var $611 = 0, + $612 = 0, + $613 = 0, + $614 = 0, + $615 = 0, + $616 = 0, + $617 = 0, + $618 = 0, + $619 = 0, + $62 = 0, + $620 = 0, + $621 = 0, + $622 = 0, + $623 = 0, + $624 = 0, + $625 = 0, + $626 = 0, + $627 = 0, + $628 = 0, + $629 = 0; + var $63 = 0, + $630 = 0, + $631 = 0, + $632 = 0, + $633 = 0, + $634 = 0, + $635 = 0, + $636 = 0, + $637 = 0, + $638 = 0, + $639 = 0, + $64 = 0, + $640 = 0, + $641 = 0, + $642 = 0, + $643 = 0, + $644 = 0, + $645 = 0, + $646 = 0, + $647 = 0; + var $648 = 0, + $649 = 0, + $65 = 0, + $650 = 0, + $651 = 0, + $652 = 0, + $653 = 0, + $654 = 0, + $655 = 0, + $656 = 0, + $657 = 0, + $658 = 0, + $659 = 0, + $66 = 0, + $660 = 0, + $661 = 0, + $662 = 0, + $663 = 0, + $664 = 0, + $665 = 0; + var $666 = 0, + $667 = 0, + $668 = 0, + $669 = 0, + $67 = 0, + $670 = 0, + $671 = 0, + $672 = 0, + $673 = 0, + $674 = 0, + $675 = 0, + $676 = 0, + $677 = 0, + $678 = 0, + $679 = 0, + $68 = 0, + $680 = 0, + $681 = 0, + $682 = 0, + $683 = 0; + var $684 = 0, + $685 = 0, + $686 = 0, + $687 = 0, + $688 = 0, + $689 = 0, + $69 = 0, + $690 = 0, + $691 = 0, + $692 = 0, + $693 = 0, + $694 = 0, + $695 = 0, + $696 = 0, + $697 = 0, + $698 = 0, + $699 = 0, + $7 = 0, + $70 = 0, + $700 = 0; + var $701 = 0, + $702 = 0, + $703 = 0, + $704 = 0, + $705 = 0, + $706 = 0, + $707 = 0, + $708 = 0, + $709 = 0, + $71 = 0, + $710 = 0, + $711 = 0, + $712 = 0, + $713 = 0, + $714 = 0, + $715 = 0, + $716 = 0, + $717 = 0, + $718 = 0, + $719 = 0; + var $72 = 0, + $720 = 0, + $721 = 0, + $722 = 0, + $723 = 0, + $724 = 0, + $725 = 0, + $726 = 0, + $727 = 0, + $728 = 0, + $729 = 0, + $73 = 0, + $730 = 0, + $731 = 0, + $732 = 0, + $733 = 0, + $734 = 0, + $735 = 0, + $736 = 0, + $737 = 0; + var $738 = 0, + $739 = 0, + $74 = 0, + $740 = 0, + $741 = 0, + $742 = 0, + $743 = 0, + $744 = 0, + $745 = 0, + $746 = 0, + $747 = 0, + $748 = 0, + $749 = 0, + $75 = 0, + $750 = 0, + $751 = 0, + $752 = 0, + $753 = 0, + $754 = 0, + $755 = 0; + var $756 = 0, + $757 = 0, + $758 = 0, + $759 = 0, + $76 = 0, + $760 = 0, + $761 = 0, + $762 = 0, + $763 = 0, + $764 = 0, + $765 = 0, + $766 = 0, + $767 = 0, + $768 = 0, + $769 = 0, + $77 = 0, + $770 = 0, + $771 = 0, + $772 = 0, + $773 = 0; + var $774 = 0, + $775 = 0, + $776 = 0, + $777 = 0, + $778 = 0, + $779 = 0, + $78 = 0, + $780 = 0, + $781 = 0, + $782 = 0, + $783 = 0, + $784 = 0, + $785 = 0, + $786 = 0, + $787 = 0, + $788 = 0, + $789 = 0, + $79 = 0, + $790 = 0, + $791 = 0; + var $792 = 0, + $793 = 0, + $794 = 0, + $795 = 0, + $796 = 0, + $797 = 0, + $798 = 0, + $799 = 0, + $8 = 0, + $80 = 0, + $800 = 0, + $801 = 0, + $802 = 0, + $803 = 0, + $804 = 0, + $805 = 0, + $806 = 0, + $807 = 0, + $808 = 0, + $809 = 0; + var $81 = 0, + $810 = 0, + $811 = 0, + $812 = 0, + $813 = 0, + $814 = 0, + $815 = 0, + $816 = 0, + $817 = 0, + $818 = 0, + $819 = 0, + $82 = 0, + $820 = 0, + $821 = 0, + $822 = 0, + $823 = 0, + $824 = 0, + $825 = 0, + $826 = 0, + $827 = 0; + var $828 = 0, + $829 = 0, + $83 = 0, + $830 = 0, + $831 = 0, + $832 = 0, + $833 = 0, + $834 = 0, + $835 = 0, + $836 = 0, + $837 = 0, + $838 = 0, + $839 = 0, + $84 = 0, + $840 = 0, + $841 = 0, + $842 = 0, + $843 = 0, + $844 = 0, + $845 = 0; + var $846 = 0, + $847 = 0, + $848 = 0, + $849 = 0, + $85 = 0, + $850 = 0, + $851 = 0, + $852 = 0, + $853 = 0, + $854 = 0, + $855 = 0, + $856 = 0, + $857 = 0, + $858 = 0, + $859 = 0, + $86 = 0, + $860 = 0, + $861 = 0, + $862 = 0, + $863 = 0; + var $864 = 0, + $865 = 0, + $866 = 0, + $867 = 0, + $868 = 0, + $869 = 0, + $87 = 0, + $870 = 0, + $871 = 0, + $872 = 0, + $873 = 0, + $874 = 0, + $875 = 0, + $876 = 0, + $877 = 0, + $878 = 0, + $879 = 0, + $88 = 0, + $880 = 0, + $881 = 0; + var $882 = 0, + $883 = 0, + $884 = 0, + $885 = 0, + $886 = 0, + $887 = 0, + $888 = 0, + $889 = 0, + $89 = 0, + $890 = 0, + $891 = 0, + $892 = 0, + $893 = 0, + $894 = 0, + $895 = 0, + $896 = 0, + $897 = 0, + $898 = 0, + $899 = 0, + $9 = 0; + var $90 = 0, + $900 = 0, + $901 = 0, + $902 = 0, + $903 = 0, + $904 = 0, + $905 = 0, + $906 = 0, + $907 = 0, + $908 = 0, + $909 = 0, + $91 = 0, + $910 = 0, + $911 = 0, + $912 = 0, + $913 = 0, + $914 = 0, + $915 = 0, + $916 = 0, + $917 = 0; + var $918 = 0, + $919 = 0, + $92 = 0, + $920 = 0, + $921 = 0, + $922 = 0, + $923 = 0, + $924 = 0, + $925 = 0, + $926 = 0, + $927 = 0, + $928 = 0, + $929 = 0, + $93 = 0, + $930 = 0, + $931 = 0, + $932 = 0, + $933 = 0, + $934 = 0, + $935 = 0; + var $936 = 0, + $937 = 0, + $938 = 0, + $939 = 0, + $94 = 0, + $940 = 0, + $941 = 0, + $942 = 0, + $943 = 0, + $944 = 0, + $945 = 0, + $946 = 0, + $947 = 0, + $948 = 0, + $949 = 0, + $95 = 0, + $950 = 0, + $951 = 0, + $952 = 0, + $953 = 0; + var $954 = 0, + $955 = 0, + $956 = 0, + $957 = 0, + $958 = 0, + $959 = 0, + $96 = 0, + $960 = 0, + $961 = 0, + $962 = 0, + $963 = 0, + $964 = 0, + $965 = 0, + $966 = 0, + $967 = 0, + $968 = 0, + $969 = 0, + $97 = 0, + $970 = 0, + $971 = 0; + var $972 = 0, + $973 = 0, + $974 = 0, + $975 = 0, + $976 = 0, + $977 = 0, + $978 = 0, + $979 = 0, + $98 = 0, + $99 = 0, + $cond$i = 0, + $cond$i$i = 0, + $cond$i203 = 0, + $not$$i = 0, + $or$cond$i = 0, + $or$cond$i199 = 0, + $or$cond1$i = 0, + $or$cond1$i197 = 0, + $or$cond11$i = 0, + $or$cond2$i = 0; + var $or$cond5$i = 0, + $or$cond50$i = 0, + $or$cond51$i = 0, + $or$cond6$i = 0, + $or$cond7$i = 0, + $or$cond8$i = 0, + $or$cond8$not$i = 0, + $spec$select$i = 0, + $spec$select$i201 = 0, + $spec$select1$i = 0, + $spec$select2$i = 0, + $spec$select4$i = 0, + $spec$select49$i = 0, + $spec$select9$i = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 16) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(16 | 0); + $1 = sp; + $2 = $0 >>> 0 < 245; do { - if ($129) { - $134 = ((($7)) + 16|0); - $135 = ((($134)) + 4|0); - $136 = HEAP32[$135>>2]|0; - $137 = ($136|0)==(0|0); - if ($137) { - $138 = HEAP32[$134>>2]|0; - $139 = ($138|0)==(0|0); - if ($139) { - $$3363 = 0; - break; - } else { - $$1361$ph = $138;$$1365$ph = $134; - } - } else { - $$1361$ph = $136;$$1365$ph = $135; - } - $$1361 = $$1361$ph;$$1365 = $$1365$ph; - while(1) { - $140 = ((($$1361)) + 20|0); - $141 = HEAP32[$140>>2]|0; - $142 = ($141|0)==(0|0); - if ($142) { - $143 = ((($$1361)) + 16|0); - $144 = HEAP32[$143>>2]|0; - $145 = ($144|0)==(0|0); - if ($145) { - break; - } else { - $$1361$be = $144;$$1365$be = $143; + if ($2) { + $3 = $0 >>> 0 < 11; + $4 = ($0 + 11) | 0; + $5 = $4 & -8; + $6 = $3 ? 16 : $5; + $7 = $6 >>> 3; + $8 = HEAP32[296] | 0; + $9 = $8 >>> $7; + $10 = $9 & 3; + $11 = ($10 | 0) == 0; + if (!$11) { + $12 = $9 & 1; + $13 = $12 ^ 1; + $14 = ($13 + $7) | 0; + $15 = $14 << 1; + $16 = (1224 + ($15 << 2)) | 0; + $17 = ($16 + 8) | 0; + $18 = HEAP32[$17 >> 2] | 0; + $19 = ($18 + 8) | 0; + $20 = HEAP32[$19 >> 2] | 0; + $21 = ($20 | 0) == ($16 | 0); + if ($21) { + $22 = 1 << $14; + $23 = $22 ^ -1; + $24 = $8 & $23; + HEAP32[296] = $24; + } else { + $25 = ($20 + 12) | 0; + HEAP32[$25 >> 2] = $16; + HEAP32[$17 >> 2] = $20; + } + $26 = $14 << 3; + $27 = $26 | 3; + $28 = ($18 + 4) | 0; + HEAP32[$28 >> 2] = $27; + $29 = ($18 + $26) | 0; + $30 = ($29 + 4) | 0; + $31 = HEAP32[$30 >> 2] | 0; + $32 = $31 | 1; + HEAP32[$30 >> 2] = $32; + $$0 = $19; + STACKTOP = sp; + return $$0 | 0; + } + $33 = HEAP32[1192 >> 2] | 0; + $34 = $6 >>> 0 > $33 >>> 0; + if ($34) { + $35 = ($9 | 0) == 0; + if (!$35) { + $36 = $9 << $7; + $37 = 2 << $7; + $38 = (0 - $37) | 0; + $39 = $37 | $38; + $40 = $36 & $39; + $41 = (0 - $40) | 0; + $42 = $40 & $41; + $43 = ($42 + -1) | 0; + $44 = $43 >>> 12; + $45 = $44 & 16; + $46 = $43 >>> $45; + $47 = $46 >>> 5; + $48 = $47 & 8; + $49 = $48 | $45; + $50 = $46 >>> $48; + $51 = $50 >>> 2; + $52 = $51 & 4; + $53 = $49 | $52; + $54 = $50 >>> $52; + $55 = $54 >>> 1; + $56 = $55 & 2; + $57 = $53 | $56; + $58 = $54 >>> $56; + $59 = $58 >>> 1; + $60 = $59 & 1; + $61 = $57 | $60; + $62 = $58 >>> $60; + $63 = ($61 + $62) | 0; + $64 = $63 << 1; + $65 = (1224 + ($64 << 2)) | 0; + $66 = ($65 + 8) | 0; + $67 = HEAP32[$66 >> 2] | 0; + $68 = ($67 + 8) | 0; + $69 = HEAP32[$68 >> 2] | 0; + $70 = ($69 | 0) == ($65 | 0); + if ($70) { + $71 = 1 << $63; + $72 = $71 ^ -1; + $73 = $8 & $72; + HEAP32[296] = $73; + $90 = $73; + } else { + $74 = ($69 + 12) | 0; + HEAP32[$74 >> 2] = $65; + HEAP32[$66 >> 2] = $69; + $90 = $8; + } + $75 = $63 << 3; + $76 = ($75 - $6) | 0; + $77 = $6 | 3; + $78 = ($67 + 4) | 0; + HEAP32[$78 >> 2] = $77; + $79 = ($67 + $6) | 0; + $80 = $76 | 1; + $81 = ($79 + 4) | 0; + HEAP32[$81 >> 2] = $80; + $82 = ($67 + $75) | 0; + HEAP32[$82 >> 2] = $76; + $83 = ($33 | 0) == 0; + if (!$83) { + $84 = HEAP32[1204 >> 2] | 0; + $85 = $33 >>> 3; + $86 = $85 << 1; + $87 = (1224 + ($86 << 2)) | 0; + $88 = 1 << $85; + $89 = $90 & $88; + $91 = ($89 | 0) == 0; + if ($91) { + $92 = $90 | $88; + HEAP32[296] = $92; + $$pre = ($87 + 8) | 0; + $$0194 = $87; + $$pre$phiZ2D = $$pre; + } else { + $93 = ($87 + 8) | 0; + $94 = HEAP32[$93 >> 2] | 0; + $$0194 = $94; + $$pre$phiZ2D = $93; + } + HEAP32[$$pre$phiZ2D >> 2] = $84; + $95 = ($$0194 + 12) | 0; + HEAP32[$95 >> 2] = $84; + $96 = ($84 + 8) | 0; + HEAP32[$96 >> 2] = $$0194; + $97 = ($84 + 12) | 0; + HEAP32[$97 >> 2] = $87; + } + HEAP32[1192 >> 2] = $76; + HEAP32[1204 >> 2] = $79; + $$0 = $68; + STACKTOP = sp; + return $$0 | 0; + } + $98 = HEAP32[1188 >> 2] | 0; + $99 = ($98 | 0) == 0; + if ($99) { + $$0192 = $6; + } else { + $100 = (0 - $98) | 0; + $101 = $98 & $100; + $102 = ($101 + -1) | 0; + $103 = $102 >>> 12; + $104 = $103 & 16; + $105 = $102 >>> $104; + $106 = $105 >>> 5; + $107 = $106 & 8; + $108 = $107 | $104; + $109 = $105 >>> $107; + $110 = $109 >>> 2; + $111 = $110 & 4; + $112 = $108 | $111; + $113 = $109 >>> $111; + $114 = $113 >>> 1; + $115 = $114 & 2; + $116 = $112 | $115; + $117 = $113 >>> $115; + $118 = $117 >>> 1; + $119 = $118 & 1; + $120 = $116 | $119; + $121 = $117 >>> $119; + $122 = ($120 + $121) | 0; + $123 = (1488 + ($122 << 2)) | 0; + $124 = HEAP32[$123 >> 2] | 0; + $125 = ($124 + 4) | 0; + $126 = HEAP32[$125 >> 2] | 0; + $127 = $126 & -8; + $128 = ($127 - $6) | 0; + $$0169$i = $124; + $$0170$i = $124; + $$0171$i = $128; + while (1) { + $129 = ($$0169$i + 16) | 0; + $130 = HEAP32[$129 >> 2] | 0; + $131 = ($130 | 0) == (0 | 0); + if ($131) { + $132 = ($$0169$i + 20) | 0; + $133 = HEAP32[$132 >> 2] | 0; + $134 = ($133 | 0) == (0 | 0); + if ($134) { + break; + } else { + $136 = $133; + } + } else { + $136 = $130; + } + $135 = ($136 + 4) | 0; + $137 = HEAP32[$135 >> 2] | 0; + $138 = $137 & -8; + $139 = ($138 - $6) | 0; + $140 = $139 >>> 0 < $$0171$i >>> 0; + $spec$select$i = $140 ? $139 : $$0171$i; + $spec$select1$i = $140 ? $136 : $$0170$i; + $$0169$i = $136; + $$0170$i = $spec$select1$i; + $$0171$i = $spec$select$i; + } + $141 = ($$0170$i + $6) | 0; + $142 = $141 >>> 0 > $$0170$i >>> 0; + if ($142) { + $143 = ($$0170$i + 24) | 0; + $144 = HEAP32[$143 >> 2] | 0; + $145 = ($$0170$i + 12) | 0; + $146 = HEAP32[$145 >> 2] | 0; + $147 = ($146 | 0) == ($$0170$i | 0); + do { + if ($147) { + $152 = ($$0170$i + 20) | 0; + $153 = HEAP32[$152 >> 2] | 0; + $154 = ($153 | 0) == (0 | 0); + if ($154) { + $155 = ($$0170$i + 16) | 0; + $156 = HEAP32[$155 >> 2] | 0; + $157 = ($156 | 0) == (0 | 0); + if ($157) { + $$3$i = 0; + break; + } else { + $$1174$i$ph = $156; + $$1176$i$ph = $155; + } + } else { + $$1174$i$ph = $153; + $$1176$i$ph = $152; + } + $$1174$i = $$1174$i$ph; + $$1176$i = $$1176$i$ph; + while (1) { + $158 = ($$1174$i + 20) | 0; + $159 = HEAP32[$158 >> 2] | 0; + $160 = ($159 | 0) == (0 | 0); + if ($160) { + $161 = ($$1174$i + 16) | 0; + $162 = HEAP32[$161 >> 2] | 0; + $163 = ($162 | 0) == (0 | 0); + if ($163) { + break; + } else { + $$1174$i$be = $162; + $$1176$i$be = $161; + } + } else { + $$1174$i$be = $159; + $$1176$i$be = $158; + } + $$1174$i = $$1174$i$be; + $$1176$i = $$1176$i$be; + } + HEAP32[$$1176$i >> 2] = 0; + $$3$i = $$1174$i; + } else { + $148 = ($$0170$i + 8) | 0; + $149 = HEAP32[$148 >> 2] | 0; + $150 = ($149 + 12) | 0; + HEAP32[$150 >> 2] = $146; + $151 = ($146 + 8) | 0; + HEAP32[$151 >> 2] = $149; + $$3$i = $146; + } + } while (0); + $164 = ($144 | 0) == (0 | 0); + do { + if (!$164) { + $165 = ($$0170$i + 28) | 0; + $166 = HEAP32[$165 >> 2] | 0; + $167 = (1488 + ($166 << 2)) | 0; + $168 = HEAP32[$167 >> 2] | 0; + $169 = ($$0170$i | 0) == ($168 | 0); + if ($169) { + HEAP32[$167 >> 2] = $$3$i; + $cond$i = ($$3$i | 0) == (0 | 0); + if ($cond$i) { + $170 = 1 << $166; + $171 = $170 ^ -1; + $172 = $98 & $171; + HEAP32[1188 >> 2] = $172; + break; + } + } else { + $173 = ($144 + 16) | 0; + $174 = HEAP32[$173 >> 2] | 0; + $175 = ($174 | 0) == ($$0170$i | 0); + $176 = ($144 + 20) | 0; + $$sink = $175 ? $173 : $176; + HEAP32[$$sink >> 2] = $$3$i; + $177 = ($$3$i | 0) == (0 | 0); + if ($177) { + break; + } + } + $178 = ($$3$i + 24) | 0; + HEAP32[$178 >> 2] = $144; + $179 = ($$0170$i + 16) | 0; + $180 = HEAP32[$179 >> 2] | 0; + $181 = ($180 | 0) == (0 | 0); + if (!$181) { + $182 = ($$3$i + 16) | 0; + HEAP32[$182 >> 2] = $180; + $183 = ($180 + 24) | 0; + HEAP32[$183 >> 2] = $$3$i; + } + $184 = ($$0170$i + 20) | 0; + $185 = HEAP32[$184 >> 2] | 0; + $186 = ($185 | 0) == (0 | 0); + if (!$186) { + $187 = ($$3$i + 20) | 0; + HEAP32[$187 >> 2] = $185; + $188 = ($185 + 24) | 0; + HEAP32[$188 >> 2] = $$3$i; + } + } + } while (0); + $189 = $$0171$i >>> 0 < 16; + if ($189) { + $190 = ($$0171$i + $6) | 0; + $191 = $190 | 3; + $192 = ($$0170$i + 4) | 0; + HEAP32[$192 >> 2] = $191; + $193 = ($$0170$i + $190) | 0; + $194 = ($193 + 4) | 0; + $195 = HEAP32[$194 >> 2] | 0; + $196 = $195 | 1; + HEAP32[$194 >> 2] = $196; + } else { + $197 = $6 | 3; + $198 = ($$0170$i + 4) | 0; + HEAP32[$198 >> 2] = $197; + $199 = $$0171$i | 1; + $200 = ($141 + 4) | 0; + HEAP32[$200 >> 2] = $199; + $201 = ($141 + $$0171$i) | 0; + HEAP32[$201 >> 2] = $$0171$i; + $202 = ($33 | 0) == 0; + if (!$202) { + $203 = HEAP32[1204 >> 2] | 0; + $204 = $33 >>> 3; + $205 = $204 << 1; + $206 = (1224 + ($205 << 2)) | 0; + $207 = 1 << $204; + $208 = $207 & $8; + $209 = ($208 | 0) == 0; + if ($209) { + $210 = $207 | $8; + HEAP32[296] = $210; + $$pre$i = ($206 + 8) | 0; + $$0$i = $206; + $$pre$phi$iZ2D = $$pre$i; + } else { + $211 = ($206 + 8) | 0; + $212 = HEAP32[$211 >> 2] | 0; + $$0$i = $212; + $$pre$phi$iZ2D = $211; + } + HEAP32[$$pre$phi$iZ2D >> 2] = $203; + $213 = ($$0$i + 12) | 0; + HEAP32[$213 >> 2] = $203; + $214 = ($203 + 8) | 0; + HEAP32[$214 >> 2] = $$0$i; + $215 = ($203 + 12) | 0; + HEAP32[$215 >> 2] = $206; + } + HEAP32[1192 >> 2] = $$0171$i; + HEAP32[1204 >> 2] = $141; + } + $216 = ($$0170$i + 8) | 0; + $$0 = $216; + STACKTOP = sp; + return $$0 | 0; + } else { + $$0192 = $6; + } + } + } else { + $$0192 = $6; } - } else { - $$1361$be = $141;$$1365$be = $140; - } - $$1361 = $$1361$be;$$1365 = $$1365$be; - } - HEAP32[$$1365>>2] = 0; - $$3363 = $$1361; - } else { - $130 = ((($7)) + 8|0); - $131 = HEAP32[$130>>2]|0; - $132 = ((($131)) + 12|0); - HEAP32[$132>>2] = $128; - $133 = ((($128)) + 8|0); - HEAP32[$133>>2] = $131; - $$3363 = $128; - } - } while(0); - $146 = ($126|0)==(0|0); - if (!($146)) { - $147 = ((($7)) + 28|0); - $148 = HEAP32[$147>>2]|0; - $149 = (1488 + ($148<<2)|0); - $150 = HEAP32[$149>>2]|0; - $151 = ($150|0)==($7|0); - if ($151) { - HEAP32[$149>>2] = $$3363; - $cond372 = ($$3363|0)==(0|0); - if ($cond372) { - $152 = 1 << $148; - $153 = $152 ^ -1; - $154 = HEAP32[(1188)>>2]|0; - $155 = $154 & $153; - HEAP32[(1188)>>2] = $155; - break; - } - } else { - $156 = ((($126)) + 16|0); - $157 = HEAP32[$156>>2]|0; - $158 = ($157|0)==($7|0); - $159 = ((($126)) + 20|0); - $$sink395 = $158 ? $156 : $159; - HEAP32[$$sink395>>2] = $$3363; - $160 = ($$3363|0)==(0|0); - if ($160) { - break; - } - } - $161 = ((($$3363)) + 24|0); - HEAP32[$161>>2] = $126; - $162 = ((($7)) + 16|0); - $163 = HEAP32[$162>>2]|0; - $164 = ($163|0)==(0|0); - if (!($164)) { - $165 = ((($$3363)) + 16|0); - HEAP32[$165>>2] = $163; - $166 = ((($163)) + 24|0); - HEAP32[$166>>2] = $$3363; - } - $167 = ((($162)) + 4|0); - $168 = HEAP32[$167>>2]|0; - $169 = ($168|0)==(0|0); - if (!($169)) { - $170 = ((($$3363)) + 20|0); - HEAP32[$170>>2] = $168; - $171 = ((($168)) + 24|0); - HEAP32[$171>>2] = $$3363; - } - } - } - } while(0); - $172 = $111 | 1; - $173 = ((($$1)) + 4|0); - HEAP32[$173>>2] = $172; - $174 = (($88) + ($111)|0); - HEAP32[$174>>2] = $111; - $175 = HEAP32[(1204)>>2]|0; - $176 = ($$1|0)==($175|0); - if ($176) { - HEAP32[(1192)>>2] = $111; - return; - } else { - $$2 = $111; - } - } else { - $177 = $90 & -2; - HEAP32[$89>>2] = $177; - $178 = $$1345 | 1; - $179 = ((($$1)) + 4|0); - HEAP32[$179>>2] = $178; - $180 = (($88) + ($$1345)|0); - HEAP32[$180>>2] = $$1345; - $$2 = $$1345; - } - $181 = $$2 >>> 3; - $182 = ($$2>>>0)<(256); - if ($182) { - $183 = $181 << 1; - $184 = (1224 + ($183<<2)|0); - $185 = HEAP32[296]|0; - $186 = 1 << $181; - $187 = $185 & $186; - $188 = ($187|0)==(0); - if ($188) { - $189 = $185 | $186; - HEAP32[296] = $189; - $$pre = ((($184)) + 8|0); - $$0366 = $184;$$pre$phiZ2D = $$pre; - } else { - $190 = ((($184)) + 8|0); - $191 = HEAP32[$190>>2]|0; - $$0366 = $191;$$pre$phiZ2D = $190; - } - HEAP32[$$pre$phiZ2D>>2] = $$1; - $192 = ((($$0366)) + 12|0); - HEAP32[$192>>2] = $$1; - $193 = ((($$1)) + 8|0); - HEAP32[$193>>2] = $$0366; - $194 = ((($$1)) + 12|0); - HEAP32[$194>>2] = $184; - return; - } - $195 = $$2 >>> 8; - $196 = ($195|0)==(0); - if ($196) { - $$0359 = 0; - } else { - $197 = ($$2>>>0)>(16777215); - if ($197) { - $$0359 = 31; - } else { - $198 = (($195) + 1048320)|0; - $199 = $198 >>> 16; - $200 = $199 & 8; - $201 = $195 << $200; - $202 = (($201) + 520192)|0; - $203 = $202 >>> 16; - $204 = $203 & 4; - $205 = $204 | $200; - $206 = $201 << $204; - $207 = (($206) + 245760)|0; - $208 = $207 >>> 16; - $209 = $208 & 2; - $210 = $205 | $209; - $211 = (14 - ($210))|0; - $212 = $206 << $209; - $213 = $212 >>> 15; - $214 = (($211) + ($213))|0; - $215 = $214 << 1; - $216 = (($214) + 7)|0; - $217 = $$2 >>> $216; - $218 = $217 & 1; - $219 = $218 | $215; - $$0359 = $219; - } - } - $220 = (1488 + ($$0359<<2)|0); - $221 = ((($$1)) + 28|0); - HEAP32[$221>>2] = $$0359; - $222 = ((($$1)) + 16|0); - $223 = ((($$1)) + 20|0); - HEAP32[$223>>2] = 0; - HEAP32[$222>>2] = 0; - $224 = HEAP32[(1188)>>2]|0; - $225 = 1 << $$0359; - $226 = $224 & $225; - $227 = ($226|0)==(0); - L112: do { - if ($227) { - $228 = $224 | $225; - HEAP32[(1188)>>2] = $228; - HEAP32[$220>>2] = $$1; - $229 = ((($$1)) + 24|0); - HEAP32[$229>>2] = $220; - $230 = ((($$1)) + 12|0); - HEAP32[$230>>2] = $$1; - $231 = ((($$1)) + 8|0); - HEAP32[$231>>2] = $$1; - } else { - $232 = HEAP32[$220>>2]|0; - $233 = ((($232)) + 4|0); - $234 = HEAP32[$233>>2]|0; - $235 = $234 & -8; - $236 = ($235|0)==($$2|0); - L115: do { - if ($236) { - $$0347$lcssa = $232; - } else { - $237 = ($$0359|0)==(31); - $238 = $$0359 >>> 1; - $239 = (25 - ($238))|0; - $240 = $237 ? 0 : $239; - $241 = $$2 << $240; - $$0346381 = $241;$$0347380 = $232; - while(1) { - $248 = $$0346381 >>> 31; - $249 = (((($$0347380)) + 16|0) + ($248<<2)|0); - $244 = HEAP32[$249>>2]|0; - $250 = ($244|0)==(0|0); - if ($250) { - break; - } - $242 = $$0346381 << 1; - $243 = ((($244)) + 4|0); - $245 = HEAP32[$243>>2]|0; - $246 = $245 & -8; - $247 = ($246|0)==($$2|0); - if ($247) { - $$0347$lcssa = $244; - break L115; } else { - $$0346381 = $242;$$0347380 = $244; + $217 = $0 >>> 0 > 4294967231; + if ($217) { + $$0192 = -1; + } else { + $218 = ($0 + 11) | 0; + $219 = $218 & -8; + $220 = HEAP32[1188 >> 2] | 0; + $221 = ($220 | 0) == 0; + if ($221) { + $$0192 = $219; + } else { + $222 = (0 - $219) | 0; + $223 = $218 >>> 8; + $224 = ($223 | 0) == 0; + if ($224) { + $$0335$i = 0; + } else { + $225 = $219 >>> 0 > 16777215; + if ($225) { + $$0335$i = 31; + } else { + $226 = ($223 + 1048320) | 0; + $227 = $226 >>> 16; + $228 = $227 & 8; + $229 = $223 << $228; + $230 = ($229 + 520192) | 0; + $231 = $230 >>> 16; + $232 = $231 & 4; + $233 = $232 | $228; + $234 = $229 << $232; + $235 = ($234 + 245760) | 0; + $236 = $235 >>> 16; + $237 = $236 & 2; + $238 = $233 | $237; + $239 = (14 - $238) | 0; + $240 = $234 << $237; + $241 = $240 >>> 15; + $242 = ($239 + $241) | 0; + $243 = $242 << 1; + $244 = ($242 + 7) | 0; + $245 = $219 >>> $244; + $246 = $245 & 1; + $247 = $246 | $243; + $$0335$i = $247; + } + } + $248 = (1488 + ($$0335$i << 2)) | 0; + $249 = HEAP32[$248 >> 2] | 0; + $250 = ($249 | 0) == (0 | 0); + L79: do { + if ($250) { + $$2331$i = 0; + $$3$i198 = 0; + $$3326$i = $222; + label = 61; + } else { + $251 = ($$0335$i | 0) == 31; + $252 = $$0335$i >>> 1; + $253 = (25 - $252) | 0; + $254 = $251 ? 0 : $253; + $255 = $219 << $254; + $$0318$i = 0; + $$0323$i = $222; + $$0329$i = $249; + $$0336$i = $255; + $$0339$i = 0; + while (1) { + $256 = ($$0329$i + 4) | 0; + $257 = HEAP32[$256 >> 2] | 0; + $258 = $257 & -8; + $259 = ($258 - $219) | 0; + $260 = $259 >>> 0 < $$0323$i >>> 0; + if ($260) { + $261 = ($259 | 0) == 0; + if ($261) { + $$415$i$ph = $$0329$i; + $$432714$i$ph = 0; + $$533413$i$ph = $$0329$i; + label = 65; + break L79; + } else { + $$1319$i = $$0329$i; + $$1324$i = $259; + } + } else { + $$1319$i = $$0318$i; + $$1324$i = $$0323$i; + } + $262 = ($$0329$i + 20) | 0; + $263 = HEAP32[$262 >> 2] | 0; + $264 = $$0336$i >>> 31; + $265 = ((($$0329$i + 16) | 0) + ($264 << 2)) | 0; + $266 = HEAP32[$265 >> 2] | 0; + $267 = ($263 | 0) == (0 | 0); + $268 = ($263 | 0) == ($266 | 0); + $or$cond1$i197 = $267 | $268; + $$1340$i = $or$cond1$i197 ? $$0339$i : $263; + $269 = ($266 | 0) == (0 | 0); + $spec$select4$i = $$0336$i << 1; + if ($269) { + $$2331$i = $$1340$i; + $$3$i198 = $$1319$i; + $$3326$i = $$1324$i; + label = 61; + break; + } else { + $$0318$i = $$1319$i; + $$0323$i = $$1324$i; + $$0329$i = $266; + $$0336$i = $spec$select4$i; + $$0339$i = $$1340$i; + } + } + } + } while (0); + if ((label | 0) == 61) { + $270 = ($$2331$i | 0) == (0 | 0); + $271 = ($$3$i198 | 0) == (0 | 0); + $or$cond$i199 = $270 & $271; + if ($or$cond$i199) { + $272 = 2 << $$0335$i; + $273 = (0 - $272) | 0; + $274 = $272 | $273; + $275 = $274 & $220; + $276 = ($275 | 0) == 0; + if ($276) { + $$0192 = $219; + break; + } + $277 = (0 - $275) | 0; + $278 = $275 & $277; + $279 = ($278 + -1) | 0; + $280 = $279 >>> 12; + $281 = $280 & 16; + $282 = $279 >>> $281; + $283 = $282 >>> 5; + $284 = $283 & 8; + $285 = $284 | $281; + $286 = $282 >>> $284; + $287 = $286 >>> 2; + $288 = $287 & 4; + $289 = $285 | $288; + $290 = $286 >>> $288; + $291 = $290 >>> 1; + $292 = $291 & 2; + $293 = $289 | $292; + $294 = $290 >>> $292; + $295 = $294 >>> 1; + $296 = $295 & 1; + $297 = $293 | $296; + $298 = $294 >>> $296; + $299 = ($297 + $298) | 0; + $300 = (1488 + ($299 << 2)) | 0; + $301 = HEAP32[$300 >> 2] | 0; + $$3$i198211 = 0; + $$4333$i = $301; + } else { + $$3$i198211 = $$3$i198; + $$4333$i = $$2331$i; + } + $302 = ($$4333$i | 0) == (0 | 0); + if ($302) { + $$4$lcssa$i = $$3$i198211; + $$4327$lcssa$i = $$3326$i; + } else { + $$415$i$ph = $$3$i198211; + $$432714$i$ph = $$3326$i; + $$533413$i$ph = $$4333$i; + label = 65; + } + } + if ((label | 0) == 65) { + $$415$i = $$415$i$ph; + $$432714$i = $$432714$i$ph; + $$533413$i = $$533413$i$ph; + while (1) { + $303 = ($$533413$i + 4) | 0; + $304 = HEAP32[$303 >> 2] | 0; + $305 = $304 & -8; + $306 = ($305 - $219) | 0; + $307 = $306 >>> 0 < $$432714$i >>> 0; + $spec$select$i201 = $307 ? $306 : $$432714$i; + $spec$select2$i = $307 ? $$533413$i : $$415$i; + $308 = ($$533413$i + 16) | 0; + $309 = HEAP32[$308 >> 2] | 0; + $310 = ($309 | 0) == (0 | 0); + if ($310) { + $311 = ($$533413$i + 20) | 0; + $312 = HEAP32[$311 >> 2] | 0; + $314 = $312; + } else { + $314 = $309; + } + $313 = ($314 | 0) == (0 | 0); + if ($313) { + $$4$lcssa$i = $spec$select2$i; + $$4327$lcssa$i = $spec$select$i201; + break; + } else { + $$415$i = $spec$select2$i; + $$432714$i = $spec$select$i201; + $$533413$i = $314; + } + } + } + $315 = ($$4$lcssa$i | 0) == (0 | 0); + if ($315) { + $$0192 = $219; + } else { + $316 = HEAP32[1192 >> 2] | 0; + $317 = ($316 - $219) | 0; + $318 = $$4327$lcssa$i >>> 0 < $317 >>> 0; + if ($318) { + $319 = ($$4$lcssa$i + $219) | 0; + $320 = $319 >>> 0 > $$4$lcssa$i >>> 0; + if ($320) { + $321 = ($$4$lcssa$i + 24) | 0; + $322 = HEAP32[$321 >> 2] | 0; + $323 = ($$4$lcssa$i + 12) | 0; + $324 = HEAP32[$323 >> 2] | 0; + $325 = ($324 | 0) == ($$4$lcssa$i | 0); + do { + if ($325) { + $330 = ($$4$lcssa$i + 20) | 0; + $331 = HEAP32[$330 >> 2] | 0; + $332 = ($331 | 0) == (0 | 0); + if ($332) { + $333 = ($$4$lcssa$i + 16) | 0; + $334 = HEAP32[$333 >> 2] | 0; + $335 = ($334 | 0) == (0 | 0); + if ($335) { + $$3348$i = 0; + break; + } else { + $$1346$i$ph = $334; + $$1350$i$ph = $333; + } + } else { + $$1346$i$ph = $331; + $$1350$i$ph = $330; + } + $$1346$i = $$1346$i$ph; + $$1350$i = $$1350$i$ph; + while (1) { + $336 = ($$1346$i + 20) | 0; + $337 = HEAP32[$336 >> 2] | 0; + $338 = ($337 | 0) == (0 | 0); + if ($338) { + $339 = ($$1346$i + 16) | 0; + $340 = HEAP32[$339 >> 2] | 0; + $341 = ($340 | 0) == (0 | 0); + if ($341) { + break; + } else { + $$1346$i$be = $340; + $$1350$i$be = $339; + } + } else { + $$1346$i$be = $337; + $$1350$i$be = $336; + } + $$1346$i = $$1346$i$be; + $$1350$i = $$1350$i$be; + } + HEAP32[$$1350$i >> 2] = 0; + $$3348$i = $$1346$i; + } else { + $326 = ($$4$lcssa$i + 8) | 0; + $327 = HEAP32[$326 >> 2] | 0; + $328 = ($327 + 12) | 0; + HEAP32[$328 >> 2] = $324; + $329 = ($324 + 8) | 0; + HEAP32[$329 >> 2] = $327; + $$3348$i = $324; + } + } while (0); + $342 = ($322 | 0) == (0 | 0); + do { + if ($342) { + $425 = $220; + } else { + $343 = ($$4$lcssa$i + 28) | 0; + $344 = HEAP32[$343 >> 2] | 0; + $345 = (1488 + ($344 << 2)) | 0; + $346 = HEAP32[$345 >> 2] | 0; + $347 = ($$4$lcssa$i | 0) == ($346 | 0); + if ($347) { + HEAP32[$345 >> 2] = $$3348$i; + $cond$i203 = ($$3348$i | 0) == (0 | 0); + if ($cond$i203) { + $348 = 1 << $344; + $349 = $348 ^ -1; + $350 = $220 & $349; + HEAP32[1188 >> 2] = $350; + $425 = $350; + break; + } + } else { + $351 = ($322 + 16) | 0; + $352 = HEAP32[$351 >> 2] | 0; + $353 = ($352 | 0) == ($$4$lcssa$i | 0); + $354 = ($322 + 20) | 0; + $$sink320 = $353 ? $351 : $354; + HEAP32[$$sink320 >> 2] = $$3348$i; + $355 = ($$3348$i | 0) == (0 | 0); + if ($355) { + $425 = $220; + break; + } + } + $356 = ($$3348$i + 24) | 0; + HEAP32[$356 >> 2] = $322; + $357 = ($$4$lcssa$i + 16) | 0; + $358 = HEAP32[$357 >> 2] | 0; + $359 = ($358 | 0) == (0 | 0); + if (!$359) { + $360 = ($$3348$i + 16) | 0; + HEAP32[$360 >> 2] = $358; + $361 = ($358 + 24) | 0; + HEAP32[$361 >> 2] = $$3348$i; + } + $362 = ($$4$lcssa$i + 20) | 0; + $363 = HEAP32[$362 >> 2] | 0; + $364 = ($363 | 0) == (0 | 0); + if ($364) { + $425 = $220; + } else { + $365 = ($$3348$i + 20) | 0; + HEAP32[$365 >> 2] = $363; + $366 = ($363 + 24) | 0; + HEAP32[$366 >> 2] = $$3348$i; + $425 = $220; + } + } + } while (0); + $367 = $$4327$lcssa$i >>> 0 < 16; + L128: do { + if ($367) { + $368 = ($$4327$lcssa$i + $219) | 0; + $369 = $368 | 3; + $370 = ($$4$lcssa$i + 4) | 0; + HEAP32[$370 >> 2] = $369; + $371 = ($$4$lcssa$i + $368) | 0; + $372 = ($371 + 4) | 0; + $373 = HEAP32[$372 >> 2] | 0; + $374 = $373 | 1; + HEAP32[$372 >> 2] = $374; + } else { + $375 = $219 | 3; + $376 = ($$4$lcssa$i + 4) | 0; + HEAP32[$376 >> 2] = $375; + $377 = $$4327$lcssa$i | 1; + $378 = ($319 + 4) | 0; + HEAP32[$378 >> 2] = $377; + $379 = ($319 + $$4327$lcssa$i) | 0; + HEAP32[$379 >> 2] = $$4327$lcssa$i; + $380 = $$4327$lcssa$i >>> 3; + $381 = $$4327$lcssa$i >>> 0 < 256; + if ($381) { + $382 = $380 << 1; + $383 = (1224 + ($382 << 2)) | 0; + $384 = HEAP32[296] | 0; + $385 = 1 << $380; + $386 = $384 & $385; + $387 = ($386 | 0) == 0; + if ($387) { + $388 = $384 | $385; + HEAP32[296] = $388; + $$pre$i204 = ($383 + 8) | 0; + $$0344$i = $383; + $$pre$phi$i205Z2D = $$pre$i204; + } else { + $389 = ($383 + 8) | 0; + $390 = HEAP32[$389 >> 2] | 0; + $$0344$i = $390; + $$pre$phi$i205Z2D = $389; + } + HEAP32[$$pre$phi$i205Z2D >> 2] = $319; + $391 = ($$0344$i + 12) | 0; + HEAP32[$391 >> 2] = $319; + $392 = ($319 + 8) | 0; + HEAP32[$392 >> 2] = $$0344$i; + $393 = ($319 + 12) | 0; + HEAP32[$393 >> 2] = $383; + break; + } + $394 = $$4327$lcssa$i >>> 8; + $395 = ($394 | 0) == 0; + if ($395) { + $$0338$i = 0; + } else { + $396 = $$4327$lcssa$i >>> 0 > 16777215; + if ($396) { + $$0338$i = 31; + } else { + $397 = ($394 + 1048320) | 0; + $398 = $397 >>> 16; + $399 = $398 & 8; + $400 = $394 << $399; + $401 = ($400 + 520192) | 0; + $402 = $401 >>> 16; + $403 = $402 & 4; + $404 = $403 | $399; + $405 = $400 << $403; + $406 = ($405 + 245760) | 0; + $407 = $406 >>> 16; + $408 = $407 & 2; + $409 = $404 | $408; + $410 = (14 - $409) | 0; + $411 = $405 << $408; + $412 = $411 >>> 15; + $413 = ($410 + $412) | 0; + $414 = $413 << 1; + $415 = ($413 + 7) | 0; + $416 = $$4327$lcssa$i >>> $415; + $417 = $416 & 1; + $418 = $417 | $414; + $$0338$i = $418; + } + } + $419 = (1488 + ($$0338$i << 2)) | 0; + $420 = ($319 + 28) | 0; + HEAP32[$420 >> 2] = $$0338$i; + $421 = ($319 + 16) | 0; + $422 = ($421 + 4) | 0; + HEAP32[$422 >> 2] = 0; + HEAP32[$421 >> 2] = 0; + $423 = 1 << $$0338$i; + $424 = $425 & $423; + $426 = ($424 | 0) == 0; + if ($426) { + $427 = $425 | $423; + HEAP32[1188 >> 2] = $427; + HEAP32[$419 >> 2] = $319; + $428 = ($319 + 24) | 0; + HEAP32[$428 >> 2] = $419; + $429 = ($319 + 12) | 0; + HEAP32[$429 >> 2] = $319; + $430 = ($319 + 8) | 0; + HEAP32[$430 >> 2] = $319; + break; + } + $431 = HEAP32[$419 >> 2] | 0; + $432 = ($431 + 4) | 0; + $433 = HEAP32[$432 >> 2] | 0; + $434 = $433 & -8; + $435 = ($434 | 0) == ($$4327$lcssa$i | 0); + L145: do { + if ($435) { + $$0321$lcssa$i = $431; + } else { + $436 = ($$0338$i | 0) == 31; + $437 = $$0338$i >>> 1; + $438 = (25 - $437) | 0; + $439 = $436 ? 0 : $438; + $440 = $$4327$lcssa$i << $439; + $$032012$i = $440; + $$032111$i = $431; + while (1) { + $447 = $$032012$i >>> 31; + $448 = ((($$032111$i + 16) | 0) + ($447 << 2)) | 0; + $443 = HEAP32[$448 >> 2] | 0; + $449 = ($443 | 0) == (0 | 0); + if ($449) { + break; + } + $441 = $$032012$i << 1; + $442 = ($443 + 4) | 0; + $444 = HEAP32[$442 >> 2] | 0; + $445 = $444 & -8; + $446 = ($445 | 0) == ($$4327$lcssa$i | 0); + if ($446) { + $$0321$lcssa$i = $443; + break L145; + } else { + $$032012$i = $441; + $$032111$i = $443; + } + } + HEAP32[$448 >> 2] = $319; + $450 = ($319 + 24) | 0; + HEAP32[$450 >> 2] = $$032111$i; + $451 = ($319 + 12) | 0; + HEAP32[$451 >> 2] = $319; + $452 = ($319 + 8) | 0; + HEAP32[$452 >> 2] = $319; + break L128; + } + } while (0); + $453 = ($$0321$lcssa$i + 8) | 0; + $454 = HEAP32[$453 >> 2] | 0; + $455 = ($454 + 12) | 0; + HEAP32[$455 >> 2] = $319; + HEAP32[$453 >> 2] = $319; + $456 = ($319 + 8) | 0; + HEAP32[$456 >> 2] = $454; + $457 = ($319 + 12) | 0; + HEAP32[$457 >> 2] = $$0321$lcssa$i; + $458 = ($319 + 24) | 0; + HEAP32[$458 >> 2] = 0; + } + } while (0); + $459 = ($$4$lcssa$i + 8) | 0; + $$0 = $459; + STACKTOP = sp; + return $$0 | 0; + } else { + $$0192 = $219; + } + } else { + $$0192 = $219; + } + } + } + } } - } - HEAP32[$249>>2] = $$1; - $251 = ((($$1)) + 24|0); - HEAP32[$251>>2] = $$0347380; - $252 = ((($$1)) + 12|0); - HEAP32[$252>>2] = $$1; - $253 = ((($$1)) + 8|0); - HEAP32[$253>>2] = $$1; - break L112; + } while (0); + $460 = HEAP32[1192 >> 2] | 0; + $461 = $460 >>> 0 < $$0192 >>> 0; + if (!$461) { + $462 = ($460 - $$0192) | 0; + $463 = HEAP32[1204 >> 2] | 0; + $464 = $462 >>> 0 > 15; + if ($464) { + $465 = ($463 + $$0192) | 0; + HEAP32[1204 >> 2] = $465; + HEAP32[1192 >> 2] = $462; + $466 = $462 | 1; + $467 = ($465 + 4) | 0; + HEAP32[$467 >> 2] = $466; + $468 = ($463 + $460) | 0; + HEAP32[$468 >> 2] = $462; + $469 = $$0192 | 3; + $470 = ($463 + 4) | 0; + HEAP32[$470 >> 2] = $469; + } else { + HEAP32[1192 >> 2] = 0; + HEAP32[1204 >> 2] = 0; + $471 = $460 | 3; + $472 = ($463 + 4) | 0; + HEAP32[$472 >> 2] = $471; + $473 = ($463 + $460) | 0; + $474 = ($473 + 4) | 0; + $475 = HEAP32[$474 >> 2] | 0; + $476 = $475 | 1; + HEAP32[$474 >> 2] = $476; + } + $477 = ($463 + 8) | 0; + $$0 = $477; + STACKTOP = sp; + return $$0 | 0; } - } while(0); - $254 = ((($$0347$lcssa)) + 8|0); - $255 = HEAP32[$254>>2]|0; - $256 = ((($255)) + 12|0); - HEAP32[$256>>2] = $$1; - HEAP32[$254>>2] = $$1; - $257 = ((($$1)) + 8|0); - HEAP32[$257>>2] = $255; - $258 = ((($$1)) + 12|0); - HEAP32[$258>>2] = $$0347$lcssa; - $259 = ((($$1)) + 24|0); - HEAP32[$259>>2] = 0; - } - } while(0); - $260 = HEAP32[(1216)>>2]|0; - $261 = (($260) + -1)|0; - HEAP32[(1216)>>2] = $261; - $262 = ($261|0)==(0); - if (!($262)) { - return; - } - $$0194$in$i = (1640); - while(1) { - $$0194$i = HEAP32[$$0194$in$i>>2]|0; - $263 = ($$0194$i|0)==(0|0); - $264 = ((($$0194$i)) + 8|0); - if ($263) { - break; - } else { - $$0194$in$i = $264; - } - } - HEAP32[(1216)>>2] = -1; - return; -} -function ___stdio_close($0) { - $0 = $0|0; - var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $vararg_buffer = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0); - $vararg_buffer = sp; - $1 = ((($0)) + 60|0); - $2 = HEAP32[$1>>2]|0; - $3 = (_dummy($2)|0); - HEAP32[$vararg_buffer>>2] = $3; - $4 = (___syscall6(6,($vararg_buffer|0))|0); - $5 = (___syscall_ret($4)|0); - STACKTOP = sp;return ($5|0); -} -function ___stdio_write($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - var $$0 = 0, $$04756 = 0, $$04855 = 0, $$04954 = 0, $$051 = 0, $$1 = 0, $$150 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0; - var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; - var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0; - var $vararg_ptr6 = 0, $vararg_ptr7 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 48|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(48|0); - $vararg_buffer3 = sp + 32|0; - $vararg_buffer = sp + 16|0; - $3 = sp; - $4 = ((($0)) + 28|0); - $5 = HEAP32[$4>>2]|0; - HEAP32[$3>>2] = $5; - $6 = ((($3)) + 4|0); - $7 = ((($0)) + 20|0); - $8 = HEAP32[$7>>2]|0; - $9 = (($8) - ($5))|0; - HEAP32[$6>>2] = $9; - $10 = ((($3)) + 8|0); - HEAP32[$10>>2] = $1; - $11 = ((($3)) + 12|0); - HEAP32[$11>>2] = $2; - $12 = (($9) + ($2))|0; - $13 = ((($0)) + 60|0); - $14 = HEAP32[$13>>2]|0; - $15 = $3; - HEAP32[$vararg_buffer>>2] = $14; - $vararg_ptr1 = ((($vararg_buffer)) + 4|0); - HEAP32[$vararg_ptr1>>2] = $15; - $vararg_ptr2 = ((($vararg_buffer)) + 8|0); - HEAP32[$vararg_ptr2>>2] = 2; - $16 = (___syscall146(146,($vararg_buffer|0))|0); - $17 = (___syscall_ret($16)|0); - $18 = ($12|0)==($17|0); - L1: do { - if ($18) { - label = 3; - } else { - $$04756 = 2;$$04855 = $12;$$04954 = $3;$27 = $17; - while(1) { - $26 = ($27|0)<(0); - if ($26) { - break; + $478 = HEAP32[1196 >> 2] | 0; + $479 = $478 >>> 0 > $$0192 >>> 0; + if ($479) { + $480 = ($478 - $$0192) | 0; + HEAP32[1196 >> 2] = $480; + $481 = HEAP32[1208 >> 2] | 0; + $482 = ($481 + $$0192) | 0; + HEAP32[1208 >> 2] = $482; + $483 = $480 | 1; + $484 = ($482 + 4) | 0; + HEAP32[$484 >> 2] = $483; + $485 = $$0192 | 3; + $486 = ($481 + 4) | 0; + HEAP32[$486 >> 2] = $485; + $487 = ($481 + 8) | 0; + $$0 = $487; + STACKTOP = sp; + return $$0 | 0; } - $35 = (($$04855) - ($27))|0; - $36 = ((($$04954)) + 4|0); - $37 = HEAP32[$36>>2]|0; - $38 = ($27>>>0)>($37>>>0); - $39 = ((($$04954)) + 8|0); - $$150 = $38 ? $39 : $$04954; - $40 = $38 << 31 >> 31; - $$1 = (($$04756) + ($40))|0; - $41 = $38 ? $37 : 0; - $$0 = (($27) - ($41))|0; - $42 = HEAP32[$$150>>2]|0; - $43 = (($42) + ($$0)|0); - HEAP32[$$150>>2] = $43; - $44 = ((($$150)) + 4|0); - $45 = HEAP32[$44>>2]|0; - $46 = (($45) - ($$0))|0; - HEAP32[$44>>2] = $46; - $47 = HEAP32[$13>>2]|0; - $48 = $$150; - HEAP32[$vararg_buffer3>>2] = $47; - $vararg_ptr6 = ((($vararg_buffer3)) + 4|0); - HEAP32[$vararg_ptr6>>2] = $48; - $vararg_ptr7 = ((($vararg_buffer3)) + 8|0); - HEAP32[$vararg_ptr7>>2] = $$1; - $49 = (___syscall146(146,($vararg_buffer3|0))|0); - $50 = (___syscall_ret($49)|0); - $51 = ($35|0)==($50|0); - if ($51) { - label = 3; - break L1; + $488 = HEAP32[414] | 0; + $489 = ($488 | 0) == 0; + if ($489) { + HEAP32[1664 >> 2] = 4096; + HEAP32[1660 >> 2] = 4096; + HEAP32[1668 >> 2] = -1; + HEAP32[1672 >> 2] = -1; + HEAP32[1676 >> 2] = 0; + HEAP32[1628 >> 2] = 0; + $490 = $1; + $491 = $490 & -16; + $492 = $491 ^ 1431655768; + HEAP32[414] = $492; + $496 = 4096; } else { - $$04756 = $$1;$$04855 = $35;$$04954 = $$150;$27 = $50; + $$pre$i195 = HEAP32[1664 >> 2] | 0; + $496 = $$pre$i195; } - } - $28 = ((($0)) + 16|0); - HEAP32[$28>>2] = 0; - HEAP32[$4>>2] = 0; - HEAP32[$7>>2] = 0; - $29 = HEAP32[$0>>2]|0; - $30 = $29 | 32; - HEAP32[$0>>2] = $30; - $31 = ($$04756|0)==(2); - if ($31) { - $$051 = 0; - } else { - $32 = ((($$04954)) + 4|0); - $33 = HEAP32[$32>>2]|0; - $34 = (($2) - ($33))|0; - $$051 = $34; - } - } - } while(0); - if ((label|0) == 3) { - $19 = ((($0)) + 44|0); - $20 = HEAP32[$19>>2]|0; - $21 = ((($0)) + 48|0); - $22 = HEAP32[$21>>2]|0; - $23 = (($20) + ($22)|0); - $24 = ((($0)) + 16|0); - HEAP32[$24>>2] = $23; - $25 = $20; - HEAP32[$4>>2] = $25; - HEAP32[$7>>2] = $25; - $$051 = $2; - } - STACKTOP = sp;return ($$051|0); -} -function ___stdio_seek($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - var $$pre = 0, $10 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $vararg_ptr3 = 0, $vararg_ptr4 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0); - $vararg_buffer = sp; - $3 = sp + 20|0; - $4 = ((($0)) + 60|0); - $5 = HEAP32[$4>>2]|0; - $6 = $3; - HEAP32[$vararg_buffer>>2] = $5; - $vararg_ptr1 = ((($vararg_buffer)) + 4|0); - HEAP32[$vararg_ptr1>>2] = 0; - $vararg_ptr2 = ((($vararg_buffer)) + 8|0); - HEAP32[$vararg_ptr2>>2] = $1; - $vararg_ptr3 = ((($vararg_buffer)) + 12|0); - HEAP32[$vararg_ptr3>>2] = $6; - $vararg_ptr4 = ((($vararg_buffer)) + 16|0); - HEAP32[$vararg_ptr4>>2] = $2; - $7 = (___syscall140(140,($vararg_buffer|0))|0); - $8 = (___syscall_ret($7)|0); - $9 = ($8|0)<(0); - if ($9) { - HEAP32[$3>>2] = -1; - $10 = -1; - } else { - $$pre = HEAP32[$3>>2]|0; - $10 = $$pre; - } - STACKTOP = sp;return ($10|0); -} -function ___syscall_ret($0) { - $0 = $0|0; - var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0; - sp = STACKTOP; - $1 = ($0>>>0)>(4294963200); - if ($1) { - $2 = (0 - ($0))|0; - $3 = (___errno_location()|0); - HEAP32[$3>>2] = $2; - $$0 = -1; - } else { - $$0 = $0; - } - return ($$0|0); -} -function ___errno_location() { - var label = 0, sp = 0; - sp = STACKTOP; - return (1680|0); -} -function _dummy($0) { - $0 = $0|0; - var label = 0, sp = 0; - sp = STACKTOP; - return ($0|0); -} -function ___stdout_write($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0); - $vararg_buffer = sp; - $3 = sp + 16|0; - $4 = ((($0)) + 36|0); - HEAP32[$4>>2] = 4; - $5 = HEAP32[$0>>2]|0; - $6 = $5 & 64; - $7 = ($6|0)==(0); - if ($7) { - $8 = ((($0)) + 60|0); - $9 = HEAP32[$8>>2]|0; - $10 = $3; - HEAP32[$vararg_buffer>>2] = $9; - $vararg_ptr1 = ((($vararg_buffer)) + 4|0); - HEAP32[$vararg_ptr1>>2] = 21523; - $vararg_ptr2 = ((($vararg_buffer)) + 8|0); - HEAP32[$vararg_ptr2>>2] = $10; - $11 = (___syscall54(54,($vararg_buffer|0))|0); - $12 = ($11|0)==(0); - if (!($12)) { - $13 = ((($0)) + 75|0); - HEAP8[$13>>0] = -1; - } - } - $14 = (___stdio_write($0,$1,$2)|0); - STACKTOP = sp;return ($14|0); -} -function ___unlockfile($0) { - $0 = $0|0; - var label = 0, sp = 0; - sp = STACKTOP; - return; -} -function ___lockfile($0) { - $0 = $0|0; - var label = 0, sp = 0; - sp = STACKTOP; - return 0; -} -function ___ofl_lock() { - var label = 0, sp = 0; - sp = STACKTOP; - ___lock((1684|0)); - return (1692|0); -} -function ___ofl_unlock() { - var label = 0, sp = 0; - sp = STACKTOP; - ___unlock((1684|0)); - return; -} -function _fflush($0) { - $0 = $0|0; - var $$0 = 0, $$023 = 0, $$02325 = 0, $$02327 = 0, $$024$lcssa = 0, $$02426 = 0, $$1 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0; - var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $phitmp = 0, label = 0, sp = 0; - sp = STACKTOP; - $1 = ($0|0)==(0|0); - do { - if ($1) { - $8 = HEAP32[35]|0; - $9 = ($8|0)==(0|0); - if ($9) { - $29 = 0; - } else { - $10 = HEAP32[35]|0; - $11 = (_fflush($10)|0); - $29 = $11; - } - $12 = (___ofl_lock()|0); - $$02325 = HEAP32[$12>>2]|0; - $13 = ($$02325|0)==(0|0); - if ($13) { - $$024$lcssa = $29; - } else { - $$02327 = $$02325;$$02426 = $29; - while(1) { - $14 = ((($$02327)) + 76|0); - $15 = HEAP32[$14>>2]|0; - $16 = ($15|0)>(-1); - if ($16) { - $17 = (___lockfile($$02327)|0); - $26 = $17; - } else { - $26 = 0; - } - $18 = ((($$02327)) + 20|0); - $19 = HEAP32[$18>>2]|0; - $20 = ((($$02327)) + 28|0); - $21 = HEAP32[$20>>2]|0; - $22 = ($19>>>0)>($21>>>0); - if ($22) { - $23 = (___fflush_unlocked($$02327)|0); - $24 = $23 | $$02426; - $$1 = $24; - } else { - $$1 = $$02426; - } - $25 = ($26|0)==(0); - if (!($25)) { - ___unlockfile($$02327); - } - $27 = ((($$02327)) + 56|0); - $$023 = HEAP32[$27>>2]|0; - $28 = ($$023|0)==(0|0); - if ($28) { - $$024$lcssa = $$1; - break; - } else { - $$02327 = $$023;$$02426 = $$1; - } + $493 = ($$0192 + 48) | 0; + $494 = ($$0192 + 47) | 0; + $495 = ($496 + $494) | 0; + $497 = (0 - $496) | 0; + $498 = $495 & $497; + $499 = $498 >>> 0 > $$0192 >>> 0; + if (!$499) { + $$0 = 0; + STACKTOP = sp; + return $$0 | 0; } - } - ___ofl_unlock(); - $$0 = $$024$lcssa; - } else { - $2 = ((($0)) + 76|0); - $3 = HEAP32[$2>>2]|0; - $4 = ($3|0)>(-1); - if (!($4)) { - $5 = (___fflush_unlocked($0)|0); - $$0 = $5; - break; - } - $6 = (___lockfile($0)|0); - $phitmp = ($6|0)==(0); - $7 = (___fflush_unlocked($0)|0); - if ($phitmp) { - $$0 = $7; - } else { - ___unlockfile($0); - $$0 = $7; - } + $500 = HEAP32[1624 >> 2] | 0; + $501 = ($500 | 0) == 0; + if (!$501) { + $502 = HEAP32[1616 >> 2] | 0; + $503 = ($502 + $498) | 0; + $504 = $503 >>> 0 <= $502 >>> 0; + $505 = $503 >>> 0 > $500 >>> 0; + $or$cond1$i = $504 | $505; + if ($or$cond1$i) { + $$0 = 0; + STACKTOP = sp; + return $$0 | 0; + } + } + $506 = HEAP32[1628 >> 2] | 0; + $507 = $506 & 4; + $508 = ($507 | 0) == 0; + L178: do { + if ($508) { + $509 = HEAP32[1208 >> 2] | 0; + $510 = ($509 | 0) == (0 | 0); + L180: do { + if ($510) { + label = 128; + } else { + $$0$i20$i = 1632; + while (1) { + $511 = HEAP32[$$0$i20$i >> 2] | 0; + $512 = $511 >>> 0 > $509 >>> 0; + if (!$512) { + $513 = ($$0$i20$i + 4) | 0; + $514 = HEAP32[$513 >> 2] | 0; + $515 = ($511 + $514) | 0; + $516 = $515 >>> 0 > $509 >>> 0; + if ($516) { + break; + } + } + $517 = ($$0$i20$i + 8) | 0; + $518 = HEAP32[$517 >> 2] | 0; + $519 = ($518 | 0) == (0 | 0); + if ($519) { + label = 128; + break L180; + } else { + $$0$i20$i = $518; + } + } + $542 = ($495 - $478) | 0; + $543 = $542 & $497; + $544 = $543 >>> 0 < 2147483647; + if ($544) { + $545 = ($$0$i20$i + 4) | 0; + $546 = _sbrk($543 | 0) | 0; + $547 = HEAP32[$$0$i20$i >> 2] | 0; + $548 = HEAP32[$545 >> 2] | 0; + $549 = ($547 + $548) | 0; + $550 = ($546 | 0) == ($549 | 0); + if ($550) { + $551 = ($546 | 0) == (-1 | 0); + if ($551) { + $$2234243136$i = $543; + } else { + $$723947$i = $543; + $$748$i = $546; + label = 145; + break L178; + } + } else { + $$2247$ph$i = $546; + $$2253$ph$i = $543; + label = 136; + } + } else { + $$2234243136$i = 0; + } + } + } while (0); + do { + if ((label | 0) == 128) { + $520 = _sbrk(0) | 0; + $521 = ($520 | 0) == (-1 | 0); + if ($521) { + $$2234243136$i = 0; + } else { + $522 = $520; + $523 = HEAP32[1660 >> 2] | 0; + $524 = ($523 + -1) | 0; + $525 = $524 & $522; + $526 = ($525 | 0) == 0; + $527 = ($524 + $522) | 0; + $528 = (0 - $523) | 0; + $529 = $527 & $528; + $530 = ($529 - $522) | 0; + $531 = $526 ? 0 : $530; + $spec$select49$i = ($531 + $498) | 0; + $532 = HEAP32[1616 >> 2] | 0; + $533 = ($spec$select49$i + $532) | 0; + $534 = $spec$select49$i >>> 0 > $$0192 >>> 0; + $535 = $spec$select49$i >>> 0 < 2147483647; + $or$cond$i = $534 & $535; + if ($or$cond$i) { + $536 = HEAP32[1624 >> 2] | 0; + $537 = ($536 | 0) == 0; + if (!$537) { + $538 = $533 >>> 0 <= $532 >>> 0; + $539 = $533 >>> 0 > $536 >>> 0; + $or$cond2$i = $538 | $539; + if ($or$cond2$i) { + $$2234243136$i = 0; + break; + } + } + $540 = _sbrk($spec$select49$i | 0) | 0; + $541 = ($540 | 0) == ($520 | 0); + if ($541) { + $$723947$i = $spec$select49$i; + $$748$i = $520; + label = 145; + break L178; + } else { + $$2247$ph$i = $540; + $$2253$ph$i = $spec$select49$i; + label = 136; + } + } else { + $$2234243136$i = 0; + } + } + } + } while (0); + do { + if ((label | 0) == 136) { + $552 = (0 - $$2253$ph$i) | 0; + $553 = ($$2247$ph$i | 0) != (-1 | 0); + $554 = $$2253$ph$i >>> 0 < 2147483647; + $or$cond7$i = $554 & $553; + $555 = $493 >>> 0 > $$2253$ph$i >>> 0; + $or$cond6$i = $555 & $or$cond7$i; + if (!$or$cond6$i) { + $565 = ($$2247$ph$i | 0) == (-1 | 0); + if ($565) { + $$2234243136$i = 0; + break; + } else { + $$723947$i = $$2253$ph$i; + $$748$i = $$2247$ph$i; + label = 145; + break L178; + } + } + $556 = HEAP32[1664 >> 2] | 0; + $557 = ($494 - $$2253$ph$i) | 0; + $558 = ($557 + $556) | 0; + $559 = (0 - $556) | 0; + $560 = $558 & $559; + $561 = $560 >>> 0 < 2147483647; + if (!$561) { + $$723947$i = $$2253$ph$i; + $$748$i = $$2247$ph$i; + label = 145; + break L178; + } + $562 = _sbrk($560 | 0) | 0; + $563 = ($562 | 0) == (-1 | 0); + if ($563) { + _sbrk($552 | 0) | 0; + $$2234243136$i = 0; + break; + } else { + $564 = ($560 + $$2253$ph$i) | 0; + $$723947$i = $564; + $$748$i = $$2247$ph$i; + label = 145; + break L178; + } + } + } while (0); + $566 = HEAP32[1628 >> 2] | 0; + $567 = $566 | 4; + HEAP32[1628 >> 2] = $567; + $$4236$i = $$2234243136$i; + label = 143; + } else { + $$4236$i = 0; + label = 143; + } + } while (0); + if ((label | 0) == 143) { + $568 = $498 >>> 0 < 2147483647; + if ($568) { + $569 = _sbrk($498 | 0) | 0; + $570 = _sbrk(0) | 0; + $571 = ($569 | 0) != (-1 | 0); + $572 = ($570 | 0) != (-1 | 0); + $or$cond5$i = $571 & $572; + $573 = $569 >>> 0 < $570 >>> 0; + $or$cond8$i = $573 & $or$cond5$i; + $574 = $570; + $575 = $569; + $576 = ($574 - $575) | 0; + $577 = ($$0192 + 40) | 0; + $578 = $576 >>> 0 > $577 >>> 0; + $spec$select9$i = $578 ? $576 : $$4236$i; + $or$cond8$not$i = $or$cond8$i ^ 1; + $579 = ($569 | 0) == (-1 | 0); + $not$$i = $578 ^ 1; + $580 = $579 | $not$$i; + $or$cond50$i = $580 | $or$cond8$not$i; + if (!$or$cond50$i) { + $$723947$i = $spec$select9$i; + $$748$i = $569; + label = 145; + } + } + } + if ((label | 0) == 145) { + $581 = HEAP32[1616 >> 2] | 0; + $582 = ($581 + $$723947$i) | 0; + HEAP32[1616 >> 2] = $582; + $583 = HEAP32[1620 >> 2] | 0; + $584 = $582 >>> 0 > $583 >>> 0; + if ($584) { + HEAP32[1620 >> 2] = $582; + } + $585 = HEAP32[1208 >> 2] | 0; + $586 = ($585 | 0) == (0 | 0); + L215: do { + if ($586) { + $587 = HEAP32[1200 >> 2] | 0; + $588 = ($587 | 0) == (0 | 0); + $589 = $$748$i >>> 0 < $587 >>> 0; + $or$cond11$i = $588 | $589; + if ($or$cond11$i) { + HEAP32[1200 >> 2] = $$748$i; + } + HEAP32[1632 >> 2] = $$748$i; + HEAP32[1636 >> 2] = $$723947$i; + HEAP32[1644 >> 2] = 0; + $590 = HEAP32[414] | 0; + HEAP32[1220 >> 2] = $590; + HEAP32[1216 >> 2] = -1; + HEAP32[1236 >> 2] = 1224; + HEAP32[1232 >> 2] = 1224; + HEAP32[1244 >> 2] = 1232; + HEAP32[1240 >> 2] = 1232; + HEAP32[1252 >> 2] = 1240; + HEAP32[1248 >> 2] = 1240; + HEAP32[1260 >> 2] = 1248; + HEAP32[1256 >> 2] = 1248; + HEAP32[1268 >> 2] = 1256; + HEAP32[1264 >> 2] = 1256; + HEAP32[1276 >> 2] = 1264; + HEAP32[1272 >> 2] = 1264; + HEAP32[1284 >> 2] = 1272; + HEAP32[1280 >> 2] = 1272; + HEAP32[1292 >> 2] = 1280; + HEAP32[1288 >> 2] = 1280; + HEAP32[1300 >> 2] = 1288; + HEAP32[1296 >> 2] = 1288; + HEAP32[1308 >> 2] = 1296; + HEAP32[1304 >> 2] = 1296; + HEAP32[1316 >> 2] = 1304; + HEAP32[1312 >> 2] = 1304; + HEAP32[1324 >> 2] = 1312; + HEAP32[1320 >> 2] = 1312; + HEAP32[1332 >> 2] = 1320; + HEAP32[1328 >> 2] = 1320; + HEAP32[1340 >> 2] = 1328; + HEAP32[1336 >> 2] = 1328; + HEAP32[1348 >> 2] = 1336; + HEAP32[1344 >> 2] = 1336; + HEAP32[1356 >> 2] = 1344; + HEAP32[1352 >> 2] = 1344; + HEAP32[1364 >> 2] = 1352; + HEAP32[1360 >> 2] = 1352; + HEAP32[1372 >> 2] = 1360; + HEAP32[1368 >> 2] = 1360; + HEAP32[1380 >> 2] = 1368; + HEAP32[1376 >> 2] = 1368; + HEAP32[1388 >> 2] = 1376; + HEAP32[1384 >> 2] = 1376; + HEAP32[1396 >> 2] = 1384; + HEAP32[1392 >> 2] = 1384; + HEAP32[1404 >> 2] = 1392; + HEAP32[1400 >> 2] = 1392; + HEAP32[1412 >> 2] = 1400; + HEAP32[1408 >> 2] = 1400; + HEAP32[1420 >> 2] = 1408; + HEAP32[1416 >> 2] = 1408; + HEAP32[1428 >> 2] = 1416; + HEAP32[1424 >> 2] = 1416; + HEAP32[1436 >> 2] = 1424; + HEAP32[1432 >> 2] = 1424; + HEAP32[1444 >> 2] = 1432; + HEAP32[1440 >> 2] = 1432; + HEAP32[1452 >> 2] = 1440; + HEAP32[1448 >> 2] = 1440; + HEAP32[1460 >> 2] = 1448; + HEAP32[1456 >> 2] = 1448; + HEAP32[1468 >> 2] = 1456; + HEAP32[1464 >> 2] = 1456; + HEAP32[1476 >> 2] = 1464; + HEAP32[1472 >> 2] = 1464; + HEAP32[1484 >> 2] = 1472; + HEAP32[1480 >> 2] = 1472; + $591 = ($$723947$i + -40) | 0; + $592 = ($$748$i + 8) | 0; + $593 = $592; + $594 = $593 & 7; + $595 = ($594 | 0) == 0; + $596 = (0 - $593) | 0; + $597 = $596 & 7; + $598 = $595 ? 0 : $597; + $599 = ($$748$i + $598) | 0; + $600 = ($591 - $598) | 0; + HEAP32[1208 >> 2] = $599; + HEAP32[1196 >> 2] = $600; + $601 = $600 | 1; + $602 = ($599 + 4) | 0; + HEAP32[$602 >> 2] = $601; + $603 = ($$748$i + $591) | 0; + $604 = ($603 + 4) | 0; + HEAP32[$604 >> 2] = 40; + $605 = HEAP32[1672 >> 2] | 0; + HEAP32[1212 >> 2] = $605; + } else { + $$024372$i = 1632; + while (1) { + $606 = HEAP32[$$024372$i >> 2] | 0; + $607 = ($$024372$i + 4) | 0; + $608 = HEAP32[$607 >> 2] | 0; + $609 = ($606 + $608) | 0; + $610 = ($$748$i | 0) == ($609 | 0); + if ($610) { + label = 154; + break; + } + $611 = ($$024372$i + 8) | 0; + $612 = HEAP32[$611 >> 2] | 0; + $613 = ($612 | 0) == (0 | 0); + if ($613) { + break; + } else { + $$024372$i = $612; + } + } + if ((label | 0) == 154) { + $614 = ($$024372$i + 4) | 0; + $615 = ($$024372$i + 12) | 0; + $616 = HEAP32[$615 >> 2] | 0; + $617 = $616 & 8; + $618 = ($617 | 0) == 0; + if ($618) { + $619 = $606 >>> 0 <= $585 >>> 0; + $620 = $$748$i >>> 0 > $585 >>> 0; + $or$cond51$i = $620 & $619; + if ($or$cond51$i) { + $621 = ($608 + $$723947$i) | 0; + HEAP32[$614 >> 2] = $621; + $622 = HEAP32[1196 >> 2] | 0; + $623 = ($622 + $$723947$i) | 0; + $624 = ($585 + 8) | 0; + $625 = $624; + $626 = $625 & 7; + $627 = ($626 | 0) == 0; + $628 = (0 - $625) | 0; + $629 = $628 & 7; + $630 = $627 ? 0 : $629; + $631 = ($585 + $630) | 0; + $632 = ($623 - $630) | 0; + HEAP32[1208 >> 2] = $631; + HEAP32[1196 >> 2] = $632; + $633 = $632 | 1; + $634 = ($631 + 4) | 0; + HEAP32[$634 >> 2] = $633; + $635 = ($585 + $623) | 0; + $636 = ($635 + 4) | 0; + HEAP32[$636 >> 2] = 40; + $637 = HEAP32[1672 >> 2] | 0; + HEAP32[1212 >> 2] = $637; + break; + } + } + } + $638 = HEAP32[1200 >> 2] | 0; + $639 = $$748$i >>> 0 < $638 >>> 0; + if ($639) { + HEAP32[1200 >> 2] = $$748$i; + } + $640 = ($$748$i + $$723947$i) | 0; + $$124471$i = 1632; + while (1) { + $641 = HEAP32[$$124471$i >> 2] | 0; + $642 = ($641 | 0) == ($640 | 0); + if ($642) { + label = 162; + break; + } + $643 = ($$124471$i + 8) | 0; + $644 = HEAP32[$643 >> 2] | 0; + $645 = ($644 | 0) == (0 | 0); + if ($645) { + break; + } else { + $$124471$i = $644; + } + } + if ((label | 0) == 162) { + $646 = ($$124471$i + 12) | 0; + $647 = HEAP32[$646 >> 2] | 0; + $648 = $647 & 8; + $649 = ($648 | 0) == 0; + if ($649) { + HEAP32[$$124471$i >> 2] = $$748$i; + $650 = ($$124471$i + 4) | 0; + $651 = HEAP32[$650 >> 2] | 0; + $652 = ($651 + $$723947$i) | 0; + HEAP32[$650 >> 2] = $652; + $653 = ($$748$i + 8) | 0; + $654 = $653; + $655 = $654 & 7; + $656 = ($655 | 0) == 0; + $657 = (0 - $654) | 0; + $658 = $657 & 7; + $659 = $656 ? 0 : $658; + $660 = ($$748$i + $659) | 0; + $661 = ($640 + 8) | 0; + $662 = $661; + $663 = $662 & 7; + $664 = ($663 | 0) == 0; + $665 = (0 - $662) | 0; + $666 = $665 & 7; + $667 = $664 ? 0 : $666; + $668 = ($640 + $667) | 0; + $669 = $668; + $670 = $660; + $671 = ($669 - $670) | 0; + $672 = ($660 + $$0192) | 0; + $673 = ($671 - $$0192) | 0; + $674 = $$0192 | 3; + $675 = ($660 + 4) | 0; + HEAP32[$675 >> 2] = $674; + $676 = ($585 | 0) == ($668 | 0); + L238: do { + if ($676) { + $677 = HEAP32[1196 >> 2] | 0; + $678 = ($677 + $673) | 0; + HEAP32[1196 >> 2] = $678; + HEAP32[1208 >> 2] = $672; + $679 = $678 | 1; + $680 = ($672 + 4) | 0; + HEAP32[$680 >> 2] = $679; + } else { + $681 = HEAP32[1204 >> 2] | 0; + $682 = ($681 | 0) == ($668 | 0); + if ($682) { + $683 = HEAP32[1192 >> 2] | 0; + $684 = ($683 + $673) | 0; + HEAP32[1192 >> 2] = $684; + HEAP32[1204 >> 2] = $672; + $685 = $684 | 1; + $686 = ($672 + 4) | 0; + HEAP32[$686 >> 2] = $685; + $687 = ($672 + $684) | 0; + HEAP32[$687 >> 2] = $684; + break; + } + $688 = ($668 + 4) | 0; + $689 = HEAP32[$688 >> 2] | 0; + $690 = $689 & 3; + $691 = ($690 | 0) == 1; + if ($691) { + $692 = $689 & -8; + $693 = $689 >>> 3; + $694 = $689 >>> 0 < 256; + L246: do { + if ($694) { + $695 = ($668 + 8) | 0; + $696 = HEAP32[$695 >> 2] | 0; + $697 = ($668 + 12) | 0; + $698 = HEAP32[$697 >> 2] | 0; + $699 = ($698 | 0) == ($696 | 0); + if ($699) { + $700 = 1 << $693; + $701 = $700 ^ -1; + $702 = HEAP32[296] | 0; + $703 = $702 & $701; + HEAP32[296] = $703; + break; + } else { + $704 = ($696 + 12) | 0; + HEAP32[$704 >> 2] = $698; + $705 = ($698 + 8) | 0; + HEAP32[$705 >> 2] = $696; + break; + } + } else { + $706 = ($668 + 24) | 0; + $707 = HEAP32[$706 >> 2] | 0; + $708 = ($668 + 12) | 0; + $709 = HEAP32[$708 >> 2] | 0; + $710 = ($709 | 0) == ($668 | 0); + do { + if ($710) { + $715 = ($668 + 16) | 0; + $716 = ($715 + 4) | 0; + $717 = HEAP32[$716 >> 2] | 0; + $718 = ($717 | 0) == (0 | 0); + if ($718) { + $719 = HEAP32[$715 >> 2] | 0; + $720 = ($719 | 0) == (0 | 0); + if ($720) { + $$3$i$i = 0; + break; + } else { + $$1263$i$i$ph = $719; + $$1265$i$i$ph = $715; + } + } else { + $$1263$i$i$ph = $717; + $$1265$i$i$ph = $716; + } + $$1263$i$i = $$1263$i$i$ph; + $$1265$i$i = $$1265$i$i$ph; + while (1) { + $721 = ($$1263$i$i + 20) | 0; + $722 = HEAP32[$721 >> 2] | 0; + $723 = ($722 | 0) == (0 | 0); + if ($723) { + $724 = ($$1263$i$i + 16) | 0; + $725 = HEAP32[$724 >> 2] | 0; + $726 = ($725 | 0) == (0 | 0); + if ($726) { + break; + } else { + $$1263$i$i$be = $725; + $$1265$i$i$be = $724; + } + } else { + $$1263$i$i$be = $722; + $$1265$i$i$be = $721; + } + $$1263$i$i = $$1263$i$i$be; + $$1265$i$i = $$1265$i$i$be; + } + HEAP32[$$1265$i$i >> 2] = 0; + $$3$i$i = $$1263$i$i; + } else { + $711 = ($668 + 8) | 0; + $712 = HEAP32[$711 >> 2] | 0; + $713 = ($712 + 12) | 0; + HEAP32[$713 >> 2] = $709; + $714 = ($709 + 8) | 0; + HEAP32[$714 >> 2] = $712; + $$3$i$i = $709; + } + } while (0); + $727 = ($707 | 0) == (0 | 0); + if ($727) { + break; + } + $728 = ($668 + 28) | 0; + $729 = HEAP32[$728 >> 2] | 0; + $730 = (1488 + ($729 << 2)) | 0; + $731 = HEAP32[$730 >> 2] | 0; + $732 = ($731 | 0) == ($668 | 0); + do { + if ($732) { + HEAP32[$730 >> 2] = $$3$i$i; + $cond$i$i = ($$3$i$i | 0) == (0 | 0); + if (!$cond$i$i) { + break; + } + $733 = 1 << $729; + $734 = $733 ^ -1; + $735 = HEAP32[1188 >> 2] | 0; + $736 = $735 & $734; + HEAP32[1188 >> 2] = $736; + break L246; + } else { + $737 = ($707 + 16) | 0; + $738 = HEAP32[$737 >> 2] | 0; + $739 = ($738 | 0) == ($668 | 0); + $740 = ($707 + 20) | 0; + $$sink321 = $739 ? $737 : $740; + HEAP32[$$sink321 >> 2] = $$3$i$i; + $741 = ($$3$i$i | 0) == (0 | 0); + if ($741) { + break L246; + } + } + } while (0); + $742 = ($$3$i$i + 24) | 0; + HEAP32[$742 >> 2] = $707; + $743 = ($668 + 16) | 0; + $744 = HEAP32[$743 >> 2] | 0; + $745 = ($744 | 0) == (0 | 0); + if (!$745) { + $746 = ($$3$i$i + 16) | 0; + HEAP32[$746 >> 2] = $744; + $747 = ($744 + 24) | 0; + HEAP32[$747 >> 2] = $$3$i$i; + } + $748 = ($743 + 4) | 0; + $749 = HEAP32[$748 >> 2] | 0; + $750 = ($749 | 0) == (0 | 0); + if ($750) { + break; + } + $751 = ($$3$i$i + 20) | 0; + HEAP32[$751 >> 2] = $749; + $752 = ($749 + 24) | 0; + HEAP32[$752 >> 2] = $$3$i$i; + } + } while (0); + $753 = ($668 + $692) | 0; + $754 = ($692 + $673) | 0; + $$0$i$i = $753; + $$0259$i$i = $754; + } else { + $$0$i$i = $668; + $$0259$i$i = $673; + } + $755 = ($$0$i$i + 4) | 0; + $756 = HEAP32[$755 >> 2] | 0; + $757 = $756 & -2; + HEAP32[$755 >> 2] = $757; + $758 = $$0259$i$i | 1; + $759 = ($672 + 4) | 0; + HEAP32[$759 >> 2] = $758; + $760 = ($672 + $$0259$i$i) | 0; + HEAP32[$760 >> 2] = $$0259$i$i; + $761 = $$0259$i$i >>> 3; + $762 = $$0259$i$i >>> 0 < 256; + if ($762) { + $763 = $761 << 1; + $764 = (1224 + ($763 << 2)) | 0; + $765 = HEAP32[296] | 0; + $766 = 1 << $761; + $767 = $765 & $766; + $768 = ($767 | 0) == 0; + if ($768) { + $769 = $765 | $766; + HEAP32[296] = $769; + $$pre$i16$i = ($764 + 8) | 0; + $$0267$i$i = $764; + $$pre$phi$i17$iZ2D = $$pre$i16$i; + } else { + $770 = ($764 + 8) | 0; + $771 = HEAP32[$770 >> 2] | 0; + $$0267$i$i = $771; + $$pre$phi$i17$iZ2D = $770; + } + HEAP32[$$pre$phi$i17$iZ2D >> 2] = $672; + $772 = ($$0267$i$i + 12) | 0; + HEAP32[$772 >> 2] = $672; + $773 = ($672 + 8) | 0; + HEAP32[$773 >> 2] = $$0267$i$i; + $774 = ($672 + 12) | 0; + HEAP32[$774 >> 2] = $764; + break; + } + $775 = $$0259$i$i >>> 8; + $776 = ($775 | 0) == 0; + do { + if ($776) { + $$0268$i$i = 0; + } else { + $777 = $$0259$i$i >>> 0 > 16777215; + if ($777) { + $$0268$i$i = 31; + break; + } + $778 = ($775 + 1048320) | 0; + $779 = $778 >>> 16; + $780 = $779 & 8; + $781 = $775 << $780; + $782 = ($781 + 520192) | 0; + $783 = $782 >>> 16; + $784 = $783 & 4; + $785 = $784 | $780; + $786 = $781 << $784; + $787 = ($786 + 245760) | 0; + $788 = $787 >>> 16; + $789 = $788 & 2; + $790 = $785 | $789; + $791 = (14 - $790) | 0; + $792 = $786 << $789; + $793 = $792 >>> 15; + $794 = ($791 + $793) | 0; + $795 = $794 << 1; + $796 = ($794 + 7) | 0; + $797 = $$0259$i$i >>> $796; + $798 = $797 & 1; + $799 = $798 | $795; + $$0268$i$i = $799; + } + } while (0); + $800 = (1488 + ($$0268$i$i << 2)) | 0; + $801 = ($672 + 28) | 0; + HEAP32[$801 >> 2] = $$0268$i$i; + $802 = ($672 + 16) | 0; + $803 = ($802 + 4) | 0; + HEAP32[$803 >> 2] = 0; + HEAP32[$802 >> 2] = 0; + $804 = HEAP32[1188 >> 2] | 0; + $805 = 1 << $$0268$i$i; + $806 = $804 & $805; + $807 = ($806 | 0) == 0; + if ($807) { + $808 = $804 | $805; + HEAP32[1188 >> 2] = $808; + HEAP32[$800 >> 2] = $672; + $809 = ($672 + 24) | 0; + HEAP32[$809 >> 2] = $800; + $810 = ($672 + 12) | 0; + HEAP32[$810 >> 2] = $672; + $811 = ($672 + 8) | 0; + HEAP32[$811 >> 2] = $672; + break; + } + $812 = HEAP32[$800 >> 2] | 0; + $813 = ($812 + 4) | 0; + $814 = HEAP32[$813 >> 2] | 0; + $815 = $814 & -8; + $816 = ($815 | 0) == ($$0259$i$i | 0); + L291: do { + if ($816) { + $$0261$lcssa$i$i = $812; + } else { + $817 = ($$0268$i$i | 0) == 31; + $818 = $$0268$i$i >>> 1; + $819 = (25 - $818) | 0; + $820 = $817 ? 0 : $819; + $821 = $$0259$i$i << $820; + $$02604$i$i = $821; + $$02613$i$i = $812; + while (1) { + $828 = $$02604$i$i >>> 31; + $829 = ((($$02613$i$i + 16) | 0) + ($828 << 2)) | 0; + $824 = HEAP32[$829 >> 2] | 0; + $830 = ($824 | 0) == (0 | 0); + if ($830) { + break; + } + $822 = $$02604$i$i << 1; + $823 = ($824 + 4) | 0; + $825 = HEAP32[$823 >> 2] | 0; + $826 = $825 & -8; + $827 = ($826 | 0) == ($$0259$i$i | 0); + if ($827) { + $$0261$lcssa$i$i = $824; + break L291; + } else { + $$02604$i$i = $822; + $$02613$i$i = $824; + } + } + HEAP32[$829 >> 2] = $672; + $831 = ($672 + 24) | 0; + HEAP32[$831 >> 2] = $$02613$i$i; + $832 = ($672 + 12) | 0; + HEAP32[$832 >> 2] = $672; + $833 = ($672 + 8) | 0; + HEAP32[$833 >> 2] = $672; + break L238; + } + } while (0); + $834 = ($$0261$lcssa$i$i + 8) | 0; + $835 = HEAP32[$834 >> 2] | 0; + $836 = ($835 + 12) | 0; + HEAP32[$836 >> 2] = $672; + HEAP32[$834 >> 2] = $672; + $837 = ($672 + 8) | 0; + HEAP32[$837 >> 2] = $835; + $838 = ($672 + 12) | 0; + HEAP32[$838 >> 2] = $$0261$lcssa$i$i; + $839 = ($672 + 24) | 0; + HEAP32[$839 >> 2] = 0; + } + } while (0); + $968 = ($660 + 8) | 0; + $$0 = $968; + STACKTOP = sp; + return $$0 | 0; + } + } + $$0$i$i$i = 1632; + while (1) { + $840 = HEAP32[$$0$i$i$i >> 2] | 0; + $841 = $840 >>> 0 > $585 >>> 0; + if (!$841) { + $842 = ($$0$i$i$i + 4) | 0; + $843 = HEAP32[$842 >> 2] | 0; + $844 = ($840 + $843) | 0; + $845 = $844 >>> 0 > $585 >>> 0; + if ($845) { + break; + } + } + $846 = ($$0$i$i$i + 8) | 0; + $847 = HEAP32[$846 >> 2] | 0; + $$0$i$i$i = $847; + } + $848 = ($844 + -47) | 0; + $849 = ($848 + 8) | 0; + $850 = $849; + $851 = $850 & 7; + $852 = ($851 | 0) == 0; + $853 = (0 - $850) | 0; + $854 = $853 & 7; + $855 = $852 ? 0 : $854; + $856 = ($848 + $855) | 0; + $857 = ($585 + 16) | 0; + $858 = $856 >>> 0 < $857 >>> 0; + $859 = $858 ? $585 : $856; + $860 = ($859 + 8) | 0; + $861 = ($859 + 24) | 0; + $862 = ($$723947$i + -40) | 0; + $863 = ($$748$i + 8) | 0; + $864 = $863; + $865 = $864 & 7; + $866 = ($865 | 0) == 0; + $867 = (0 - $864) | 0; + $868 = $867 & 7; + $869 = $866 ? 0 : $868; + $870 = ($$748$i + $869) | 0; + $871 = ($862 - $869) | 0; + HEAP32[1208 >> 2] = $870; + HEAP32[1196 >> 2] = $871; + $872 = $871 | 1; + $873 = ($870 + 4) | 0; + HEAP32[$873 >> 2] = $872; + $874 = ($$748$i + $862) | 0; + $875 = ($874 + 4) | 0; + HEAP32[$875 >> 2] = 40; + $876 = HEAP32[1672 >> 2] | 0; + HEAP32[1212 >> 2] = $876; + $877 = ($859 + 4) | 0; + HEAP32[$877 >> 2] = 27; + HEAP32[$860 >> 2] = HEAP32[1632 >> 2] | 0; + HEAP32[($860 + 4) >> 2] = HEAP32[(1632 + 4) >> 2] | 0; + HEAP32[($860 + 8) >> 2] = HEAP32[(1632 + 8) >> 2] | 0; + HEAP32[($860 + 12) >> 2] = HEAP32[(1632 + 12) >> 2] | 0; + HEAP32[1632 >> 2] = $$748$i; + HEAP32[1636 >> 2] = $$723947$i; + HEAP32[1644 >> 2] = 0; + HEAP32[1640 >> 2] = $860; + $879 = $861; + while (1) { + $878 = ($879 + 4) | 0; + HEAP32[$878 >> 2] = 7; + $880 = ($879 + 8) | 0; + $881 = $880 >>> 0 < $844 >>> 0; + if ($881) { + $879 = $878; + } else { + break; + } + } + $882 = ($859 | 0) == ($585 | 0); + if (!$882) { + $883 = $859; + $884 = $585; + $885 = ($883 - $884) | 0; + $886 = HEAP32[$877 >> 2] | 0; + $887 = $886 & -2; + HEAP32[$877 >> 2] = $887; + $888 = $885 | 1; + $889 = ($585 + 4) | 0; + HEAP32[$889 >> 2] = $888; + HEAP32[$859 >> 2] = $885; + $890 = $885 >>> 3; + $891 = $885 >>> 0 < 256; + if ($891) { + $892 = $890 << 1; + $893 = (1224 + ($892 << 2)) | 0; + $894 = HEAP32[296] | 0; + $895 = 1 << $890; + $896 = $894 & $895; + $897 = ($896 | 0) == 0; + if ($897) { + $898 = $894 | $895; + HEAP32[296] = $898; + $$pre$i$i = ($893 + 8) | 0; + $$0206$i$i = $893; + $$pre$phi$i$iZ2D = $$pre$i$i; + } else { + $899 = ($893 + 8) | 0; + $900 = HEAP32[$899 >> 2] | 0; + $$0206$i$i = $900; + $$pre$phi$i$iZ2D = $899; + } + HEAP32[$$pre$phi$i$iZ2D >> 2] = $585; + $901 = ($$0206$i$i + 12) | 0; + HEAP32[$901 >> 2] = $585; + $902 = ($585 + 8) | 0; + HEAP32[$902 >> 2] = $$0206$i$i; + $903 = ($585 + 12) | 0; + HEAP32[$903 >> 2] = $893; + break; + } + $904 = $885 >>> 8; + $905 = ($904 | 0) == 0; + if ($905) { + $$0207$i$i = 0; + } else { + $906 = $885 >>> 0 > 16777215; + if ($906) { + $$0207$i$i = 31; + } else { + $907 = ($904 + 1048320) | 0; + $908 = $907 >>> 16; + $909 = $908 & 8; + $910 = $904 << $909; + $911 = ($910 + 520192) | 0; + $912 = $911 >>> 16; + $913 = $912 & 4; + $914 = $913 | $909; + $915 = $910 << $913; + $916 = ($915 + 245760) | 0; + $917 = $916 >>> 16; + $918 = $917 & 2; + $919 = $914 | $918; + $920 = (14 - $919) | 0; + $921 = $915 << $918; + $922 = $921 >>> 15; + $923 = ($920 + $922) | 0; + $924 = $923 << 1; + $925 = ($923 + 7) | 0; + $926 = $885 >>> $925; + $927 = $926 & 1; + $928 = $927 | $924; + $$0207$i$i = $928; + } + } + $929 = (1488 + ($$0207$i$i << 2)) | 0; + $930 = ($585 + 28) | 0; + HEAP32[$930 >> 2] = $$0207$i$i; + $931 = ($585 + 20) | 0; + HEAP32[$931 >> 2] = 0; + HEAP32[$857 >> 2] = 0; + $932 = HEAP32[1188 >> 2] | 0; + $933 = 1 << $$0207$i$i; + $934 = $932 & $933; + $935 = ($934 | 0) == 0; + if ($935) { + $936 = $932 | $933; + HEAP32[1188 >> 2] = $936; + HEAP32[$929 >> 2] = $585; + $937 = ($585 + 24) | 0; + HEAP32[$937 >> 2] = $929; + $938 = ($585 + 12) | 0; + HEAP32[$938 >> 2] = $585; + $939 = ($585 + 8) | 0; + HEAP32[$939 >> 2] = $585; + break; + } + $940 = HEAP32[$929 >> 2] | 0; + $941 = ($940 + 4) | 0; + $942 = HEAP32[$941 >> 2] | 0; + $943 = $942 & -8; + $944 = ($943 | 0) == ($885 | 0); + L325: do { + if ($944) { + $$0202$lcssa$i$i = $940; + } else { + $945 = ($$0207$i$i | 0) == 31; + $946 = $$0207$i$i >>> 1; + $947 = (25 - $946) | 0; + $948 = $945 ? 0 : $947; + $949 = $885 << $948; + $$02014$i$i = $949; + $$02023$i$i = $940; + while (1) { + $956 = $$02014$i$i >>> 31; + $957 = ((($$02023$i$i + 16) | 0) + ($956 << 2)) | 0; + $952 = HEAP32[$957 >> 2] | 0; + $958 = ($952 | 0) == (0 | 0); + if ($958) { + break; + } + $950 = $$02014$i$i << 1; + $951 = ($952 + 4) | 0; + $953 = HEAP32[$951 >> 2] | 0; + $954 = $953 & -8; + $955 = ($954 | 0) == ($885 | 0); + if ($955) { + $$0202$lcssa$i$i = $952; + break L325; + } else { + $$02014$i$i = $950; + $$02023$i$i = $952; + } + } + HEAP32[$957 >> 2] = $585; + $959 = ($585 + 24) | 0; + HEAP32[$959 >> 2] = $$02023$i$i; + $960 = ($585 + 12) | 0; + HEAP32[$960 >> 2] = $585; + $961 = ($585 + 8) | 0; + HEAP32[$961 >> 2] = $585; + break L215; + } + } while (0); + $962 = ($$0202$lcssa$i$i + 8) | 0; + $963 = HEAP32[$962 >> 2] | 0; + $964 = ($963 + 12) | 0; + HEAP32[$964 >> 2] = $585; + HEAP32[$962 >> 2] = $585; + $965 = ($585 + 8) | 0; + HEAP32[$965 >> 2] = $963; + $966 = ($585 + 12) | 0; + HEAP32[$966 >> 2] = $$0202$lcssa$i$i; + $967 = ($585 + 24) | 0; + HEAP32[$967 >> 2] = 0; + } + } + } while (0); + $969 = HEAP32[1196 >> 2] | 0; + $970 = $969 >>> 0 > $$0192 >>> 0; + if ($970) { + $971 = ($969 - $$0192) | 0; + HEAP32[1196 >> 2] = $971; + $972 = HEAP32[1208 >> 2] | 0; + $973 = ($972 + $$0192) | 0; + HEAP32[1208 >> 2] = $973; + $974 = $971 | 1; + $975 = ($973 + 4) | 0; + HEAP32[$975 >> 2] = $974; + $976 = $$0192 | 3; + $977 = ($972 + 4) | 0; + HEAP32[$977 >> 2] = $976; + $978 = ($972 + 8) | 0; + $$0 = $978; + STACKTOP = sp; + return $$0 | 0; + } + } + $979 = ___errno_location() | 0; + HEAP32[$979 >> 2] = 12; + $$0 = 0; + STACKTOP = sp; + return $$0 | 0; } - } while(0); - return ($$0|0); -} -function ___fflush_unlocked($0) { - $0 = $0|0; - var $$0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0; - var $9 = 0, label = 0, sp = 0; - sp = STACKTOP; - $1 = ((($0)) + 20|0); - $2 = HEAP32[$1>>2]|0; - $3 = ((($0)) + 28|0); - $4 = HEAP32[$3>>2]|0; - $5 = ($2>>>0)>($4>>>0); - if ($5) { - $6 = ((($0)) + 36|0); - $7 = HEAP32[$6>>2]|0; - (FUNCTION_TABLE_iiii[$7 & 7]($0,0,0)|0); - $8 = HEAP32[$1>>2]|0; - $9 = ($8|0)==(0|0); - if ($9) { - $$0 = -1; - } else { - label = 3; + function _free($0) { + $0 = $0 | 0; + var $$0194$i = 0, + $$0194$in$i = 0, + $$0346381 = 0, + $$0347$lcssa = 0, + $$0347380 = 0, + $$0359 = 0, + $$0366 = 0, + $$1 = 0, + $$1345 = 0, + $$1350 = 0, + $$1350$be = 0, + $$1350$ph = 0, + $$1353 = 0, + $$1353$be = 0, + $$1353$ph = 0, + $$1361 = 0, + $$1361$be = 0, + $$1361$ph = 0, + $$1365 = 0, + $$1365$be = 0; + var $$1365$ph = 0, + $$2 = 0, + $$3 = 0, + $$3363 = 0, + $$pre = 0, + $$pre$phiZ2D = 0, + $$sink = 0, + $$sink395 = 0, + $1 = 0, + $10 = 0, + $100 = 0, + $101 = 0, + $102 = 0, + $103 = 0, + $104 = 0, + $105 = 0, + $106 = 0, + $107 = 0, + $108 = 0, + $109 = 0; + var $11 = 0, + $110 = 0, + $111 = 0, + $112 = 0, + $113 = 0, + $114 = 0, + $115 = 0, + $116 = 0, + $117 = 0, + $118 = 0, + $119 = 0, + $12 = 0, + $120 = 0, + $121 = 0, + $122 = 0, + $123 = 0, + $124 = 0, + $125 = 0, + $126 = 0, + $127 = 0; + var $128 = 0, + $129 = 0, + $13 = 0, + $130 = 0, + $131 = 0, + $132 = 0, + $133 = 0, + $134 = 0, + $135 = 0, + $136 = 0, + $137 = 0, + $138 = 0, + $139 = 0, + $14 = 0, + $140 = 0, + $141 = 0, + $142 = 0, + $143 = 0, + $144 = 0, + $145 = 0; + var $146 = 0, + $147 = 0, + $148 = 0, + $149 = 0, + $15 = 0, + $150 = 0, + $151 = 0, + $152 = 0, + $153 = 0, + $154 = 0, + $155 = 0, + $156 = 0, + $157 = 0, + $158 = 0, + $159 = 0, + $16 = 0, + $160 = 0, + $161 = 0, + $162 = 0, + $163 = 0; + var $164 = 0, + $165 = 0, + $166 = 0, + $167 = 0, + $168 = 0, + $169 = 0, + $17 = 0, + $170 = 0, + $171 = 0, + $172 = 0, + $173 = 0, + $174 = 0, + $175 = 0, + $176 = 0, + $177 = 0, + $178 = 0, + $179 = 0, + $18 = 0, + $180 = 0, + $181 = 0; + var $182 = 0, + $183 = 0, + $184 = 0, + $185 = 0, + $186 = 0, + $187 = 0, + $188 = 0, + $189 = 0, + $19 = 0, + $190 = 0, + $191 = 0, + $192 = 0, + $193 = 0, + $194 = 0, + $195 = 0, + $196 = 0, + $197 = 0, + $198 = 0, + $199 = 0, + $2 = 0; + var $20 = 0, + $200 = 0, + $201 = 0, + $202 = 0, + $203 = 0, + $204 = 0, + $205 = 0, + $206 = 0, + $207 = 0, + $208 = 0, + $209 = 0, + $21 = 0, + $210 = 0, + $211 = 0, + $212 = 0, + $213 = 0, + $214 = 0, + $215 = 0, + $216 = 0, + $217 = 0; + var $218 = 0, + $219 = 0, + $22 = 0, + $220 = 0, + $221 = 0, + $222 = 0, + $223 = 0, + $224 = 0, + $225 = 0, + $226 = 0, + $227 = 0, + $228 = 0, + $229 = 0, + $23 = 0, + $230 = 0, + $231 = 0, + $232 = 0, + $233 = 0, + $234 = 0, + $235 = 0; + var $236 = 0, + $237 = 0, + $238 = 0, + $239 = 0, + $24 = 0, + $240 = 0, + $241 = 0, + $242 = 0, + $243 = 0, + $244 = 0, + $245 = 0, + $246 = 0, + $247 = 0, + $248 = 0, + $249 = 0, + $25 = 0, + $250 = 0, + $251 = 0, + $252 = 0, + $253 = 0; + var $254 = 0, + $255 = 0, + $256 = 0, + $257 = 0, + $258 = 0, + $259 = 0, + $26 = 0, + $260 = 0, + $261 = 0, + $262 = 0, + $263 = 0, + $264 = 0, + $27 = 0, + $28 = 0, + $29 = 0, + $3 = 0, + $30 = 0, + $31 = 0, + $32 = 0, + $33 = 0; + var $34 = 0, + $35 = 0, + $36 = 0, + $37 = 0, + $38 = 0, + $39 = 0, + $4 = 0, + $40 = 0, + $41 = 0, + $42 = 0, + $43 = 0, + $44 = 0, + $45 = 0, + $46 = 0, + $47 = 0, + $48 = 0, + $49 = 0, + $5 = 0, + $50 = 0, + $51 = 0; + var $52 = 0, + $53 = 0, + $54 = 0, + $55 = 0, + $56 = 0, + $57 = 0, + $58 = 0, + $59 = 0, + $6 = 0, + $60 = 0, + $61 = 0, + $62 = 0, + $63 = 0, + $64 = 0, + $65 = 0, + $66 = 0, + $67 = 0, + $68 = 0, + $69 = 0, + $7 = 0; + var $70 = 0, + $71 = 0, + $72 = 0, + $73 = 0, + $74 = 0, + $75 = 0, + $76 = 0, + $77 = 0, + $78 = 0, + $79 = 0, + $8 = 0, + $80 = 0, + $81 = 0, + $82 = 0, + $83 = 0, + $84 = 0, + $85 = 0, + $86 = 0, + $87 = 0, + $88 = 0; + var $89 = 0, + $9 = 0, + $90 = 0, + $91 = 0, + $92 = 0, + $93 = 0, + $94 = 0, + $95 = 0, + $96 = 0, + $97 = 0, + $98 = 0, + $99 = 0, + $cond371 = 0, + $cond372 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + $1 = ($0 | 0) == (0 | 0); + if ($1) { + return; + } + $2 = ($0 + -8) | 0; + $3 = HEAP32[1200 >> 2] | 0; + $4 = ($0 + -4) | 0; + $5 = HEAP32[$4 >> 2] | 0; + $6 = $5 & -8; + $7 = ($2 + $6) | 0; + $8 = $5 & 1; + $9 = ($8 | 0) == 0; + do { + if ($9) { + $10 = HEAP32[$2 >> 2] | 0; + $11 = $5 & 3; + $12 = ($11 | 0) == 0; + if ($12) { + return; + } + $13 = (0 - $10) | 0; + $14 = ($2 + $13) | 0; + $15 = ($10 + $6) | 0; + $16 = $14 >>> 0 < $3 >>> 0; + if ($16) { + return; + } + $17 = HEAP32[1204 >> 2] | 0; + $18 = ($17 | 0) == ($14 | 0); + if ($18) { + $79 = ($7 + 4) | 0; + $80 = HEAP32[$79 >> 2] | 0; + $81 = $80 & 3; + $82 = ($81 | 0) == 3; + if (!$82) { + $$1 = $14; + $$1345 = $15; + $88 = $14; + break; + } + $83 = ($14 + $15) | 0; + $84 = ($14 + 4) | 0; + $85 = $15 | 1; + $86 = $80 & -2; + HEAP32[1192 >> 2] = $15; + HEAP32[$79 >> 2] = $86; + HEAP32[$84 >> 2] = $85; + HEAP32[$83 >> 2] = $15; + return; + } + $19 = $10 >>> 3; + $20 = $10 >>> 0 < 256; + if ($20) { + $21 = ($14 + 8) | 0; + $22 = HEAP32[$21 >> 2] | 0; + $23 = ($14 + 12) | 0; + $24 = HEAP32[$23 >> 2] | 0; + $25 = ($24 | 0) == ($22 | 0); + if ($25) { + $26 = 1 << $19; + $27 = $26 ^ -1; + $28 = HEAP32[296] | 0; + $29 = $28 & $27; + HEAP32[296] = $29; + $$1 = $14; + $$1345 = $15; + $88 = $14; + break; + } else { + $30 = ($22 + 12) | 0; + HEAP32[$30 >> 2] = $24; + $31 = ($24 + 8) | 0; + HEAP32[$31 >> 2] = $22; + $$1 = $14; + $$1345 = $15; + $88 = $14; + break; + } + } + $32 = ($14 + 24) | 0; + $33 = HEAP32[$32 >> 2] | 0; + $34 = ($14 + 12) | 0; + $35 = HEAP32[$34 >> 2] | 0; + $36 = ($35 | 0) == ($14 | 0); + do { + if ($36) { + $41 = ($14 + 16) | 0; + $42 = ($41 + 4) | 0; + $43 = HEAP32[$42 >> 2] | 0; + $44 = ($43 | 0) == (0 | 0); + if ($44) { + $45 = HEAP32[$41 >> 2] | 0; + $46 = ($45 | 0) == (0 | 0); + if ($46) { + $$3 = 0; + break; + } else { + $$1350$ph = $45; + $$1353$ph = $41; + } + } else { + $$1350$ph = $43; + $$1353$ph = $42; + } + $$1350 = $$1350$ph; + $$1353 = $$1353$ph; + while (1) { + $47 = ($$1350 + 20) | 0; + $48 = HEAP32[$47 >> 2] | 0; + $49 = ($48 | 0) == (0 | 0); + if ($49) { + $50 = ($$1350 + 16) | 0; + $51 = HEAP32[$50 >> 2] | 0; + $52 = ($51 | 0) == (0 | 0); + if ($52) { + break; + } else { + $$1350$be = $51; + $$1353$be = $50; + } + } else { + $$1350$be = $48; + $$1353$be = $47; + } + $$1350 = $$1350$be; + $$1353 = $$1353$be; + } + HEAP32[$$1353 >> 2] = 0; + $$3 = $$1350; + } else { + $37 = ($14 + 8) | 0; + $38 = HEAP32[$37 >> 2] | 0; + $39 = ($38 + 12) | 0; + HEAP32[$39 >> 2] = $35; + $40 = ($35 + 8) | 0; + HEAP32[$40 >> 2] = $38; + $$3 = $35; + } + } while (0); + $53 = ($33 | 0) == (0 | 0); + if ($53) { + $$1 = $14; + $$1345 = $15; + $88 = $14; + } else { + $54 = ($14 + 28) | 0; + $55 = HEAP32[$54 >> 2] | 0; + $56 = (1488 + ($55 << 2)) | 0; + $57 = HEAP32[$56 >> 2] | 0; + $58 = ($57 | 0) == ($14 | 0); + if ($58) { + HEAP32[$56 >> 2] = $$3; + $cond371 = ($$3 | 0) == (0 | 0); + if ($cond371) { + $59 = 1 << $55; + $60 = $59 ^ -1; + $61 = HEAP32[1188 >> 2] | 0; + $62 = $61 & $60; + HEAP32[1188 >> 2] = $62; + $$1 = $14; + $$1345 = $15; + $88 = $14; + break; + } + } else { + $63 = ($33 + 16) | 0; + $64 = HEAP32[$63 >> 2] | 0; + $65 = ($64 | 0) == ($14 | 0); + $66 = ($33 + 20) | 0; + $$sink = $65 ? $63 : $66; + HEAP32[$$sink >> 2] = $$3; + $67 = ($$3 | 0) == (0 | 0); + if ($67) { + $$1 = $14; + $$1345 = $15; + $88 = $14; + break; + } + } + $68 = ($$3 + 24) | 0; + HEAP32[$68 >> 2] = $33; + $69 = ($14 + 16) | 0; + $70 = HEAP32[$69 >> 2] | 0; + $71 = ($70 | 0) == (0 | 0); + if (!$71) { + $72 = ($$3 + 16) | 0; + HEAP32[$72 >> 2] = $70; + $73 = ($70 + 24) | 0; + HEAP32[$73 >> 2] = $$3; + } + $74 = ($69 + 4) | 0; + $75 = HEAP32[$74 >> 2] | 0; + $76 = ($75 | 0) == (0 | 0); + if ($76) { + $$1 = $14; + $$1345 = $15; + $88 = $14; + } else { + $77 = ($$3 + 20) | 0; + HEAP32[$77 >> 2] = $75; + $78 = ($75 + 24) | 0; + HEAP32[$78 >> 2] = $$3; + $$1 = $14; + $$1345 = $15; + $88 = $14; + } + } + } else { + $$1 = $2; + $$1345 = $6; + $88 = $2; + } + } while (0); + $87 = $88 >>> 0 < $7 >>> 0; + if (!$87) { + return; + } + $89 = ($7 + 4) | 0; + $90 = HEAP32[$89 >> 2] | 0; + $91 = $90 & 1; + $92 = ($91 | 0) == 0; + if ($92) { + return; + } + $93 = $90 & 2; + $94 = ($93 | 0) == 0; + if ($94) { + $95 = HEAP32[1208 >> 2] | 0; + $96 = ($95 | 0) == ($7 | 0); + if ($96) { + $97 = HEAP32[1196 >> 2] | 0; + $98 = ($97 + $$1345) | 0; + HEAP32[1196 >> 2] = $98; + HEAP32[1208 >> 2] = $$1; + $99 = $98 | 1; + $100 = ($$1 + 4) | 0; + HEAP32[$100 >> 2] = $99; + $101 = HEAP32[1204 >> 2] | 0; + $102 = ($$1 | 0) == ($101 | 0); + if (!$102) { + return; + } + HEAP32[1204 >> 2] = 0; + HEAP32[1192 >> 2] = 0; + return; + } + $103 = HEAP32[1204 >> 2] | 0; + $104 = ($103 | 0) == ($7 | 0); + if ($104) { + $105 = HEAP32[1192 >> 2] | 0; + $106 = ($105 + $$1345) | 0; + HEAP32[1192 >> 2] = $106; + HEAP32[1204 >> 2] = $88; + $107 = $106 | 1; + $108 = ($$1 + 4) | 0; + HEAP32[$108 >> 2] = $107; + $109 = ($88 + $106) | 0; + HEAP32[$109 >> 2] = $106; + return; + } + $110 = $90 & -8; + $111 = ($110 + $$1345) | 0; + $112 = $90 >>> 3; + $113 = $90 >>> 0 < 256; + do { + if ($113) { + $114 = ($7 + 8) | 0; + $115 = HEAP32[$114 >> 2] | 0; + $116 = ($7 + 12) | 0; + $117 = HEAP32[$116 >> 2] | 0; + $118 = ($117 | 0) == ($115 | 0); + if ($118) { + $119 = 1 << $112; + $120 = $119 ^ -1; + $121 = HEAP32[296] | 0; + $122 = $121 & $120; + HEAP32[296] = $122; + break; + } else { + $123 = ($115 + 12) | 0; + HEAP32[$123 >> 2] = $117; + $124 = ($117 + 8) | 0; + HEAP32[$124 >> 2] = $115; + break; + } + } else { + $125 = ($7 + 24) | 0; + $126 = HEAP32[$125 >> 2] | 0; + $127 = ($7 + 12) | 0; + $128 = HEAP32[$127 >> 2] | 0; + $129 = ($128 | 0) == ($7 | 0); + do { + if ($129) { + $134 = ($7 + 16) | 0; + $135 = ($134 + 4) | 0; + $136 = HEAP32[$135 >> 2] | 0; + $137 = ($136 | 0) == (0 | 0); + if ($137) { + $138 = HEAP32[$134 >> 2] | 0; + $139 = ($138 | 0) == (0 | 0); + if ($139) { + $$3363 = 0; + break; + } else { + $$1361$ph = $138; + $$1365$ph = $134; + } + } else { + $$1361$ph = $136; + $$1365$ph = $135; + } + $$1361 = $$1361$ph; + $$1365 = $$1365$ph; + while (1) { + $140 = ($$1361 + 20) | 0; + $141 = HEAP32[$140 >> 2] | 0; + $142 = ($141 | 0) == (0 | 0); + if ($142) { + $143 = ($$1361 + 16) | 0; + $144 = HEAP32[$143 >> 2] | 0; + $145 = ($144 | 0) == (0 | 0); + if ($145) { + break; + } else { + $$1361$be = $144; + $$1365$be = $143; + } + } else { + $$1361$be = $141; + $$1365$be = $140; + } + $$1361 = $$1361$be; + $$1365 = $$1365$be; + } + HEAP32[$$1365 >> 2] = 0; + $$3363 = $$1361; + } else { + $130 = ($7 + 8) | 0; + $131 = HEAP32[$130 >> 2] | 0; + $132 = ($131 + 12) | 0; + HEAP32[$132 >> 2] = $128; + $133 = ($128 + 8) | 0; + HEAP32[$133 >> 2] = $131; + $$3363 = $128; + } + } while (0); + $146 = ($126 | 0) == (0 | 0); + if (!$146) { + $147 = ($7 + 28) | 0; + $148 = HEAP32[$147 >> 2] | 0; + $149 = (1488 + ($148 << 2)) | 0; + $150 = HEAP32[$149 >> 2] | 0; + $151 = ($150 | 0) == ($7 | 0); + if ($151) { + HEAP32[$149 >> 2] = $$3363; + $cond372 = ($$3363 | 0) == (0 | 0); + if ($cond372) { + $152 = 1 << $148; + $153 = $152 ^ -1; + $154 = HEAP32[1188 >> 2] | 0; + $155 = $154 & $153; + HEAP32[1188 >> 2] = $155; + break; + } + } else { + $156 = ($126 + 16) | 0; + $157 = HEAP32[$156 >> 2] | 0; + $158 = ($157 | 0) == ($7 | 0); + $159 = ($126 + 20) | 0; + $$sink395 = $158 ? $156 : $159; + HEAP32[$$sink395 >> 2] = $$3363; + $160 = ($$3363 | 0) == (0 | 0); + if ($160) { + break; + } + } + $161 = ($$3363 + 24) | 0; + HEAP32[$161 >> 2] = $126; + $162 = ($7 + 16) | 0; + $163 = HEAP32[$162 >> 2] | 0; + $164 = ($163 | 0) == (0 | 0); + if (!$164) { + $165 = ($$3363 + 16) | 0; + HEAP32[$165 >> 2] = $163; + $166 = ($163 + 24) | 0; + HEAP32[$166 >> 2] = $$3363; + } + $167 = ($162 + 4) | 0; + $168 = HEAP32[$167 >> 2] | 0; + $169 = ($168 | 0) == (0 | 0); + if (!$169) { + $170 = ($$3363 + 20) | 0; + HEAP32[$170 >> 2] = $168; + $171 = ($168 + 24) | 0; + HEAP32[$171 >> 2] = $$3363; + } + } + } + } while (0); + $172 = $111 | 1; + $173 = ($$1 + 4) | 0; + HEAP32[$173 >> 2] = $172; + $174 = ($88 + $111) | 0; + HEAP32[$174 >> 2] = $111; + $175 = HEAP32[1204 >> 2] | 0; + $176 = ($$1 | 0) == ($175 | 0); + if ($176) { + HEAP32[1192 >> 2] = $111; + return; + } else { + $$2 = $111; + } + } else { + $177 = $90 & -2; + HEAP32[$89 >> 2] = $177; + $178 = $$1345 | 1; + $179 = ($$1 + 4) | 0; + HEAP32[$179 >> 2] = $178; + $180 = ($88 + $$1345) | 0; + HEAP32[$180 >> 2] = $$1345; + $$2 = $$1345; + } + $181 = $$2 >>> 3; + $182 = $$2 >>> 0 < 256; + if ($182) { + $183 = $181 << 1; + $184 = (1224 + ($183 << 2)) | 0; + $185 = HEAP32[296] | 0; + $186 = 1 << $181; + $187 = $185 & $186; + $188 = ($187 | 0) == 0; + if ($188) { + $189 = $185 | $186; + HEAP32[296] = $189; + $$pre = ($184 + 8) | 0; + $$0366 = $184; + $$pre$phiZ2D = $$pre; + } else { + $190 = ($184 + 8) | 0; + $191 = HEAP32[$190 >> 2] | 0; + $$0366 = $191; + $$pre$phiZ2D = $190; + } + HEAP32[$$pre$phiZ2D >> 2] = $$1; + $192 = ($$0366 + 12) | 0; + HEAP32[$192 >> 2] = $$1; + $193 = ($$1 + 8) | 0; + HEAP32[$193 >> 2] = $$0366; + $194 = ($$1 + 12) | 0; + HEAP32[$194 >> 2] = $184; + return; + } + $195 = $$2 >>> 8; + $196 = ($195 | 0) == 0; + if ($196) { + $$0359 = 0; + } else { + $197 = $$2 >>> 0 > 16777215; + if ($197) { + $$0359 = 31; + } else { + $198 = ($195 + 1048320) | 0; + $199 = $198 >>> 16; + $200 = $199 & 8; + $201 = $195 << $200; + $202 = ($201 + 520192) | 0; + $203 = $202 >>> 16; + $204 = $203 & 4; + $205 = $204 | $200; + $206 = $201 << $204; + $207 = ($206 + 245760) | 0; + $208 = $207 >>> 16; + $209 = $208 & 2; + $210 = $205 | $209; + $211 = (14 - $210) | 0; + $212 = $206 << $209; + $213 = $212 >>> 15; + $214 = ($211 + $213) | 0; + $215 = $214 << 1; + $216 = ($214 + 7) | 0; + $217 = $$2 >>> $216; + $218 = $217 & 1; + $219 = $218 | $215; + $$0359 = $219; + } + } + $220 = (1488 + ($$0359 << 2)) | 0; + $221 = ($$1 + 28) | 0; + HEAP32[$221 >> 2] = $$0359; + $222 = ($$1 + 16) | 0; + $223 = ($$1 + 20) | 0; + HEAP32[$223 >> 2] = 0; + HEAP32[$222 >> 2] = 0; + $224 = HEAP32[1188 >> 2] | 0; + $225 = 1 << $$0359; + $226 = $224 & $225; + $227 = ($226 | 0) == 0; + L112: do { + if ($227) { + $228 = $224 | $225; + HEAP32[1188 >> 2] = $228; + HEAP32[$220 >> 2] = $$1; + $229 = ($$1 + 24) | 0; + HEAP32[$229 >> 2] = $220; + $230 = ($$1 + 12) | 0; + HEAP32[$230 >> 2] = $$1; + $231 = ($$1 + 8) | 0; + HEAP32[$231 >> 2] = $$1; + } else { + $232 = HEAP32[$220 >> 2] | 0; + $233 = ($232 + 4) | 0; + $234 = HEAP32[$233 >> 2] | 0; + $235 = $234 & -8; + $236 = ($235 | 0) == ($$2 | 0); + L115: do { + if ($236) { + $$0347$lcssa = $232; + } else { + $237 = ($$0359 | 0) == 31; + $238 = $$0359 >>> 1; + $239 = (25 - $238) | 0; + $240 = $237 ? 0 : $239; + $241 = $$2 << $240; + $$0346381 = $241; + $$0347380 = $232; + while (1) { + $248 = $$0346381 >>> 31; + $249 = ((($$0347380 + 16) | 0) + ($248 << 2)) | 0; + $244 = HEAP32[$249 >> 2] | 0; + $250 = ($244 | 0) == (0 | 0); + if ($250) { + break; + } + $242 = $$0346381 << 1; + $243 = ($244 + 4) | 0; + $245 = HEAP32[$243 >> 2] | 0; + $246 = $245 & -8; + $247 = ($246 | 0) == ($$2 | 0); + if ($247) { + $$0347$lcssa = $244; + break L115; + } else { + $$0346381 = $242; + $$0347380 = $244; + } + } + HEAP32[$249 >> 2] = $$1; + $251 = ($$1 + 24) | 0; + HEAP32[$251 >> 2] = $$0347380; + $252 = ($$1 + 12) | 0; + HEAP32[$252 >> 2] = $$1; + $253 = ($$1 + 8) | 0; + HEAP32[$253 >> 2] = $$1; + break L112; + } + } while (0); + $254 = ($$0347$lcssa + 8) | 0; + $255 = HEAP32[$254 >> 2] | 0; + $256 = ($255 + 12) | 0; + HEAP32[$256 >> 2] = $$1; + HEAP32[$254 >> 2] = $$1; + $257 = ($$1 + 8) | 0; + HEAP32[$257 >> 2] = $255; + $258 = ($$1 + 12) | 0; + HEAP32[$258 >> 2] = $$0347$lcssa; + $259 = ($$1 + 24) | 0; + HEAP32[$259 >> 2] = 0; + } + } while (0); + $260 = HEAP32[1216 >> 2] | 0; + $261 = ($260 + -1) | 0; + HEAP32[1216 >> 2] = $261; + $262 = ($261 | 0) == 0; + if (!$262) { + return; + } + $$0194$in$i = 1640; + while (1) { + $$0194$i = HEAP32[$$0194$in$i >> 2] | 0; + $263 = ($$0194$i | 0) == (0 | 0); + $264 = ($$0194$i + 8) | 0; + if ($263) { + break; + } else { + $$0194$in$i = $264; + } + } + HEAP32[1216 >> 2] = -1; + return; } - } else { - label = 3; - } - if ((label|0) == 3) { - $10 = ((($0)) + 4|0); - $11 = HEAP32[$10>>2]|0; - $12 = ((($0)) + 8|0); - $13 = HEAP32[$12>>2]|0; - $14 = ($11>>>0)<($13>>>0); - if ($14) { - $15 = $11; - $16 = $13; - $17 = (($15) - ($16))|0; - $18 = ((($0)) + 40|0); - $19 = HEAP32[$18>>2]|0; - (FUNCTION_TABLE_iiii[$19 & 7]($0,$17,1)|0); + function ___stdio_close($0) { + $0 = $0 | 0; + var $1 = 0, + $2 = 0, + $3 = 0, + $4 = 0, + $5 = 0, + $vararg_buffer = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 16) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(16 | 0); + $vararg_buffer = sp; + $1 = ($0 + 60) | 0; + $2 = HEAP32[$1 >> 2] | 0; + $3 = _dummy($2) | 0; + HEAP32[$vararg_buffer >> 2] = $3; + $4 = ___syscall6(6, $vararg_buffer | 0) | 0; + $5 = ___syscall_ret($4) | 0; + STACKTOP = sp; + return $5 | 0; } - $20 = ((($0)) + 16|0); - HEAP32[$20>>2] = 0; - HEAP32[$3>>2] = 0; - HEAP32[$1>>2] = 0; - HEAP32[$12>>2] = 0; - HEAP32[$10>>2] = 0; - $$0 = 0; - } - return ($$0|0); -} -function runPostSets() { -} -function ___muldsi3($a, $b) { + function ___stdio_write($0, $1, $2) { + $0 = $0 | 0; + $1 = $1 | 0; + $2 = $2 | 0; + var $$0 = 0, + $$04756 = 0, + $$04855 = 0, + $$04954 = 0, + $$051 = 0, + $$1 = 0, + $$150 = 0, + $10 = 0, + $11 = 0, + $12 = 0, + $13 = 0, + $14 = 0, + $15 = 0, + $16 = 0, + $17 = 0, + $18 = 0, + $19 = 0, + $20 = 0, + $21 = 0, + $22 = 0; + var $23 = 0, + $24 = 0, + $25 = 0, + $26 = 0, + $27 = 0, + $28 = 0, + $29 = 0, + $3 = 0, + $30 = 0, + $31 = 0, + $32 = 0, + $33 = 0, + $34 = 0, + $35 = 0, + $36 = 0, + $37 = 0, + $38 = 0, + $39 = 0, + $4 = 0, + $40 = 0; + var $41 = 0, + $42 = 0, + $43 = 0, + $44 = 0, + $45 = 0, + $46 = 0, + $47 = 0, + $48 = 0, + $49 = 0, + $5 = 0, + $50 = 0, + $51 = 0, + $6 = 0, + $7 = 0, + $8 = 0, + $9 = 0, + $vararg_buffer = 0, + $vararg_buffer3 = 0, + $vararg_ptr1 = 0, + $vararg_ptr2 = 0; + var $vararg_ptr6 = 0, + $vararg_ptr7 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 48) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(48 | 0); + $vararg_buffer3 = (sp + 32) | 0; + $vararg_buffer = (sp + 16) | 0; + $3 = sp; + $4 = ($0 + 28) | 0; + $5 = HEAP32[$4 >> 2] | 0; + HEAP32[$3 >> 2] = $5; + $6 = ($3 + 4) | 0; + $7 = ($0 + 20) | 0; + $8 = HEAP32[$7 >> 2] | 0; + $9 = ($8 - $5) | 0; + HEAP32[$6 >> 2] = $9; + $10 = ($3 + 8) | 0; + HEAP32[$10 >> 2] = $1; + $11 = ($3 + 12) | 0; + HEAP32[$11 >> 2] = $2; + $12 = ($9 + $2) | 0; + $13 = ($0 + 60) | 0; + $14 = HEAP32[$13 >> 2] | 0; + $15 = $3; + HEAP32[$vararg_buffer >> 2] = $14; + $vararg_ptr1 = ($vararg_buffer + 4) | 0; + HEAP32[$vararg_ptr1 >> 2] = $15; + $vararg_ptr2 = ($vararg_buffer + 8) | 0; + HEAP32[$vararg_ptr2 >> 2] = 2; + $16 = ___syscall146(146, $vararg_buffer | 0) | 0; + $17 = ___syscall_ret($16) | 0; + $18 = ($12 | 0) == ($17 | 0); + L1: do { + if ($18) { + label = 3; + } else { + $$04756 = 2; + $$04855 = $12; + $$04954 = $3; + $27 = $17; + while (1) { + $26 = ($27 | 0) < 0; + if ($26) { + break; + } + $35 = ($$04855 - $27) | 0; + $36 = ($$04954 + 4) | 0; + $37 = HEAP32[$36 >> 2] | 0; + $38 = $27 >>> 0 > $37 >>> 0; + $39 = ($$04954 + 8) | 0; + $$150 = $38 ? $39 : $$04954; + $40 = ($38 << 31) >> 31; + $$1 = ($$04756 + $40) | 0; + $41 = $38 ? $37 : 0; + $$0 = ($27 - $41) | 0; + $42 = HEAP32[$$150 >> 2] | 0; + $43 = ($42 + $$0) | 0; + HEAP32[$$150 >> 2] = $43; + $44 = ($$150 + 4) | 0; + $45 = HEAP32[$44 >> 2] | 0; + $46 = ($45 - $$0) | 0; + HEAP32[$44 >> 2] = $46; + $47 = HEAP32[$13 >> 2] | 0; + $48 = $$150; + HEAP32[$vararg_buffer3 >> 2] = $47; + $vararg_ptr6 = ($vararg_buffer3 + 4) | 0; + HEAP32[$vararg_ptr6 >> 2] = $48; + $vararg_ptr7 = ($vararg_buffer3 + 8) | 0; + HEAP32[$vararg_ptr7 >> 2] = $$1; + $49 = ___syscall146(146, $vararg_buffer3 | 0) | 0; + $50 = ___syscall_ret($49) | 0; + $51 = ($35 | 0) == ($50 | 0); + if ($51) { + label = 3; + break L1; + } else { + $$04756 = $$1; + $$04855 = $35; + $$04954 = $$150; + $27 = $50; + } + } + $28 = ($0 + 16) | 0; + HEAP32[$28 >> 2] = 0; + HEAP32[$4 >> 2] = 0; + HEAP32[$7 >> 2] = 0; + $29 = HEAP32[$0 >> 2] | 0; + $30 = $29 | 32; + HEAP32[$0 >> 2] = $30; + $31 = ($$04756 | 0) == 2; + if ($31) { + $$051 = 0; + } else { + $32 = ($$04954 + 4) | 0; + $33 = HEAP32[$32 >> 2] | 0; + $34 = ($2 - $33) | 0; + $$051 = $34; + } + } + } while (0); + if ((label | 0) == 3) { + $19 = ($0 + 44) | 0; + $20 = HEAP32[$19 >> 2] | 0; + $21 = ($0 + 48) | 0; + $22 = HEAP32[$21 >> 2] | 0; + $23 = ($20 + $22) | 0; + $24 = ($0 + 16) | 0; + HEAP32[$24 >> 2] = $23; + $25 = $20; + HEAP32[$4 >> 2] = $25; + HEAP32[$7 >> 2] = $25; + $$051 = $2; + } + STACKTOP = sp; + return $$051 | 0; + } + function ___stdio_seek($0, $1, $2) { + $0 = $0 | 0; + $1 = $1 | 0; + $2 = $2 | 0; + var $$pre = 0, + $10 = 0, + $3 = 0, + $4 = 0, + $5 = 0, + $6 = 0, + $7 = 0, + $8 = 0, + $9 = 0, + $vararg_buffer = 0, + $vararg_ptr1 = 0, + $vararg_ptr2 = 0, + $vararg_ptr3 = 0, + $vararg_ptr4 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 32) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(32 | 0); + $vararg_buffer = sp; + $3 = (sp + 20) | 0; + $4 = ($0 + 60) | 0; + $5 = HEAP32[$4 >> 2] | 0; + $6 = $3; + HEAP32[$vararg_buffer >> 2] = $5; + $vararg_ptr1 = ($vararg_buffer + 4) | 0; + HEAP32[$vararg_ptr1 >> 2] = 0; + $vararg_ptr2 = ($vararg_buffer + 8) | 0; + HEAP32[$vararg_ptr2 >> 2] = $1; + $vararg_ptr3 = ($vararg_buffer + 12) | 0; + HEAP32[$vararg_ptr3 >> 2] = $6; + $vararg_ptr4 = ($vararg_buffer + 16) | 0; + HEAP32[$vararg_ptr4 >> 2] = $2; + $7 = ___syscall140(140, $vararg_buffer | 0) | 0; + $8 = ___syscall_ret($7) | 0; + $9 = ($8 | 0) < 0; + if ($9) { + HEAP32[$3 >> 2] = -1; + $10 = -1; + } else { + $$pre = HEAP32[$3 >> 2] | 0; + $10 = $$pre; + } + STACKTOP = sp; + return $10 | 0; + } + function ___syscall_ret($0) { + $0 = $0 | 0; + var $$0 = 0, + $1 = 0, + $2 = 0, + $3 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + $1 = $0 >>> 0 > 4294963200; + if ($1) { + $2 = (0 - $0) | 0; + $3 = ___errno_location() | 0; + HEAP32[$3 >> 2] = $2; + $$0 = -1; + } else { + $$0 = $0; + } + return $$0 | 0; + } + function ___errno_location() { + var label = 0, + sp = 0; + sp = STACKTOP; + return 1680 | 0; + } + function _dummy($0) { + $0 = $0 | 0; + var label = 0, + sp = 0; + sp = STACKTOP; + return $0 | 0; + } + function ___stdout_write($0, $1, $2) { + $0 = $0 | 0; + $1 = $1 | 0; + $2 = $2 | 0; + var $10 = 0, + $11 = 0, + $12 = 0, + $13 = 0, + $14 = 0, + $3 = 0, + $4 = 0, + $5 = 0, + $6 = 0, + $7 = 0, + $8 = 0, + $9 = 0, + $vararg_buffer = 0, + $vararg_ptr1 = 0, + $vararg_ptr2 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + STACKTOP = (STACKTOP + 32) | 0; + if ((STACKTOP | 0) >= (STACK_MAX | 0)) abortStackOverflow(32 | 0); + $vararg_buffer = sp; + $3 = (sp + 16) | 0; + $4 = ($0 + 36) | 0; + HEAP32[$4 >> 2] = 4; + $5 = HEAP32[$0 >> 2] | 0; + $6 = $5 & 64; + $7 = ($6 | 0) == 0; + if ($7) { + $8 = ($0 + 60) | 0; + $9 = HEAP32[$8 >> 2] | 0; + $10 = $3; + HEAP32[$vararg_buffer >> 2] = $9; + $vararg_ptr1 = ($vararg_buffer + 4) | 0; + HEAP32[$vararg_ptr1 >> 2] = 21523; + $vararg_ptr2 = ($vararg_buffer + 8) | 0; + HEAP32[$vararg_ptr2 >> 2] = $10; + $11 = ___syscall54(54, $vararg_buffer | 0) | 0; + $12 = ($11 | 0) == 0; + if (!$12) { + $13 = ($0 + 75) | 0; + HEAP8[$13 >> 0] = -1; + } + } + $14 = ___stdio_write($0, $1, $2) | 0; + STACKTOP = sp; + return $14 | 0; + } + function ___unlockfile($0) { + $0 = $0 | 0; + var label = 0, + sp = 0; + sp = STACKTOP; + return; + } + function ___lockfile($0) { + $0 = $0 | 0; + var label = 0, + sp = 0; + sp = STACKTOP; + return 0; + } + function ___ofl_lock() { + var label = 0, + sp = 0; + sp = STACKTOP; + ___lock(1684 | 0); + return 1692 | 0; + } + function ___ofl_unlock() { + var label = 0, + sp = 0; + sp = STACKTOP; + ___unlock(1684 | 0); + return; + } + function _fflush($0) { + $0 = $0 | 0; + var $$0 = 0, + $$023 = 0, + $$02325 = 0, + $$02327 = 0, + $$024$lcssa = 0, + $$02426 = 0, + $$1 = 0, + $1 = 0, + $10 = 0, + $11 = 0, + $12 = 0, + $13 = 0, + $14 = 0, + $15 = 0, + $16 = 0, + $17 = 0, + $18 = 0, + $19 = 0, + $2 = 0, + $20 = 0; + var $21 = 0, + $22 = 0, + $23 = 0, + $24 = 0, + $25 = 0, + $26 = 0, + $27 = 0, + $28 = 0, + $29 = 0, + $3 = 0, + $4 = 0, + $5 = 0, + $6 = 0, + $7 = 0, + $8 = 0, + $9 = 0, + $phitmp = 0, + label = 0, + sp = 0; + sp = STACKTOP; + $1 = ($0 | 0) == (0 | 0); + do { + if ($1) { + $8 = HEAP32[35] | 0; + $9 = ($8 | 0) == (0 | 0); + if ($9) { + $29 = 0; + } else { + $10 = HEAP32[35] | 0; + $11 = _fflush($10) | 0; + $29 = $11; + } + $12 = ___ofl_lock() | 0; + $$02325 = HEAP32[$12 >> 2] | 0; + $13 = ($$02325 | 0) == (0 | 0); + if ($13) { + $$024$lcssa = $29; + } else { + $$02327 = $$02325; + $$02426 = $29; + while (1) { + $14 = ($$02327 + 76) | 0; + $15 = HEAP32[$14 >> 2] | 0; + $16 = ($15 | 0) > -1; + if ($16) { + $17 = ___lockfile($$02327) | 0; + $26 = $17; + } else { + $26 = 0; + } + $18 = ($$02327 + 20) | 0; + $19 = HEAP32[$18 >> 2] | 0; + $20 = ($$02327 + 28) | 0; + $21 = HEAP32[$20 >> 2] | 0; + $22 = $19 >>> 0 > $21 >>> 0; + if ($22) { + $23 = ___fflush_unlocked($$02327) | 0; + $24 = $23 | $$02426; + $$1 = $24; + } else { + $$1 = $$02426; + } + $25 = ($26 | 0) == 0; + if (!$25) { + ___unlockfile($$02327); + } + $27 = ($$02327 + 56) | 0; + $$023 = HEAP32[$27 >> 2] | 0; + $28 = ($$023 | 0) == (0 | 0); + if ($28) { + $$024$lcssa = $$1; + break; + } else { + $$02327 = $$023; + $$02426 = $$1; + } + } + } + ___ofl_unlock(); + $$0 = $$024$lcssa; + } else { + $2 = ($0 + 76) | 0; + $3 = HEAP32[$2 >> 2] | 0; + $4 = ($3 | 0) > -1; + if (!$4) { + $5 = ___fflush_unlocked($0) | 0; + $$0 = $5; + break; + } + $6 = ___lockfile($0) | 0; + $phitmp = ($6 | 0) == 0; + $7 = ___fflush_unlocked($0) | 0; + if ($phitmp) { + $$0 = $7; + } else { + ___unlockfile($0); + $$0 = $7; + } + } + } while (0); + return $$0 | 0; + } + function ___fflush_unlocked($0) { + $0 = $0 | 0; + var $$0 = 0, + $1 = 0, + $10 = 0, + $11 = 0, + $12 = 0, + $13 = 0, + $14 = 0, + $15 = 0, + $16 = 0, + $17 = 0, + $18 = 0, + $19 = 0, + $2 = 0, + $20 = 0, + $3 = 0, + $4 = 0, + $5 = 0, + $6 = 0, + $7 = 0, + $8 = 0; + var $9 = 0, + label = 0, + sp = 0; + sp = STACKTOP; + $1 = ($0 + 20) | 0; + $2 = HEAP32[$1 >> 2] | 0; + $3 = ($0 + 28) | 0; + $4 = HEAP32[$3 >> 2] | 0; + $5 = $2 >>> 0 > $4 >>> 0; + if ($5) { + $6 = ($0 + 36) | 0; + $7 = HEAP32[$6 >> 2] | 0; + FUNCTION_TABLE_iiii[$7 & 7]($0, 0, 0) | 0; + $8 = HEAP32[$1 >> 2] | 0; + $9 = ($8 | 0) == (0 | 0); + if ($9) { + $$0 = -1; + } else { + label = 3; + } + } else { + label = 3; + } + if ((label | 0) == 3) { + $10 = ($0 + 4) | 0; + $11 = HEAP32[$10 >> 2] | 0; + $12 = ($0 + 8) | 0; + $13 = HEAP32[$12 >> 2] | 0; + $14 = $11 >>> 0 < $13 >>> 0; + if ($14) { + $15 = $11; + $16 = $13; + $17 = ($15 - $16) | 0; + $18 = ($0 + 40) | 0; + $19 = HEAP32[$18 >> 2] | 0; + FUNCTION_TABLE_iiii[$19 & 7]($0, $17, 1) | 0; + } + $20 = ($0 + 16) | 0; + HEAP32[$20 >> 2] = 0; + HEAP32[$3 >> 2] = 0; + HEAP32[$1 >> 2] = 0; + HEAP32[$12 >> 2] = 0; + HEAP32[$10 >> 2] = 0; + $$0 = 0; + } + return $$0 | 0; + } + function runPostSets() {} + function ___muldsi3($a, $b) { $a = $a | 0; $b = $b | 0; - var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0; + var $1 = 0, + $2 = 0, + $3 = 0, + $6 = 0, + $8 = 0, + $11 = 0, + $12 = 0; $1 = $a & 65535; $2 = $b & 65535; $3 = Math_imul($2, $1) | 0; $6 = $a >>> 16; - $8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0; + $8 = (($3 >>> 16) + (Math_imul($2, $6) | 0)) | 0; $11 = $b >>> 16; $12 = Math_imul($11, $1) | 0; - return (tempRet0 = (($8 >>> 16) + (Math_imul($11, $6) | 0) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, 0 | ($8 + $12 << 16 | $3 & 65535)) | 0; -} -function ___muldi3($a$0, $a$1, $b$0, $b$1) { + return ( + ((tempRet0 = + (((($8 >>> 16) + (Math_imul($11, $6) | 0)) | 0) + + (((($8 & 65535) + $12) | 0) >>> 16)) | + 0), + 0 | ((($8 + $12) << 16) | ($3 & 65535))) | 0 + ); + } + function ___muldi3($a$0, $a$1, $b$0, $b$1) { $a$0 = $a$0 | 0; $a$1 = $a$1 | 0; $b$0 = $b$0 | 0; $b$1 = $b$1 | 0; - var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0, $2 = 0; + var $x_sroa_0_0_extract_trunc = 0, + $y_sroa_0_0_extract_trunc = 0, + $1$0 = 0, + $1$1 = 0, + $2 = 0; $x_sroa_0_0_extract_trunc = $a$0; $y_sroa_0_0_extract_trunc = $b$0; $1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0; $1$1 = tempRet0; $2 = Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0; - return (tempRet0 = ((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2 | 0) + $1$1 | $1$1 & 0, 0 | $1$0 & -1) | 0; -} -function _bitshift64Ashr(low, high, bits) { - low = low|0; high = high|0; bits = bits|0; + return ( + ((tempRet0 = + ((((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2) | 0) + $1$1) | + ($1$1 & 0)), + 0 | ($1$0 & -1)) | 0 + ); + } + function _bitshift64Ashr(low, high, bits) { + low = low | 0; + high = high | 0; + bits = bits | 0; var ander = 0; - if ((bits|0) < 32) { - ander = ((1 << bits) - 1)|0; + if ((bits | 0) < 32) { + ander = ((1 << bits) - 1) | 0; tempRet0 = high >> bits; - return (low >>> bits) | ((high&ander) << (32 - bits)); + return (low >>> bits) | ((high & ander) << (32 - bits)); } - tempRet0 = (high|0) < 0 ? -1 : 0; - return (high >> (bits - 32))|0; -} -function _bitshift64Lshr(low, high, bits) { - low = low|0; high = high|0; bits = bits|0; + tempRet0 = (high | 0) < 0 ? -1 : 0; + return (high >> (bits - 32)) | 0; + } + function _bitshift64Lshr(low, high, bits) { + low = low | 0; + high = high | 0; + bits = bits | 0; var ander = 0; - if ((bits|0) < 32) { - ander = ((1 << bits) - 1)|0; + if ((bits | 0) < 32) { + ander = ((1 << bits) - 1) | 0; tempRet0 = high >>> bits; - return (low >>> bits) | ((high&ander) << (32 - bits)); + return (low >>> bits) | ((high & ander) << (32 - bits)); } tempRet0 = 0; - return (high >>> (bits - 32))|0; -} -function _bitshift64Shl(low, high, bits) { - low = low|0; high = high|0; bits = bits|0; + return (high >>> (bits - 32)) | 0; + } + function _bitshift64Shl(low, high, bits) { + low = low | 0; + high = high | 0; + bits = bits | 0; var ander = 0; - if ((bits|0) < 32) { - ander = ((1 << bits) - 1)|0; - tempRet0 = (high << bits) | ((low&(ander << (32 - bits))) >>> (32 - bits)); + if ((bits | 0) < 32) { + ander = ((1 << bits) - 1) | 0; + tempRet0 = + (high << bits) | ((low & (ander << (32 - bits))) >>> (32 - bits)); return low << bits; } tempRet0 = low << (bits - 32); return 0; -} -function _i64Add(a, b, c, d) { + } + function _i64Add(a, b, c, d) { /* x = a + b*2^32 y = c + d*2^32 result = l + h*2^32 */ - a = a|0; b = b|0; c = c|0; d = d|0; - var l = 0, h = 0; - l = (a + c)>>>0; - h = (b + d + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow. - return ((tempRet0 = h,l|0)|0); -} -function _i64Subtract(a, b, c, d) { - a = a|0; b = b|0; c = c|0; d = d|0; - var l = 0, h = 0; - l = (a - c)>>>0; - h = (b - d)>>>0; - h = (b - d - (((c>>>0) > (a>>>0))|0))>>>0; // Borrow one from high word to low word on underflow. - return ((tempRet0 = h,l|0)|0); -} -function _memcpy(dest, src, num) { - dest = dest|0; src = src|0; num = num|0; + a = a | 0; + b = b | 0; + c = c | 0; + d = d | 0; + var l = 0, + h = 0; + l = (a + c) >>> 0; + h = (b + d + ((l >>> 0 < a >>> 0) | 0)) >>> 0; // Add carry from low word to high word on overflow. + return ((tempRet0 = h), l | 0) | 0; + } + function _i64Subtract(a, b, c, d) { + a = a | 0; + b = b | 0; + c = c | 0; + d = d | 0; + var l = 0, + h = 0; + l = (a - c) >>> 0; + h = (b - d) >>> 0; + h = (b - d - ((c >>> 0 > a >>> 0) | 0)) >>> 0; // Borrow one from high word to low word on underflow. + return ((tempRet0 = h), l | 0) | 0; + } + function _memcpy(dest, src, num) { + dest = dest | 0; + src = src | 0; + num = num | 0; var ret = 0; var aligned_dest_end = 0; var block_aligned_dest_end = 0; var dest_end = 0; // Test against a benchmarked cutoff limit for when HEAPU8.set() becomes faster to use. - if ((num|0) >= - 8192 - ) { - return _emscripten_memcpy_big(dest|0, src|0, num|0)|0; + if ((num | 0) >= 8192) { + return _emscripten_memcpy_big(dest | 0, src | 0, num | 0) | 0; } - ret = dest|0; - dest_end = (dest + num)|0; - if ((dest&3) == (src&3)) { + ret = dest | 0; + dest_end = (dest + num) | 0; + if ((dest & 3) == (src & 3)) { // The initial unaligned < 4-byte front. while (dest & 3) { - if ((num|0) == 0) return ret|0; - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - dest = (dest+1)|0; - src = (src+1)|0; - num = (num-1)|0; + if ((num | 0) == 0) return ret | 0; + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = (dest + 1) | 0; + src = (src + 1) | 0; + num = (num - 1) | 0; } - aligned_dest_end = (dest_end & -4)|0; - block_aligned_dest_end = (aligned_dest_end - 64)|0; - while ((dest|0) <= (block_aligned_dest_end|0) ) { - HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0); - HEAP32[(((dest)+(4))>>2)]=((HEAP32[(((src)+(4))>>2)])|0); - HEAP32[(((dest)+(8))>>2)]=((HEAP32[(((src)+(8))>>2)])|0); - HEAP32[(((dest)+(12))>>2)]=((HEAP32[(((src)+(12))>>2)])|0); - HEAP32[(((dest)+(16))>>2)]=((HEAP32[(((src)+(16))>>2)])|0); - HEAP32[(((dest)+(20))>>2)]=((HEAP32[(((src)+(20))>>2)])|0); - HEAP32[(((dest)+(24))>>2)]=((HEAP32[(((src)+(24))>>2)])|0); - HEAP32[(((dest)+(28))>>2)]=((HEAP32[(((src)+(28))>>2)])|0); - HEAP32[(((dest)+(32))>>2)]=((HEAP32[(((src)+(32))>>2)])|0); - HEAP32[(((dest)+(36))>>2)]=((HEAP32[(((src)+(36))>>2)])|0); - HEAP32[(((dest)+(40))>>2)]=((HEAP32[(((src)+(40))>>2)])|0); - HEAP32[(((dest)+(44))>>2)]=((HEAP32[(((src)+(44))>>2)])|0); - HEAP32[(((dest)+(48))>>2)]=((HEAP32[(((src)+(48))>>2)])|0); - HEAP32[(((dest)+(52))>>2)]=((HEAP32[(((src)+(52))>>2)])|0); - HEAP32[(((dest)+(56))>>2)]=((HEAP32[(((src)+(56))>>2)])|0); - HEAP32[(((dest)+(60))>>2)]=((HEAP32[(((src)+(60))>>2)])|0); - dest = (dest+64)|0; - src = (src+64)|0; + aligned_dest_end = (dest_end & -4) | 0; + block_aligned_dest_end = (aligned_dest_end - 64) | 0; + while ((dest | 0) <= (block_aligned_dest_end | 0)) { + HEAP32[dest >> 2] = HEAP32[src >> 2] | 0; + HEAP32[(dest + 4) >> 2] = HEAP32[(src + 4) >> 2] | 0; + HEAP32[(dest + 8) >> 2] = HEAP32[(src + 8) >> 2] | 0; + HEAP32[(dest + 12) >> 2] = HEAP32[(src + 12) >> 2] | 0; + HEAP32[(dest + 16) >> 2] = HEAP32[(src + 16) >> 2] | 0; + HEAP32[(dest + 20) >> 2] = HEAP32[(src + 20) >> 2] | 0; + HEAP32[(dest + 24) >> 2] = HEAP32[(src + 24) >> 2] | 0; + HEAP32[(dest + 28) >> 2] = HEAP32[(src + 28) >> 2] | 0; + HEAP32[(dest + 32) >> 2] = HEAP32[(src + 32) >> 2] | 0; + HEAP32[(dest + 36) >> 2] = HEAP32[(src + 36) >> 2] | 0; + HEAP32[(dest + 40) >> 2] = HEAP32[(src + 40) >> 2] | 0; + HEAP32[(dest + 44) >> 2] = HEAP32[(src + 44) >> 2] | 0; + HEAP32[(dest + 48) >> 2] = HEAP32[(src + 48) >> 2] | 0; + HEAP32[(dest + 52) >> 2] = HEAP32[(src + 52) >> 2] | 0; + HEAP32[(dest + 56) >> 2] = HEAP32[(src + 56) >> 2] | 0; + HEAP32[(dest + 60) >> 2] = HEAP32[(src + 60) >> 2] | 0; + dest = (dest + 64) | 0; + src = (src + 64) | 0; } - while ((dest|0) < (aligned_dest_end|0) ) { - HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0); - dest = (dest+4)|0; - src = (src+4)|0; + while ((dest | 0) < (aligned_dest_end | 0)) { + HEAP32[dest >> 2] = HEAP32[src >> 2] | 0; + dest = (dest + 4) | 0; + src = (src + 4) | 0; } } else { // In the unaligned copy case, unroll a bit as well. - aligned_dest_end = (dest_end - 4)|0; - while ((dest|0) < (aligned_dest_end|0) ) { - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - HEAP8[(((dest)+(1))>>0)]=((HEAP8[(((src)+(1))>>0)])|0); - HEAP8[(((dest)+(2))>>0)]=((HEAP8[(((src)+(2))>>0)])|0); - HEAP8[(((dest)+(3))>>0)]=((HEAP8[(((src)+(3))>>0)])|0); - dest = (dest+4)|0; - src = (src+4)|0; + aligned_dest_end = (dest_end - 4) | 0; + while ((dest | 0) < (aligned_dest_end | 0)) { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + HEAP8[(dest + 1) >> 0] = HEAP8[(src + 1) >> 0] | 0; + HEAP8[(dest + 2) >> 0] = HEAP8[(src + 2) >> 0] | 0; + HEAP8[(dest + 3) >> 0] = HEAP8[(src + 3) >> 0] | 0; + dest = (dest + 4) | 0; + src = (src + 4) | 0; } } // The remaining unaligned < 4 byte tail. - while ((dest|0) < (dest_end|0)) { - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - dest = (dest+1)|0; - src = (src+1)|0; + while ((dest | 0) < (dest_end | 0)) { + HEAP8[dest >> 0] = HEAP8[src >> 0] | 0; + dest = (dest + 1) | 0; + src = (src + 1) | 0; } - return ret|0; -} -function _memset(ptr, value, num) { - ptr = ptr|0; value = value|0; num = num|0; - var end = 0, aligned_end = 0, block_aligned_end = 0, value4 = 0; - end = (ptr + num)|0; + return ret | 0; + } + function _memset(ptr, value, num) { + ptr = ptr | 0; + value = value | 0; + num = num | 0; + var end = 0, + aligned_end = 0, + block_aligned_end = 0, + value4 = 0; + end = (ptr + num) | 0; value = value & 0xff; - if ((num|0) >= 67 /* 64 bytes for an unrolled loop + 3 bytes for unaligned head*/) { - while ((ptr&3) != 0) { - HEAP8[((ptr)>>0)]=value; - ptr = (ptr+1)|0; + if ( + (num | 0) >= + 67 /* 64 bytes for an unrolled loop + 3 bytes for unaligned head*/ + ) { + while ((ptr & 3) != 0) { + HEAP8[ptr >> 0] = value; + ptr = (ptr + 1) | 0; } - aligned_end = (end & -4)|0; - block_aligned_end = (aligned_end - 64)|0; + aligned_end = (end & -4) | 0; + block_aligned_end = (aligned_end - 64) | 0; value4 = value | (value << 8) | (value << 16) | (value << 24); - while((ptr|0) <= (block_aligned_end|0)) { - HEAP32[((ptr)>>2)]=value4; - HEAP32[(((ptr)+(4))>>2)]=value4; - HEAP32[(((ptr)+(8))>>2)]=value4; - HEAP32[(((ptr)+(12))>>2)]=value4; - HEAP32[(((ptr)+(16))>>2)]=value4; - HEAP32[(((ptr)+(20))>>2)]=value4; - HEAP32[(((ptr)+(24))>>2)]=value4; - HEAP32[(((ptr)+(28))>>2)]=value4; - HEAP32[(((ptr)+(32))>>2)]=value4; - HEAP32[(((ptr)+(36))>>2)]=value4; - HEAP32[(((ptr)+(40))>>2)]=value4; - HEAP32[(((ptr)+(44))>>2)]=value4; - HEAP32[(((ptr)+(48))>>2)]=value4; - HEAP32[(((ptr)+(52))>>2)]=value4; - HEAP32[(((ptr)+(56))>>2)]=value4; - HEAP32[(((ptr)+(60))>>2)]=value4; - ptr = (ptr + 64)|0; + while ((ptr | 0) <= (block_aligned_end | 0)) { + HEAP32[ptr >> 2] = value4; + HEAP32[(ptr + 4) >> 2] = value4; + HEAP32[(ptr + 8) >> 2] = value4; + HEAP32[(ptr + 12) >> 2] = value4; + HEAP32[(ptr + 16) >> 2] = value4; + HEAP32[(ptr + 20) >> 2] = value4; + HEAP32[(ptr + 24) >> 2] = value4; + HEAP32[(ptr + 28) >> 2] = value4; + HEAP32[(ptr + 32) >> 2] = value4; + HEAP32[(ptr + 36) >> 2] = value4; + HEAP32[(ptr + 40) >> 2] = value4; + HEAP32[(ptr + 44) >> 2] = value4; + HEAP32[(ptr + 48) >> 2] = value4; + HEAP32[(ptr + 52) >> 2] = value4; + HEAP32[(ptr + 56) >> 2] = value4; + HEAP32[(ptr + 60) >> 2] = value4; + ptr = (ptr + 64) | 0; } - while ((ptr|0) < (aligned_end|0) ) { - HEAP32[((ptr)>>2)]=value4; - ptr = (ptr+4)|0; + while ((ptr | 0) < (aligned_end | 0)) { + HEAP32[ptr >> 2] = value4; + ptr = (ptr + 4) | 0; } } // The remaining bytes. - while ((ptr|0) < (end|0)) { - HEAP8[((ptr)>>0)]=value; - ptr = (ptr+1)|0; + while ((ptr | 0) < (end | 0)) { + HEAP8[ptr >> 0] = value; + ptr = (ptr + 1) | 0; } - return (end-num)|0; -} -function _sbrk(increment) { - increment = increment|0; + return (end - num) | 0; + } + function _sbrk(increment) { + increment = increment | 0; var oldDynamicTop = 0; var oldDynamicTopOnChange = 0; var newDynamicTop = 0; var totalMemory = 0; - oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0; - newDynamicTop = oldDynamicTop + increment | 0; + oldDynamicTop = HEAP32[DYNAMICTOP_PTR >> 2] | 0; + newDynamicTop = (oldDynamicTop + increment) | 0; - if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int. - | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract. - abortOnCannotGrowMemory()|0; + if ( + (((increment | 0) > 0) & ((newDynamicTop | 0) < (oldDynamicTop | 0))) | // Detect and fail if we would wrap around signed 32-bit int. + ((newDynamicTop | 0) < 0) + ) { + // Also underflow, sbrk() should be able to be used to subtract. + abortOnCannotGrowMemory() | 0; ___setErrNo(12); return -1; } - HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop; - totalMemory = getTotalMemory()|0; - if ((newDynamicTop|0) > (totalMemory|0)) { - if ((enlargeMemory()|0) == 0) { - HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop; + HEAP32[DYNAMICTOP_PTR >> 2] = newDynamicTop; + totalMemory = getTotalMemory() | 0; + if ((newDynamicTop | 0) > (totalMemory | 0)) { + if ((enlargeMemory() | 0) == 0) { + HEAP32[DYNAMICTOP_PTR >> 2] = oldDynamicTop; ___setErrNo(12); return -1; } } - return oldDynamicTop|0; -} + return oldDynamicTop | 0; + } - -function dynCall_ii(index,a1) { - index = index|0; - a1=a1|0; - return FUNCTION_TABLE_ii[index&1](a1|0)|0; -} + function dynCall_ii(index, a1) { + index = index | 0; + a1 = a1 | 0; + return FUNCTION_TABLE_ii[index & 1](a1 | 0) | 0; + } + function dynCall_iiii(index, a1, a2, a3) { + index = index | 0; + a1 = a1 | 0; + a2 = a2 | 0; + a3 = a3 | 0; + return FUNCTION_TABLE_iiii[index & 7](a1 | 0, a2 | 0, a3 | 0) | 0; + } -function dynCall_iiii(index,a1,a2,a3) { - index = index|0; - a1=a1|0; a2=a2|0; a3=a3|0; - return FUNCTION_TABLE_iiii[index&7](a1|0,a2|0,a3|0)|0; -} + function b0(p0) { + p0 = p0 | 0; + nullFunc_ii(0); + return 0; + } + function b1(p0, p1, p2) { + p0 = p0 | 0; + p1 = p1 | 0; + p2 = p2 | 0; + nullFunc_iiii(1); + return 0; + } -function b0(p0) { - p0 = p0|0; nullFunc_ii(0);return 0; -} -function b1(p0,p1,p2) { - p0 = p0|0;p1 = p1|0;p2 = p2|0; nullFunc_iiii(1);return 0; -} + // EMSCRIPTEN_END_FUNCS + var FUNCTION_TABLE_ii = [b0, ___stdio_close]; + var FUNCTION_TABLE_iiii = [ + b1, + b1, + ___stdout_write, + ___stdio_seek, + ___stdio_write, + b1, + b1, + b1, + ]; -// EMSCRIPTEN_END_FUNCS -var FUNCTION_TABLE_ii = [b0,___stdio_close]; -var FUNCTION_TABLE_iiii = [b1,b1,___stdout_write,___stdio_seek,___stdio_write,b1,b1,b1]; + return { + ___errno_location: ___errno_location, + ___muldi3: ___muldi3, + _bitshift64Ashr: _bitshift64Ashr, + _bitshift64Lshr: _bitshift64Lshr, + _bitshift64Shl: _bitshift64Shl, + _fflush: _fflush, + _free: _free, + _i64Add: _i64Add, + _i64Subtract: _i64Subtract, + _malloc: _malloc, + _memcpy: _memcpy, + _memset: _memset, + _sbrk: _sbrk, + _sc_reduce32: _sc_reduce32, + dynCall_ii: dynCall_ii, + dynCall_iiii: dynCall_iiii, + establishStackSpace: establishStackSpace, + getTempRet0: getTempRet0, + runPostSets: runPostSets, + setTempRet0: setTempRet0, + setThrew: setThrew, + stackAlloc: stackAlloc, + stackRestore: stackRestore, + stackSave: stackSave, + }; +})( + // EMSCRIPTEN_END_ASM + Module.asmGlobalArg, + Module.asmLibraryArg, + buffer +); - return { ___errno_location: ___errno_location, ___muldi3: ___muldi3, _bitshift64Ashr: _bitshift64Ashr, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _free: _free, _i64Add: _i64Add, _i64Subtract: _i64Subtract, _malloc: _malloc, _memcpy: _memcpy, _memset: _memset, _sbrk: _sbrk, _sc_reduce32: _sc_reduce32, dynCall_ii: dynCall_ii, dynCall_iiii: dynCall_iiii, establishStackSpace: establishStackSpace, getTempRet0: getTempRet0, runPostSets: runPostSets, setTempRet0: setTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackRestore: stackRestore, stackSave: stackSave }; -}) -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg, Module.asmLibraryArg, buffer); - -var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real____errno_location = asm['___errno_location']; +asm['___errno_location'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real____errno_location.apply(null, arguments); }; -var real____muldi3 = asm["___muldi3"]; asm["___muldi3"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real____muldi3 = asm['___muldi3']; +asm['___muldi3'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real____muldi3.apply(null, arguments); }; -var real__bitshift64Ashr = asm["_bitshift64Ashr"]; asm["_bitshift64Ashr"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__bitshift64Ashr = asm['_bitshift64Ashr']; +asm['_bitshift64Ashr'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__bitshift64Ashr.apply(null, arguments); }; -var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__bitshift64Lshr = asm['_bitshift64Lshr']; +asm['_bitshift64Lshr'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__bitshift64Lshr.apply(null, arguments); }; -var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__bitshift64Shl = asm['_bitshift64Shl']; +asm['_bitshift64Shl'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__bitshift64Shl.apply(null, arguments); }; -var real__fflush = asm["_fflush"]; asm["_fflush"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__fflush = asm['_fflush']; +asm['_fflush'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__fflush.apply(null, arguments); }; -var real__free = asm["_free"]; asm["_free"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__free = asm['_free']; +asm['_free'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__free.apply(null, arguments); }; -var real__i64Add = asm["_i64Add"]; asm["_i64Add"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__i64Add = asm['_i64Add']; +asm['_i64Add'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__i64Add.apply(null, arguments); }; -var real__i64Subtract = asm["_i64Subtract"]; asm["_i64Subtract"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__i64Subtract = asm['_i64Subtract']; +asm['_i64Subtract'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__i64Subtract.apply(null, arguments); }; -var real__malloc = asm["_malloc"]; asm["_malloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__malloc = asm['_malloc']; +asm['_malloc'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__malloc.apply(null, arguments); }; -var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__sbrk = asm['_sbrk']; +asm['_sbrk'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__sbrk.apply(null, arguments); }; -var real__sc_reduce32 = asm["_sc_reduce32"]; asm["_sc_reduce32"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real__sc_reduce32 = asm['_sc_reduce32']; +asm['_sc_reduce32'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real__sc_reduce32.apply(null, arguments); }; -var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_establishStackSpace = asm['establishStackSpace']; +asm['establishStackSpace'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_establishStackSpace.apply(null, arguments); }; -var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_getTempRet0 = asm['getTempRet0']; +asm['getTempRet0'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_getTempRet0.apply(null, arguments); }; -var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_setTempRet0 = asm['setTempRet0']; +asm['setTempRet0'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_setTempRet0.apply(null, arguments); }; -var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_setThrew = asm['setThrew']; +asm['setThrew'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_setThrew.apply(null, arguments); }; -var real_stackAlloc = asm["stackAlloc"]; asm["stackAlloc"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_stackAlloc = asm['stackAlloc']; +asm['stackAlloc'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_stackAlloc.apply(null, arguments); }; -var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_stackRestore = asm['stackRestore']; +asm['stackRestore'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_stackRestore.apply(null, arguments); }; -var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() { - assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); - assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); +var real_stackSave = asm['stackSave']; +asm['stackSave'] = function() { + assert( + runtimeInitialized, + 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)' + ); + assert( + !runtimeExited, + 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)' + ); return real_stackSave.apply(null, arguments); }; -var ___errno_location = Module["___errno_location"] = asm["___errno_location"]; -var ___muldi3 = Module["___muldi3"] = asm["___muldi3"]; -var _bitshift64Ashr = Module["_bitshift64Ashr"] = asm["_bitshift64Ashr"]; -var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"]; -var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"]; -var _fflush = Module["_fflush"] = asm["_fflush"]; -var _free = Module["_free"] = asm["_free"]; -var _i64Add = Module["_i64Add"] = asm["_i64Add"]; -var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"]; -var _malloc = Module["_malloc"] = asm["_malloc"]; -var _memcpy = Module["_memcpy"] = asm["_memcpy"]; -var _memset = Module["_memset"] = asm["_memset"]; -var _sbrk = Module["_sbrk"] = asm["_sbrk"]; -var _sc_reduce32 = Module["_sc_reduce32"] = asm["_sc_reduce32"]; -var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"]; -var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"]; -var runPostSets = Module["runPostSets"] = asm["runPostSets"]; -var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"]; -var setThrew = Module["setThrew"] = asm["setThrew"]; -var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"]; -var stackRestore = Module["stackRestore"] = asm["stackRestore"]; -var stackSave = Module["stackSave"] = asm["stackSave"]; -var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; -var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; -; - - - +var ___errno_location = (Module['___errno_location'] = + asm['___errno_location']); +var ___muldi3 = (Module['___muldi3'] = asm['___muldi3']); +var _bitshift64Ashr = (Module['_bitshift64Ashr'] = asm['_bitshift64Ashr']); +var _bitshift64Lshr = (Module['_bitshift64Lshr'] = asm['_bitshift64Lshr']); +var _bitshift64Shl = (Module['_bitshift64Shl'] = asm['_bitshift64Shl']); +var _fflush = (Module['_fflush'] = asm['_fflush']); +var _free = (Module['_free'] = asm['_free']); +var _i64Add = (Module['_i64Add'] = asm['_i64Add']); +var _i64Subtract = (Module['_i64Subtract'] = asm['_i64Subtract']); +var _malloc = (Module['_malloc'] = asm['_malloc']); +var _memcpy = (Module['_memcpy'] = asm['_memcpy']); +var _memset = (Module['_memset'] = asm['_memset']); +var _sbrk = (Module['_sbrk'] = asm['_sbrk']); +var _sc_reduce32 = (Module['_sc_reduce32'] = asm['_sc_reduce32']); +var establishStackSpace = (Module['establishStackSpace'] = + asm['establishStackSpace']); +var getTempRet0 = (Module['getTempRet0'] = asm['getTempRet0']); +var runPostSets = (Module['runPostSets'] = asm['runPostSets']); +var setTempRet0 = (Module['setTempRet0'] = asm['setTempRet0']); +var setThrew = (Module['setThrew'] = asm['setThrew']); +var stackAlloc = (Module['stackAlloc'] = asm['stackAlloc']); +var stackRestore = (Module['stackRestore'] = asm['stackRestore']); +var stackSave = (Module['stackSave'] = asm['stackSave']); +var dynCall_ii = (Module['dynCall_ii'] = asm['dynCall_ii']); +var dynCall_iiii = (Module['dynCall_iiii'] = asm['dynCall_iiii']); // === Auto-generated postamble setup entry stuff === Module['asm'] = asm; -if (!Module["intArrayFromString"]) Module["intArrayFromString"] = function() { abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["intArrayToString"]) Module["intArrayToString"] = function() { abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -Module["ccall"] = ccall; -if (!Module["cwrap"]) Module["cwrap"] = function() { abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["setValue"]) Module["setValue"] = function() { abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["getValue"]) Module["getValue"] = function() { abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["allocate"]) Module["allocate"] = function() { abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["getMemory"]) Module["getMemory"] = function() { abort("'getMemory' 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 (!Module["Pointer_stringify"]) Module["Pointer_stringify"] = function() { abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["AsciiToString"]) Module["AsciiToString"] = function() { abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stringToAscii"]) Module["stringToAscii"] = function() { abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["UTF8ArrayToString"]) Module["UTF8ArrayToString"] = function() { abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["UTF8ToString"]) Module["UTF8ToString"] = function() { abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stringToUTF8Array"]) Module["stringToUTF8Array"] = function() { abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stringToUTF8"]) Module["stringToUTF8"] = function() { abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["lengthBytesUTF8"]) Module["lengthBytesUTF8"] = function() { abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["UTF16ToString"]) Module["UTF16ToString"] = function() { abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stringToUTF16"]) Module["stringToUTF16"] = function() { abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["lengthBytesUTF16"]) Module["lengthBytesUTF16"] = function() { abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["UTF32ToString"]) Module["UTF32ToString"] = function() { abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stringToUTF32"]) Module["stringToUTF32"] = function() { abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["lengthBytesUTF32"]) Module["lengthBytesUTF32"] = function() { abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["allocateUTF8"]) Module["allocateUTF8"] = function() { abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stackTrace"]) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["addOnPreRun"]) Module["addOnPreRun"] = function() { abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["addOnInit"]) Module["addOnInit"] = function() { abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["addOnPreMain"]) Module["addOnPreMain"] = function() { abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["addOnExit"]) Module["addOnExit"] = function() { abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["addOnPostRun"]) Module["addOnPostRun"] = function() { abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["writeStringToMemory"]) Module["writeStringToMemory"] = function() { abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["writeArrayToMemory"]) Module["writeArrayToMemory"] = function() { abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["writeAsciiToMemory"]) Module["writeAsciiToMemory"] = function() { abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!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 (!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 (!Module["ENV"]) Module["ENV"] = function() { abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["FS"]) Module["FS"] = function() { abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["FS_createFolder"]) Module["FS_createFolder"] = function() { abort("'FS_createFolder' 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 (!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 (!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 (!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 (!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 (!Module["FS_createLink"]) Module["FS_createLink"] = function() { abort("'FS_createLink' 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 (!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 (!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 (!Module["GL"]) Module["GL"] = function() { abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["staticAlloc"]) Module["staticAlloc"] = function() { abort("'staticAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["dynamicAlloc"]) Module["dynamicAlloc"] = function() { abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["warnOnce"]) Module["warnOnce"] = function() { abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["loadDynamicLibrary"]) Module["loadDynamicLibrary"] = function() { abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["loadWebAssemblyModule"]) Module["loadWebAssemblyModule"] = function() { abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["getLEB"]) Module["getLEB"] = function() { abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["getFunctionTables"]) Module["getFunctionTables"] = function() { abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["alignFunctionTables"]) Module["alignFunctionTables"] = function() { abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["registerFunctions"]) Module["registerFunctions"] = function() { abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["addFunction"]) Module["addFunction"] = function() { abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["removeFunction"]) Module["removeFunction"] = function() { abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["getFuncWrapper"]) Module["getFuncWrapper"] = function() { abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["prettyPrint"]) Module["prettyPrint"] = function() { abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["makeBigInt"]) Module["makeBigInt"] = function() { abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["dynCall"]) Module["dynCall"] = function() { abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["getCompilerSetting"]) Module["getCompilerSetting"] = function() { abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stackSave"]) Module["stackSave"] = function() { abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stackRestore"]) Module["stackRestore"] = function() { abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["stackAlloc"]) Module["stackAlloc"] = function() { abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["establishStackSpace"]) Module["establishStackSpace"] = function() { abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["print"]) Module["print"] = function() { abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["printErr"]) Module["printErr"] = function() { abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["intArrayFromBase64"]) Module["intArrayFromBase64"] = function() { abort("'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; -if (!Module["tryParseAsDataURI"]) Module["tryParseAsDataURI"] = function() { abort("'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") };if (!Module["ALLOC_NORMAL"]) Object.defineProperty(Module, "ALLOC_NORMAL", { get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Module["ALLOC_STACK"]) Object.defineProperty(Module, "ALLOC_STACK", { get: function() { abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Module["ALLOC_STATIC"]) Object.defineProperty(Module, "ALLOC_STATIC", { get: function() { abort("'ALLOC_STATIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Module["ALLOC_DYNAMIC"]) Object.defineProperty(Module, "ALLOC_DYNAMIC", { get: function() { abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); -if (!Module["ALLOC_NONE"]) Object.defineProperty(Module, "ALLOC_NONE", { get: function() { abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Module['intArrayFromString']) + Module['intArrayFromString'] = function() { + abort( + "'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['intArrayToString']) + Module['intArrayToString'] = function() { + abort( + "'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +Module['ccall'] = ccall; +if (!Module['cwrap']) + Module['cwrap'] = function() { + abort( + "'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['setValue']) + Module['setValue'] = function() { + abort( + "'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['getValue']) + Module['getValue'] = function() { + abort( + "'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['allocate']) + Module['allocate'] = function() { + abort( + "'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['getMemory']) + Module['getMemory'] = function() { + abort( + "'getMemory' 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 (!Module['Pointer_stringify']) + Module['Pointer_stringify'] = function() { + abort( + "'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['AsciiToString']) + Module['AsciiToString'] = function() { + abort( + "'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stringToAscii']) + Module['stringToAscii'] = function() { + abort( + "'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['UTF8ArrayToString']) + Module['UTF8ArrayToString'] = function() { + abort( + "'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['UTF8ToString']) + Module['UTF8ToString'] = function() { + abort( + "'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stringToUTF8Array']) + Module['stringToUTF8Array'] = function() { + abort( + "'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stringToUTF8']) + Module['stringToUTF8'] = function() { + abort( + "'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['lengthBytesUTF8']) + Module['lengthBytesUTF8'] = function() { + abort( + "'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['UTF16ToString']) + Module['UTF16ToString'] = function() { + abort( + "'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stringToUTF16']) + Module['stringToUTF16'] = function() { + abort( + "'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['lengthBytesUTF16']) + Module['lengthBytesUTF16'] = function() { + abort( + "'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['UTF32ToString']) + Module['UTF32ToString'] = function() { + abort( + "'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stringToUTF32']) + Module['stringToUTF32'] = function() { + abort( + "'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['lengthBytesUTF32']) + Module['lengthBytesUTF32'] = function() { + abort( + "'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['allocateUTF8']) + Module['allocateUTF8'] = function() { + abort( + "'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stackTrace']) + Module['stackTrace'] = function() { + abort( + "'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['addOnPreRun']) + Module['addOnPreRun'] = function() { + abort( + "'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['addOnInit']) + Module['addOnInit'] = function() { + abort( + "'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['addOnPreMain']) + Module['addOnPreMain'] = function() { + abort( + "'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['addOnExit']) + Module['addOnExit'] = function() { + abort( + "'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['addOnPostRun']) + Module['addOnPostRun'] = function() { + abort( + "'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['writeStringToMemory']) + Module['writeStringToMemory'] = function() { + abort( + "'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['writeArrayToMemory']) + Module['writeArrayToMemory'] = function() { + abort( + "'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['writeAsciiToMemory']) + Module['writeAsciiToMemory'] = function() { + abort( + "'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!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 (!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 (!Module['ENV']) + Module['ENV'] = function() { + abort( + "'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['FS']) + Module['FS'] = function() { + abort( + "'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['FS_createFolder']) + Module['FS_createFolder'] = function() { + abort( + "'FS_createFolder' 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 (!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 (!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 (!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 (!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 (!Module['FS_createLink']) + Module['FS_createLink'] = function() { + abort( + "'FS_createLink' 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 (!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 (!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 (!Module['GL']) + Module['GL'] = function() { + abort( + "'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['staticAlloc']) + Module['staticAlloc'] = function() { + abort( + "'staticAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['dynamicAlloc']) + Module['dynamicAlloc'] = function() { + abort( + "'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['warnOnce']) + Module['warnOnce'] = function() { + abort( + "'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['loadDynamicLibrary']) + Module['loadDynamicLibrary'] = function() { + abort( + "'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['loadWebAssemblyModule']) + Module['loadWebAssemblyModule'] = function() { + abort( + "'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['getLEB']) + Module['getLEB'] = function() { + abort( + "'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['getFunctionTables']) + Module['getFunctionTables'] = function() { + abort( + "'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['alignFunctionTables']) + Module['alignFunctionTables'] = function() { + abort( + "'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['registerFunctions']) + Module['registerFunctions'] = function() { + abort( + "'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['addFunction']) + Module['addFunction'] = function() { + abort( + "'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['removeFunction']) + Module['removeFunction'] = function() { + abort( + "'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['getFuncWrapper']) + Module['getFuncWrapper'] = function() { + abort( + "'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['prettyPrint']) + Module['prettyPrint'] = function() { + abort( + "'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['makeBigInt']) + Module['makeBigInt'] = function() { + abort( + "'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['dynCall']) + Module['dynCall'] = function() { + abort( + "'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['getCompilerSetting']) + Module['getCompilerSetting'] = function() { + abort( + "'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stackSave']) + Module['stackSave'] = function() { + abort( + "'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stackRestore']) + Module['stackRestore'] = function() { + abort( + "'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['stackAlloc']) + Module['stackAlloc'] = function() { + abort( + "'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['establishStackSpace']) + Module['establishStackSpace'] = function() { + abort( + "'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['print']) + Module['print'] = function() { + abort( + "'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['printErr']) + Module['printErr'] = function() { + abort( + "'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['intArrayFromBase64']) + Module['intArrayFromBase64'] = function() { + abort( + "'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['tryParseAsDataURI']) + Module['tryParseAsDataURI'] = function() { + abort( + "'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }; +if (!Module['ALLOC_NORMAL']) + Object.defineProperty(Module, 'ALLOC_NORMAL', { + get: function() { + abort( + "'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }, + }); +if (!Module['ALLOC_STACK']) + Object.defineProperty(Module, 'ALLOC_STACK', { + get: function() { + abort( + "'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }, + }); +if (!Module['ALLOC_STATIC']) + Object.defineProperty(Module, 'ALLOC_STATIC', { + get: function() { + abort( + "'ALLOC_STATIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }, + }); +if (!Module['ALLOC_DYNAMIC']) + Object.defineProperty(Module, 'ALLOC_DYNAMIC', { + get: function() { + abort( + "'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }, + }); +if (!Module['ALLOC_NONE']) + Object.defineProperty(Module, 'ALLOC_NONE', { + get: function() { + abort( + "'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)" + ); + }, + }); if (memoryInitializer) { if (!isDataURI(memoryInitializer)) { @@ -8504,25 +13594,32 @@ if (memoryInitializer) { var applyMemoryInitializer = function(data) { if (data.byteLength) data = new Uint8Array(data); for (var i = 0; i < data.length; i++) { - assert(HEAPU8[GLOBAL_BASE + i] === 0, "area for memory initializer should not have been touched before it's loaded"); + assert( + HEAPU8[GLOBAL_BASE + i] === 0, + "area for memory initializer should not have been touched before it's loaded" + ); } HEAPU8.set(data, GLOBAL_BASE); // Delete the typed array that contains the large blob of the memory initializer request response so that // we won't keep unnecessary memory lying around. However, keep the XHR object itself alive so that e.g. // its .status field can still be accessed later. - if (Module['memoryInitializerRequest']) delete Module['memoryInitializerRequest'].response; + if (Module['memoryInitializerRequest']) + delete Module['memoryInitializerRequest'].response; removeRunDependency('memory initializer'); - } + }; function doBrowserLoad() { - Module['readAsync'](memoryInitializer, applyMemoryInitializer, function() { - throw 'could not load memory initializer ' + memoryInitializer; - }); + Module['readAsync']( + memoryInitializer, + applyMemoryInitializer, + function() { + throw 'could not load memory initializer ' + memoryInitializer; + } + ); } var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer); if (memoryInitializerBytes) { applyMemoryInitializer(memoryInitializerBytes.buffer); - } else - if (Module['memoryInitializerRequest']) { + } else if (Module['memoryInitializerRequest']) { // a network request has already been created, just use that function useRequest() { var request = Module['memoryInitializerRequest']; @@ -8535,7 +13632,12 @@ if (memoryInitializer) { // If you see this warning, the issue may be that you are using locateFile and defining it in JS. That // means that the HTML file doesn't know about it, and when it tries to create the mem init request early, does it to the wrong place. // Look in your browser's devtools network console to see what's going on. - console.warn('a problem seems to have happened with Module.memoryInitializerRequest, status: ' + request.status + ', retrying ' + memoryInitializer); + console.warn( + 'a problem seems to have happened with Module.memoryInitializerRequest, status: ' + + request.status + + ', retrying ' + + memoryInitializer + ); doBrowserLoad(); return; } @@ -8554,18 +13656,16 @@ if (memoryInitializer) { } } - - /** * @constructor * @extends {Error} * @this {ExitStatus} */ function ExitStatus(status) { - this.name = "ExitStatus"; - this.message = "Program terminated with exit(" + status + ")"; + this.name = 'ExitStatus'; + this.message = 'Program terminated with exit(' + status + ')'; this.status = status; -}; +} ExitStatus.prototype = new Error(); ExitStatus.prototype.constructor = ExitStatus; @@ -8576,11 +13676,7 @@ dependenciesFulfilled = function runCaller() { // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) if (!Module['calledRun']) run(); if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -} - - - - +}; /** @type {function(Array=)} */ function run(args) { @@ -8609,7 +13705,10 @@ function run(args) { if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); + assert( + !Module['_main'], + 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]' + ); postRun(); } @@ -8646,15 +13745,18 @@ function checkUnflushedContent() { var has = false; out = err = function(x) { has = true; - } - try { // it doesn't matter if it fails + }; + try { + // it doesn't matter if it fails var flush = flush_NO_FILESYSTEM; if (flush) flush(0); - } catch(e) {} + } catch (e) {} out = print; err = printErr; 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.'); + 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.' + ); } } @@ -8672,10 +13774,13 @@ function exit(status, implicit) { if (Module['noExitRuntime']) { // if exit() was called, we may warn the user if the runtime isn't actually being shut down if (!implicit) { - err('exit(' + status + ') called, 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)'); + err( + 'exit(' + + status + + ') called, 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)' + ); } } else { - ABORT = true; EXITSTATUS = status; STACKTOP = initialStackTop; @@ -8698,7 +13803,7 @@ function abort(what) { if (what !== undefined) { out(what); err(what); - what = JSON.stringify(what) + what = JSON.stringify(what); } else { what = ''; } @@ -8718,22 +13823,15 @@ function abort(what) { Module['abort'] = abort; if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + if (typeof Module['preInit'] == 'function') + Module['preInit'] = [Module['preInit']]; while (Module['preInit'].length > 0) { Module['preInit'].pop()(); } } - -Module["noExitRuntime"] = true; +Module['noExitRuntime'] = true; run(); - - - - // {{MODULE_ADDITIONS}} - - - diff --git a/libloki/service_nodes.js b/libloki/service_nodes.js index 1c0ff8aaf..a6bb793d1 100644 --- a/libloki/service_nodes.js +++ b/libloki/service_nodes.js @@ -1,10 +1,10 @@ /* global window */ // eslint-disable-next-line func-names -(function () { +(function() { window.libloki = window.libloki || {}; - function consolidateLists(lists, threshold, selector = (x) => x){ + function consolidateLists(lists, threshold, selector = x => x) { if (typeof threshold !== 'number') { throw Error('Provided threshold is not a number'); } diff --git a/libloki/storage.js b/libloki/storage.js index a71676698..e8870795c 100644 --- a/libloki/storage.js +++ b/libloki/storage.js @@ -1,7 +1,7 @@ /* global window, libsignal, textsecure */ // eslint-disable-next-line func-names -(function () { +(function() { window.libloki = window.libloki || {}; async function getPreKeyBundleForContact(pubKey) { @@ -107,14 +107,16 @@ }; store.loadContactPreKey = async pubKey => { - const preKey = await window.Signal.Data.getContactPreKeyByIdentityKey(pubKey); + const preKey = await window.Signal.Data.getContactPreKeyByIdentityKey( + pubKey + ); if (preKey) { return { id: preKey.id, keyId: preKey.keyId, publicKey: preKey.publicKey, identityKeyString: preKey.identityKeyString, - } + }; } window.log.warn('Failed to fetch contact prekey:', pubKey); @@ -123,7 +125,10 @@ store.loadContactPreKeys = async filters => { const { keyId, identityKeyString } = filters; - const keys = await window.Signal.Data.getContactPreKeys(keyId, identityKeyString); + const keys = await window.Signal.Data.getContactPreKeys( + keyId, + identityKeyString + ); if (keys) { return keys.map(preKey => ({ id: preKey.id, @@ -133,10 +138,7 @@ })); } - window.log.warn( - 'Failed to fetch signed prekey with filters', - filters - ); + window.log.warn('Failed to fetch signed prekey with filters', filters); return undefined; }; @@ -162,7 +164,9 @@ }; store.loadContactSignedPreKey = async pubKey => { - const preKey = await window.Signal.Data.getContactSignedPreKeyByIdentityKey(pubKey); + const preKey = await window.Signal.Data.getContactSignedPreKeyByIdentityKey( + pubKey + ); if (preKey) { return { id: preKey.id, @@ -180,7 +184,10 @@ store.loadContactSignedPreKeys = async filters => { const { keyId, identityKeyString } = filters; - const keys = await window.Signal.Data.getContactSignedPreKeys(keyId, identityKeyString); + const keys = await window.Signal.Data.getContactSignedPreKeys( + keyId, + identityKeyString + ); if (keys) { return keys.map(preKey => ({ id: preKey.id, diff --git a/libloki/test/crypto_test.js b/libloki/test/crypto_test.js index 15dfa02f0..0a6210368 100644 --- a/libloki/test/crypto_test.js +++ b/libloki/test/crypto_test.js @@ -15,21 +15,21 @@ describe('Crypto', () => { store.put('identityKey', identityKey); const key = libsignal.crypto.getRandomBytes(32); const pubKeyString = StringView.arrayBufferToHex(key); - address = new libsignal.SignalProtocolAddress( - pubKeyString, - 1 - ); + address = new libsignal.SignalProtocolAddress(pubKeyString, 1); fallbackCipher = new libloki.crypto.FallBackSessionCipher(address); }); it('should encrypt fallback cipher messages as friend requests', async () => { const buffer = new ArrayBuffer(10); const { type } = await fallbackCipher.encrypt(buffer); - assert.strictEqual(type, textsecure.protobuf.Envelope.Type.FRIEND_REQUEST); + assert.strictEqual( + type, + textsecure.protobuf.Envelope.Type.FRIEND_REQUEST + ); }); it('should encrypt and then decrypt a message with the same result', async () => { - const arr = new Uint8Array([1,2,3,4,5]); + const arr = new Uint8Array([1, 2, 3, 4, 5]); const { body } = await fallbackCipher.encrypt(arr.buffer); const result = await fallbackCipher.decrypt(body); assert.deepEqual(result, arr.buffer); diff --git a/libloki/test/metrics.js b/libloki/test/metrics.js index 2cbe75d9c..9614a54ef 100644 --- a/libloki/test/metrics.js +++ b/libloki/test/metrics.js @@ -1,13 +1,17 @@ /* global dcodeIO, Plotly */ let jobId = 0; -let currentTrace = 0 +let currentTrace = 0; let plotlyDiv; const workers = []; async function run(messageLength, numWorkers = 1, nonceTrials = 100, ttl = 72) { const timestamp = Math.floor(Date.now() / 1000); - const pubKey = '05ec8635a07a13743516c7c9b3412f3e8252efb7fcaf67eb1615ffba62bebc6802'; + const pubKey = + '05ec8635a07a13743516c7c9b3412f3e8252efb7fcaf67eb1615ffba62bebc6802'; const message = randomString(messageLength); - const messageBuffer = dcodeIO.ByteBuffer.wrap(message, 'utf8').toArrayBuffer(); + const messageBuffer = dcodeIO.ByteBuffer.wrap( + message, + 'utf8' + ).toArrayBuffer(); const data = dcodeIO.ByteBuffer.wrap(messageBuffer).toString('base64'); const promises = []; const t0 = performance.now(); @@ -17,9 +21,20 @@ async function run(messageLength, numWorkers = 1, nonceTrials = 100, ttl = 72) { jobId += 1; const increment = numWorkers; const index = w; - worker.postMessage([jobId, 'calcPoW', timestamp, ttl * 60 * 60, pubKey, data, false, nonceTrials, increment, index]); + worker.postMessage([ + jobId, + 'calcPoW', + timestamp, + ttl * 60 * 60, + pubKey, + data, + false, + nonceTrials, + increment, + index, + ]); const p = new Promise(resolve => { - worker.onmessage = (nonce) => { + worker.onmessage = nonce => { resolve(nonce); }; }); @@ -33,9 +48,15 @@ async function run(messageLength, numWorkers = 1, nonceTrials = 100, ttl = 72) { workers.forEach(worker => worker.terminate()); } -async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50, ttl = 72 }) { +async function runPoW({ + iteration, + nonceTrials, + numWorkers, + messageLength = 50, + ttl = 72, +}) { const name = `W:${numWorkers} - NT: ${nonceTrials} - L:${messageLength} - TTL:${ttl}`; - Plotly.addTraces(plotlyDiv ,{ + Plotly.addTraces(plotlyDiv, { y: [], type: 'box', boxpoints: 'all', @@ -46,84 +67,148 @@ async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50, await run(messageLength, numWorkers, nonceTrials, ttl); } currentTrace += 1; + + // eslint-disable-next-line console.log(`done for ${name}`); } - function randomString(length) { let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const possible = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (let i = 0; i < length; i += 1) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; } function addPoint(duration) { - Plotly.extendTraces(plotlyDiv, {y: [[duration]]}, [currentTrace]); + Plotly.extendTraces(plotlyDiv, { y: [[duration]] }, [currentTrace]); } async function startMessageLengthRun() { const iteration0 = parseFloat(document.getElementById('iteration0').value); - const nonceTrials0 = parseFloat(document.getElementById('nonceTrials0').value); + const nonceTrials0 = parseFloat( + document.getElementById('nonceTrials0').value + ); const numWorkers0 = parseFloat(document.getElementById('numWorkers0').value); - const messageLengthStart0 = parseFloat(document.getElementById('messageLengthStart0').value); - const messageLengthStop0 = parseFloat(document.getElementById('messageLengthStop0').value); - const messageLengthStep0 = parseFloat(document.getElementById('messageLengthStep0').value); + const messageLengthStart0 = parseFloat( + document.getElementById('messageLengthStart0').value + ); + const messageLengthStop0 = parseFloat( + document.getElementById('messageLengthStop0').value + ); + const messageLengthStep0 = parseFloat( + document.getElementById('messageLengthStep0').value + ); const TTL0 = parseFloat(document.getElementById('TTL0').value); - for (let l = messageLengthStart0; l < messageLengthStop0; l += messageLengthStep0) { + for ( + let l = messageLengthStart0; + l < messageLengthStop0; + l += messageLengthStep0 + ) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration0, nonceTrials: nonceTrials0, numWorkers: numWorkers0, messageLength: l, ttl: TTL0 }); + await runPoW({ + iteration: iteration0, + nonceTrials: nonceTrials0, + numWorkers: numWorkers0, + messageLength: l, + ttl: TTL0, + }); } } async function startNumWorkerRun() { const iteration1 = parseFloat(document.getElementById('iteration1').value); - const nonceTrials1 = parseFloat(document.getElementById('nonceTrials1').value); - const numWorkersStart1 = parseFloat(document.getElementById('numWorkersStart1').value); - const numWorkersEnd1 = parseFloat(document.getElementById('numWorkersEnd1').value); - const messageLength1 = parseFloat(document.getElementById('messageLength1').value); + const nonceTrials1 = parseFloat( + document.getElementById('nonceTrials1').value + ); + const numWorkersStart1 = parseFloat( + document.getElementById('numWorkersStart1').value + ); + const numWorkersEnd1 = parseFloat( + document.getElementById('numWorkersEnd1').value + ); + const messageLength1 = parseFloat( + document.getElementById('messageLength1').value + ); const TTL1 = parseFloat(document.getElementById('TTL1').value); - for (let numWorkers = numWorkersStart1; numWorkers <= numWorkersEnd1; numWorkers +=1) { + for ( + let numWorkers = numWorkersStart1; + numWorkers <= numWorkersEnd1; + numWorkers += 1 + ) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration1, nonceTrials: nonceTrials1, numWorkers, messageLength: messageLength1, ttl: TTL1 }); + await runPoW({ + iteration: iteration1, + nonceTrials: nonceTrials1, + numWorkers, + messageLength: messageLength1, + ttl: TTL1, + }); } } async function startNonceTrialsRun() { const iteration2 = parseFloat(document.getElementById('iteration2').value); - const messageLength2 = parseFloat(document.getElementById('messageLength2').value); + const messageLength2 = parseFloat( + document.getElementById('messageLength2').value + ); const numWorkers2 = parseFloat(document.getElementById('numWorkers2').value); - const nonceTrialsStart2 = parseFloat(document.getElementById('nonceTrialsStart2').value); - const nonceTrialsStop2 = parseFloat(document.getElementById('nonceTrialsStop2').value); - const nonceTrialsStep2 = parseFloat(document.getElementById('nonceTrialsStep2').value); + const nonceTrialsStart2 = parseFloat( + document.getElementById('nonceTrialsStart2').value + ); + const nonceTrialsStop2 = parseFloat( + document.getElementById('nonceTrialsStop2').value + ); + const nonceTrialsStep2 = parseFloat( + document.getElementById('nonceTrialsStep2').value + ); const TTL2 = parseFloat(document.getElementById('TTL2').value); for (let n = nonceTrialsStart2; n < nonceTrialsStop2; n += nonceTrialsStep2) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration2, nonceTrials: n, numWorkers: numWorkers2, messageLength: messageLength2, ttl: TTL2 }); + await runPoW({ + iteration: iteration2, + nonceTrials: n, + numWorkers: numWorkers2, + messageLength: messageLength2, + ttl: TTL2, + }); } } async function starTTLRun() { const iteration3 = parseFloat(document.getElementById('iteration3').value); - const nonceTrials3 = parseFloat(document.getElementById('nonceTrials3').value); - const messageLength3 = parseFloat(document.getElementById('messageLength3').value); + const nonceTrials3 = parseFloat( + document.getElementById('nonceTrials3').value + ); + const messageLength3 = parseFloat( + document.getElementById('messageLength3').value + ); const numWorkers3 = parseFloat(document.getElementById('numWorkers3').value); const TTLStart3 = parseFloat(document.getElementById('TTLStart3').value); const TTLStop3 = parseFloat(document.getElementById('TTLStop3').value); const TTLStep3 = parseFloat(document.getElementById('TTLStep3').value); for (let ttl = TTLStart3; ttl < TTLStop3; ttl += TTLStep3) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration3, nonceTrials: nonceTrials3, numWorkers: numWorkers3, messageLength: messageLength3, ttl }); + await runPoW({ + iteration: iteration3, + nonceTrials: nonceTrials3, + numWorkers: numWorkers3, + messageLength: messageLength3, + ttl, + }); } } + +// eslint-disable-next-line no-unused-vars async function start(index) { const data = []; const layout = {}; const options = { responsive: true, }; - plotlyDiv =`plotly${index}`; + plotlyDiv = `plotly${index}`; currentTrace = 0; window.chart = Plotly.newPlot(plotlyDiv, data, layout, options); workers.forEach(worker => worker.terminate()); - switch(index) { + switch (index) { case 0: await startMessageLengthRun(); break; diff --git a/libloki/test/proof-of-work_test.js b/libloki/test/proof-of-work_test.js index 68a85ea19..06ec6bc38 100644 --- a/libloki/test/proof-of-work_test.js +++ b/libloki/test/proof-of-work_test.js @@ -11,7 +11,7 @@ const { describe('Proof of Work', () => { describe('#incrementNonce', () => { it('should increment a Uint8Array nonce correctly', () => { - const arr1Before = new Uint8Array([0,0,0,0,0,0,0,0]); + const arr1Before = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]); const arr1After = incrementNonce(arr1Before); assert.strictEqual(arr1After[0], 0); assert.strictEqual(arr1After[1], 0); @@ -24,15 +24,21 @@ describe('Proof of Work', () => { }); it('should increment a Uint8Array nonce correctly in a loop', () => { - let arr = new Uint8Array([0,0,0,0,0,0,0,0]); - assert.deepEqual(incrementNonce(arr), new Uint8Array([0,0,0,0,0,0,0,1])); - arr = new Uint8Array([0,0,0,0,0,0,0,0]); - for(let i = 0; i <= 255; i += 1) { + let arr = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]); + assert.deepEqual( + incrementNonce(arr), + new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]) + ); + arr = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]); + for (let i = 0; i <= 255; i += 1) { arr = incrementNonce(arr); } - assert.deepEqual(arr, new Uint8Array([0,0,0,0,0,0,1,0])); - arr = new Uint8Array([255,255,255,255,255,255,255,255]); - assert.deepEqual(incrementNonce(arr), new Uint8Array([0,0,0,0,0,0,0,0])); + assert.deepEqual(arr, new Uint8Array([0, 0, 0, 0, 0, 0, 1, 0])); + arr = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]); + assert.deepEqual( + incrementNonce(arr), + new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]) + ); }); }); @@ -41,12 +47,12 @@ describe('Proof of Work', () => { // These values will need to be updated if we adjust the difficulty settings let payloadLen = 625; const ttl = 86400; - let expectedTarget = new Uint8Array([0,4,119,164,35,224,222,64]); + let expectedTarget = new Uint8Array([0, 4, 119, 164, 35, 224, 222, 64]); let actualTarget = calcTarget(ttl, payloadLen, 10); assert.deepEqual(actualTarget, expectedTarget); payloadLen = 6597; - expectedTarget = new Uint8Array([0,0,109,145,174,146,124,3]); + expectedTarget = new Uint8Array([0, 0, 109, 145, 174, 146, 124, 3]); actualTarget = calcTarget(ttl, payloadLen, 10); assert.deepEqual(actualTarget, expectedTarget); }); @@ -54,30 +60,30 @@ describe('Proof of Work', () => { describe('#greaterThan', () => { it('should correclty compare two Uint8Arrays', () => { - let arr1 = new Uint8Array([0,0,0,0,0,0,0,0,0,1]); - let arr2 = new Uint8Array([0,0,0,0,0,0,0,0,0,1]); - assert.isFalse(greaterThan(arr1, arr2)) - arr1 = new Uint8Array([0,0,0,0,0,0,0,0,0,2]); - arr2 = new Uint8Array([0,0,0,0,0,0,0,0,0,1]); - assert.isTrue(greaterThan(arr1, arr2)) - arr1 = new Uint8Array([255,255,255,255,255,255,255,255,255,255]); - arr2 = new Uint8Array([255,255,255,255,255,255,255,255,255,254]); - assert.isTrue(greaterThan(arr1, arr2)) - arr1 = new Uint8Array([254,255,255,255,255,255,255,255,255,255]); - arr2 = new Uint8Array([255,255,255,255,255,255,255,255,255,255]); + let arr1 = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); + let arr2 = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); + assert.isFalse(greaterThan(arr1, arr2)); + arr1 = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 2]); + arr2 = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); + assert.isTrue(greaterThan(arr1, arr2)); + arr1 = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255]); + arr2 = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 254]); + assert.isTrue(greaterThan(arr1, arr2)); + arr1 = new Uint8Array([254, 255, 255, 255, 255, 255, 255, 255, 255, 255]); + arr2 = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255]); assert.isFalse(greaterThan(arr1, arr2)); arr1 = new Uint8Array([0]); - arr2 = new Uint8Array([0,0]); - assert.isFalse(greaterThan(arr1, arr2)) + arr2 = new Uint8Array([0, 0]); + assert.isFalse(greaterThan(arr1, arr2)); }); }); describe('#bufferToBase64', () => { it('should correclty convert a Uint8Array to a base64 string', () => { - let arr = new Uint8Array([1,2,3]); + let arr = new Uint8Array([1, 2, 3]); let expected = 'AQID'; assert.strictEqual(bufferToBase64(arr), expected); - arr = new Uint8Array([123,25,3,121,45,87,24,111]); + arr = new Uint8Array([123, 25, 3, 121, 45, 87, 24, 111]); expected = 'exkDeS1XGG8='; assert.strictEqual(bufferToBase64(arr), expected); arr = new Uint8Array([]); diff --git a/libloki/test/service_nodes_test.js b/libloki/test/service_nodes_test.js index 59636743a..be0d0a1a0 100644 --- a/libloki/test/service_nodes_test.js +++ b/libloki/test/service_nodes_test.js @@ -3,11 +3,17 @@ describe('ServiceNodes', () => { describe('#consolidateLists', () => { it('should throw when provided a non-iterable list', () => { - assert.throws(() => libloki.serviceNodes.consolidateLists(null, 1), Error); + assert.throws( + () => libloki.serviceNodes.consolidateLists(null, 1), + Error + ); }); it('should throw when provided a non-iterable item in the list', () => { - assert.throws(() => libloki.serviceNodes.consolidateLists([1, 2, 3], 1), Error); + assert.throws( + () => libloki.serviceNodes.consolidateLists([1, 2, 3], 1), + Error + ); }); it('should throw when provided a non-number threshold', () => { @@ -19,10 +25,10 @@ describe('ServiceNodes', () => { it('should throw when provided a non-function selector', () => { [1, 'a', 0xffffffff, { really: 'not a function' }].forEach(x => { - assert.throws(() => - libloki.serviceNodes.consolidateLists([], 1, x), + assert.throws( + () => libloki.serviceNodes.consolidateLists([], 1, x), 'Provided selector is not a function' - ) + ); }); }); @@ -32,64 +38,85 @@ describe('ServiceNodes', () => { }); it('should return the input when only 1 list is provided', () => { - const result = libloki.serviceNodes.consolidateLists([['a', 'b', 'c']], 1); + const result = libloki.serviceNodes.consolidateLists( + [['a', 'b', 'c']], + 1 + ); assert.deepEqual(result, ['a', 'b', 'c']); }); it('should return the union of all lists when threshold is 0', () => { - const result = libloki.serviceNodes.consolidateLists([ - ['a', 'b', 'c', 'h'], - ['d', 'e', 'f', 'g'], - ['g', 'h'], - ], 0); + const result = libloki.serviceNodes.consolidateLists( + [['a', 'b', 'c', 'h'], ['d', 'e', 'f', 'g'], ['g', 'h']], + 0 + ); assert.deepEqual(result.sort(), ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']); }); it('should use the selector to identify the elements', () => { - const result = libloki.serviceNodes.consolidateLists([ - [{ id: 1, val: 'a'}, { id: 2, val: 'b'}, { id: 3, val: 'c'}, { id: 8, val: 'h'}], - [{ id: 4, val: 'd'}, { id: 5, val: 'e'}, { id: 6, val: 'f'}, { id: 7, val: 'g'}], - [{ id: 7, val: 'g'}, { id: 8, val: 'h'}], - ], 0, x => x.id); + const result = libloki.serviceNodes.consolidateLists( + [ + [ + { id: 1, val: 'a' }, + { id: 2, val: 'b' }, + { id: 3, val: 'c' }, + { id: 8, val: 'h' }, + ], + [ + { id: 4, val: 'd' }, + { id: 5, val: 'e' }, + { id: 6, val: 'f' }, + { id: 7, val: 'g' }, + ], + [{ id: 7, val: 'g' }, { id: 8, val: 'h' }], + ], + 0, + x => x.id + ); const expected = [ - { id: 1, val: 'a'}, - { id: 2, val: 'b'}, - { id: 3, val: 'c'}, - { id: 4, val: 'd'}, - { id: 5, val: 'e'}, - { id: 6, val: 'f'}, - { id: 7, val: 'g'}, - { id: 8, val: 'h'}, + { id: 1, val: 'a' }, + { id: 2, val: 'b' }, + { id: 3, val: 'c' }, + { id: 4, val: 'd' }, + { id: 5, val: 'e' }, + { id: 6, val: 'f' }, + { id: 7, val: 'g' }, + { id: 8, val: 'h' }, ]; assert.deepEqual(result.sort((a, b) => a.val > b.val), expected); }); it('should return the intersection of all lists when threshold is 1', () => { - const result = libloki.serviceNodes.consolidateLists([ - ['a', 'b', 'c', 'd'], - ['a', 'e', 'f', 'g'], - ['a', 'h'], - ], 1); + const result = libloki.serviceNodes.consolidateLists( + [['a', 'b', 'c', 'd'], ['a', 'e', 'f', 'g'], ['a', 'h']], + 1 + ); assert.deepEqual(result, ['a']); }); it('should return the elements that have an occurence >= the provided threshold', () => { - const result = libloki.serviceNodes.consolidateLists([ - ['a', 'b', 'c', 'd', 'e', 'f', 'g'], - ['a', 'b', 'c', 'd', 'e', 'f', 'h'], - ['a', 'b', 'c', 'd', 'e', 'f', 'g'], - ['a', 'b', 'c', 'd', 'e', 'g', 'h'], - ], 3/4); + const result = libloki.serviceNodes.consolidateLists( + [ + ['a', 'b', 'c', 'd', 'e', 'f', 'g'], + ['a', 'b', 'c', 'd', 'e', 'f', 'h'], + ['a', 'b', 'c', 'd', 'e', 'f', 'g'], + ['a', 'b', 'c', 'd', 'e', 'g', 'h'], + ], + 3 / 4 + ); assert.deepEqual(result, ['a', 'b', 'c', 'd', 'e', 'f', 'g']); }); it('should work with sets as well', () => { - const result = libloki.serviceNodes.consolidateLists(new Set([ - new Set(['a', 'b', 'c', 'd', 'e', 'f', 'g']), - new Set(['a', 'b', 'c', 'd', 'e', 'f', 'h']), - new Set(['a', 'b', 'c', 'd', 'e', 'f', 'g']), - new Set(['a', 'b', 'c', 'd', 'e', 'g', 'h']), - ]), 3/4); + const result = libloki.serviceNodes.consolidateLists( + new Set([ + new Set(['a', 'b', 'c', 'd', 'e', 'f', 'g']), + new Set(['a', 'b', 'c', 'd', 'e', 'f', 'h']), + new Set(['a', 'b', 'c', 'd', 'e', 'f', 'g']), + new Set(['a', 'b', 'c', 'd', 'e', 'g', 'h']), + ]), + 3 / 4 + ); assert.deepEqual(result, ['a', 'b', 'c', 'd', 'e', 'f', 'g']); }); }); diff --git a/libloki/test/storage_test.js b/libloki/test/storage_test.js index dc883f06b..0af07a2bd 100644 --- a/libloki/test/storage_test.js +++ b/libloki/test/storage_test.js @@ -21,7 +21,9 @@ describe('Storage', () => { const pubKey = libsignal.crypto.getRandomBytes(32); const pubKeyString = StringView.arrayBufferToHex(pubKey); const preKeyIdBefore = textsecure.storage.get('maxPreKeyId', 1); - const newBundle = await libloki.storage.getPreKeyBundleForContact(pubKeyString); + const newBundle = await libloki.storage.getPreKeyBundleForContact( + pubKeyString + ); const preKeyIdAfter = textsecure.storage.get('maxPreKeyId', 1); assert.strictEqual(preKeyIdAfter, preKeyIdBefore + 1); @@ -34,16 +36,23 @@ describe('Storage', () => { assert.isDefined(newBundle.preKey); assert.isDefined(newBundle.signedKey); assert.isDefined(newBundle.signature); - assert.strictEqual(testKeyArray.byteLength, newBundle.signedKey.byteLength); - for (let i = 0 ; i !== testKeyArray.byteLength; i += 1) + assert.strictEqual( + testKeyArray.byteLength, + newBundle.signedKey.byteLength + ); + for (let i = 0; i !== testKeyArray.byteLength; i += 1) assert.strictEqual(testKeyArray[i], newBundle.signedKey[i]); }); it('should return the same prekey bundle after creating a contact', async () => { const pubKey = libsignal.crypto.getRandomBytes(32); const pubKeyString = StringView.arrayBufferToHex(pubKey); - const bundle1 = await libloki.storage.getPreKeyBundleForContact(pubKeyString); - const bundle2 = await libloki.storage.getPreKeyBundleForContact(pubKeyString); + const bundle1 = await libloki.storage.getPreKeyBundleForContact( + pubKeyString + ); + const bundle2 = await libloki.storage.getPreKeyBundleForContact( + pubKeyString + ); assert.isDefined(bundle1); assert.isDefined(bundle2); assert.deepEqual(bundle1, bundle2); @@ -53,7 +62,9 @@ describe('Storage', () => { const pubKey = libsignal.crypto.getRandomBytes(32); const pubKeyString = StringView.arrayBufferToHex(pubKey); const preKeyIdBefore = textsecure.storage.get('maxPreKeyId', 1); - const newBundle = await libloki.storage.getPreKeyBundleForContact(pubKeyString); + const newBundle = await libloki.storage.getPreKeyBundleForContact( + pubKeyString + ); const preKeyIdAfter = textsecure.storage.get('maxPreKeyId', 1); assert.strictEqual(preKeyIdAfter, preKeyIdBefore + 1); diff --git a/libtextsecure/account_manager.js b/libtextsecure/account_manager.js index 99bad2969..427744cc3 100644 --- a/libtextsecure/account_manager.js +++ b/libtextsecure/account_manager.js @@ -15,6 +15,8 @@ */ /* eslint-disable more/no-then */ +/* eslint-disable no-unused-vars */ +/* eslint-disable no-await-in-loop */ // eslint-disable-next-line func-names (function() { @@ -70,17 +72,18 @@ generateKeypair = libsignal.KeyHelper.generateIdentityKeyPair; } return this.queueTask(() => - generateKeypair().then(async identityKeyPair => { - return createAccount(identityKeyPair) - .then(() => this.saveMnemonic(mnemonic)) - .then(clearSessionsAndPreKeys) - .then(generateKeys) - .then(confirmKeys) - .then(() => { - const pubKeyString = StringView.arrayBufferToHex(identityKeyPair.pubKey); - registrationDone(pubKeyString, profileName); - }); - } + generateKeypair().then(async identityKeyPair => + createAccount(identityKeyPair) + .then(() => this.saveMnemonic(mnemonic)) + .then(clearSessionsAndPreKeys) + .then(generateKeys) + .then(confirmKeys) + .then(() => { + const pubKeyString = StringView.arrayBufferToHex( + identityKeyPair.pubKey + ); + registrationDone(pubKeyString, profileName); + }) ) ); }, @@ -138,12 +141,13 @@ log.info('Added mock contact'); }, registerSecondDevice(setProvisioningUrl, confirmNumber, progressCallback) { - throw new Error('account_manager: registerSecondDevice has not been implemented!'); + throw new Error( + 'account_manager: registerSecondDevice has not been implemented!' + ); }, refreshPreKeys() { // const generateKeys = this.generateKeys.bind(this, 0); // const registerKeys = this.server.registerKeys.bind(this.server); - // return this.queueTask(() => // this.server.getMyKeys().then(preKeyCount => { // window.log.info(`prekey count ${preKeyCount}`); @@ -312,50 +316,51 @@ password = password.substring(0, password.length - 2); const registrationId = libsignal.KeyHelper.generateRegistrationId(); - // update our own identity key, which may have changed - // if we're relinking after a reinstall on the master device - const pubKeyString = StringView.arrayBufferToHex( - identityKeyPair.pubKey - ); + // update our own identity key, which may have changed + // if we're relinking after a reinstall on the master device + const pubKeyString = StringView.arrayBufferToHex(identityKeyPair.pubKey); return Promise.resolve().then(async () => { - await Promise.all([ - textsecure.storage.remove('identityKey'), - textsecure.storage.remove('signaling_key'), - textsecure.storage.remove('password'), - textsecure.storage.remove('registrationId'), - textsecure.storage.remove('number_id'), - textsecure.storage.remove('device_name'), - textsecure.storage.remove('userAgent'), - textsecure.storage.remove('read-receipts-setting'), - ]); + await Promise.all([ + textsecure.storage.remove('identityKey'), + textsecure.storage.remove('signaling_key'), + textsecure.storage.remove('password'), + textsecure.storage.remove('registrationId'), + textsecure.storage.remove('number_id'), + textsecure.storage.remove('device_name'), + textsecure.storage.remove('userAgent'), + textsecure.storage.remove('read-receipts-setting'), + ]); - // update our own identity key, which may have changed - // if we're relinking after a reinstall on the master device - await textsecure.storage.protocol.saveIdentityWithAttributes(pubKeyString, { + // update our own identity key, which may have changed + // if we're relinking after a reinstall on the master device + await textsecure.storage.protocol.saveIdentityWithAttributes( + pubKeyString, + { id: pubKeyString, publicKey: identityKeyPair.pubKey, firstUse: true, timestamp: Date.now(), verified: textsecure.storage.protocol.VerifiedStatus.VERIFIED, nonblockingApproval: true, - }); - - await textsecure.storage.put('identityKey', identityKeyPair); - await textsecure.storage.put('signaling_key', signalingKey); - await textsecure.storage.put('password', password); - await textsecure.storage.put('registrationId', registrationId); - if (userAgent) { - await textsecure.storage.put('userAgent', userAgent); } + ); - await textsecure.storage.put( - 'read-receipt-setting', - Boolean(readReceipts) - ); + await textsecure.storage.put('identityKey', identityKeyPair); + await textsecure.storage.put('signaling_key', signalingKey); + await textsecure.storage.put('password', password); + await textsecure.storage.put('registrationId', registrationId); + if (userAgent) { + await textsecure.storage.put('userAgent', userAgent); + } - await textsecure.storage.user.setNumberAndDeviceId(pubKeyString, 1); - }); + await textsecure.storage.put( + 'read-receipt-setting', + Boolean(readReceipts) + ); + + await textsecure.storage.user.setNumberAndDeviceId(pubKeyString, 1); + }); }, clearSessionsAndPreKeys() { const store = textsecure.storage.protocol; @@ -462,7 +467,10 @@ window.log.info('registration done'); // Ensure that we always have a conversation for ourself - const conversation = await ConversationController.getOrCreateAndWait(number, 'private'); + const conversation = await ConversationController.getOrCreateAndWait( + number, + 'private' + ); await storage.setProfileName(profileName); diff --git a/libtextsecure/errors.js b/libtextsecure/errors.js index f98b28b61..51c879afe 100644 --- a/libtextsecure/errors.js +++ b/libtextsecure/errors.js @@ -128,17 +128,17 @@ inherit(Error, UnregisteredUserError); function PoWError(number, error) { - // eslint-disable-next-line prefer-destructuring - this.number = number.split('.')[0]; + // eslint-disable-next-line prefer-destructuring + this.number = number.split('.')[0]; - ReplayableError.call(this, { - name: 'PoWError', - message: 'Failed to calculate PoW', - }); + ReplayableError.call(this, { + name: 'PoWError', + message: 'Failed to calculate PoW', + }); - if (error) { - appendStack(this, error); - } + if (error) { + appendStack(this, error); + } } inherit(ReplayableError, PoWError); diff --git a/libtextsecure/http-resources.js b/libtextsecure/http-resources.js index df98603bd..071d0ad32 100644 --- a/libtextsecure/http-resources.js +++ b/libtextsecure/http-resources.js @@ -1,9 +1,9 @@ /* global window, dcodeIO, textsecure */ // eslint-disable-next-line func-names -(function () { +(function() { let server; - const development = (window.getEnvironment() !== 'production'); + const development = window.getEnvironment() !== 'production'; const pollTime = development ? 100 : 5000; function stringToArrayBufferBase64(string) { @@ -42,9 +42,13 @@ }; }; - const filterIncomingMessages = async function filterIncomingMessages(messages) { + const filterIncomingMessages = async function filterIncomingMessages( + messages + ) { const incomingHashes = messages.map(m => m.hash); - const dupHashes = await window.Signal.Data.getSeenMessagesByHashList(incomingHashes); + const dupHashes = await window.Signal.Data.getSeenMessagesByHashList( + incomingHashes + ); const newMessages = messages.filter(m => !dupHashes.includes(m.hash)); const newHashes = newMessages.map(m => ({ expiresAt: m.expiration, @@ -59,7 +63,7 @@ let { handleRequest } = opts; if (typeof handleRequest !== 'function') { handleRequest = request => request.respond(404, 'Not found'); - }; + } let connected = false; const processMessages = async messages => { @@ -67,8 +71,12 @@ newMessages.forEach(async message => { const { data } = message; const dataPlaintext = stringToArrayBufferBase64(data); - const messageBuf = textsecure.protobuf.WebSocketMessage.decode(dataPlaintext); - if (messageBuf.type === textsecure.protobuf.WebSocketMessage.Type.REQUEST) { + const messageBuf = textsecure.protobuf.WebSocketMessage.decode( + dataPlaintext + ); + if ( + messageBuf.type === textsecure.protobuf.WebSocketMessage.Type.REQUEST + ) { handleRequest( new IncomingHttpResponse({ verb: messageBuf.request.verb, @@ -79,7 +87,7 @@ ); } }); - } + }; this.startPolling = async function pollServer(callback) { try { @@ -89,11 +97,13 @@ connected = false; } callback(connected); - setTimeout(() => { pollServer(callback); }, pollTime); + setTimeout(() => { + pollServer(callback); + }, pollTime); }; this.isConnected = function isConnected() { return connected; - } + }; }; })(); diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index d0492ab30..c9325707f 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -70,7 +70,7 @@ MessageReceiver.prototype.extend({ this.httpPollingResource = new HttpResource(this.lokiMessageAPI, { handleRequest: this.handleRequest.bind(this), }); - this.httpPollingResource.startPolling((connected) => { + this.httpPollingResource.startPolling(connected => { // Emulate receiving an 'empty' websocket messages from the server. // This is required to update the internal logic that checks // if we are connected to the server. Without this, for example, @@ -328,7 +328,8 @@ MessageReceiver.prototype.extend({ envelope.sourceDevice = envelope.sourceDevice || item.sourceDevice; envelope.serverTimestamp = envelope.serverTimestamp || item.serverTimestamp; - envelope.preKeyBundleMessage = envelope.preKeyBundleMessage || item.preKeyBundleMessage; + envelope.preKeyBundleMessage = + envelope.preKeyBundleMessage || item.preKeyBundleMessage; const { decrypted } = item; if (decrypted) { @@ -381,7 +382,7 @@ MessageReceiver.prototype.extend({ if (envelope.source) { return `${envelope.source}.${ envelope.sourceDevice - } ${envelope.timestamp.toNumber()} (${envelope.id})`; + } ${envelope.timestamp.toNumber()} (${envelope.id})`; } return envelope.id; @@ -540,7 +541,9 @@ MessageReceiver.prototype.extend({ }, getStatus() { if (this.httpPollingResource) { - return this.httpPollingResource.isConnected() ? WebSocket.OPEN : WebSocket.CLOSED; + return this.httpPollingResource.isConnected() + ? WebSocket.OPEN + : WebSocket.CLOSED; } if (this.socket) { return this.socket.readyState; @@ -616,47 +619,57 @@ MessageReceiver.prototype.extend({ let conversation; try { - conversation = await window.ConversationController.getOrCreateAndWait(envelope.source, 'private'); + conversation = await window.ConversationController.getOrCreateAndWait( + envelope.source, + 'private' + ); } catch (e) { window.log.info('Error getting conversation: ', envelope.source); } const getCurrentSessionBaseKey = async () => { const record = await sessionCipher.getRecord(address.toString()); - if (!record) - return null; + if (!record) return null; const openSession = record.getOpenSession(); - if (!openSession) - return null; + if (!openSession) return null; const { baseKey } = openSession.indexInfo; - return baseKey + return baseKey; }; const captureActiveSession = async () => { this.activeSessionBaseKey = await getCurrentSessionBaseKey(sessionCipher); }; const restoreActiveSession = async () => { const record = await sessionCipher.getRecord(address.toString()); - if (!record) - return + if (!record) return; record.archiveCurrentState(); const sessionToRestore = record.sessions[this.activeSessionBaseKey]; record.promoteState(sessionToRestore); record.updateSessionState(sessionToRestore); - await textsecure.storage.protocol.storeSession(address.toString(), record.serialize()); + await textsecure.storage.protocol.storeSession( + address.toString(), + record.serialize() + ); }; - const deleteAllSessionExcept = async (sessionBaseKey) => { + const deleteAllSessionExcept = async sessionBaseKey => { const record = await sessionCipher.getRecord(address.toString()); - if (!record) - return + if (!record) return; const sessionToKeep = record.sessions[sessionBaseKey]; - record.sessions = {} + record.sessions = {}; record.updateSessionState(sessionToKeep); - await textsecure.storage.protocol.storeSession(address.toString(), record.serialize()); + await textsecure.storage.protocol.storeSession( + address.toString(), + record.serialize() + ); }; let handleSessionReset; if (conversation.isSessionResetOngoing()) { - handleSessionReset = async (result) => { - const currentSessionBaseKey = await getCurrentSessionBaseKey(sessionCipher); - if (this.activeSessionBaseKey && currentSessionBaseKey !== this.activeSessionBaseKey) { + handleSessionReset = async result => { + const currentSessionBaseKey = await getCurrentSessionBaseKey( + sessionCipher + ); + if ( + this.activeSessionBaseKey && + currentSessionBaseKey !== this.activeSessionBaseKey + ) { if (conversation.isSessionResetReceived()) { await restoreActiveSession(); } else { @@ -670,7 +683,7 @@ MessageReceiver.prototype.extend({ return result; }; } else { - handleSessionReset = async (result) => result; + handleSessionReset = async result => result; } switch (envelope.type) { @@ -683,18 +696,17 @@ MessageReceiver.prototype.extend({ break; case textsecure.protobuf.Envelope.Type.FRIEND_REQUEST: { window.log.info('friend-request message from ', envelope.source); - promise = fallBackSessionCipher.decrypt(ciphertext.toArrayBuffer()) + promise = fallBackSessionCipher + .decrypt(ciphertext.toArrayBuffer()) .then(this.unpad); break; } case textsecure.protobuf.Envelope.Type.PREKEY_BUNDLE: window.log.info('prekey message from', this.getEnvelopeId(envelope)); promise = captureActiveSession(sessionCipher) - .then(() => this.decryptPreKeyWhisperMessage( - ciphertext, - sessionCipher, - address - )) + .then(() => + this.decryptPreKeyWhisperMessage(ciphertext, sessionCipher, address) + ) .then(handleSessionReset); break; case textsecure.protobuf.Envelope.Type.UNIDENTIFIED_SENDER: @@ -840,7 +852,7 @@ MessageReceiver.prototype.extend({ const isMe = envelope.source === textsecure.storage.user.getNumber(); const isLeavingGroup = Boolean( message.group && - message.group.type === textsecure.protobuf.GroupContext.Type.QUIT + message.group.type === textsecure.protobuf.GroupContext.Type.QUIT ); if (groupId && isBlocked && !(isMe && isLeavingGroup)) { @@ -883,7 +895,7 @@ MessageReceiver.prototype.extend({ const conversation = window.ConversationController.get(envelope.source); const isLeavingGroup = Boolean( message.group && - message.group.type === textsecure.protobuf.GroupContext.Type.QUIT + message.group.type === textsecure.protobuf.GroupContext.Type.QUIT ); const friendRequest = envelope.type === textsecure.protobuf.Envelope.Type.FRIEND_REQUEST; @@ -900,10 +912,8 @@ MessageReceiver.prototype.extend({ } if (friendRequest && isMe) { - window.log.info( - 'refusing to add a friend request to ourselves' - ); - throw new Error('Cannot add a friend request for ourselves!') + window.log.info('refusing to add a friend request to ourselves'); + throw new Error('Cannot add a friend request for ourselves!'); } if (groupId && isBlocked && !(isMe && isLeavingGroup)) { @@ -1227,10 +1237,7 @@ MessageReceiver.prototype.extend({ preKeyBundleMessage.signature, ].map(k => dcodeIO.ByteBuffer.wrap(k).toArrayBuffer()); - const { - preKeyId, - signedKeyId, - } = preKeyBundleMessage; + const { preKeyId, signedKeyId } = preKeyBundleMessage; if (pubKey !== StringView.arrayBufferToHex(identityKey)) { throw new Error( @@ -1312,7 +1319,13 @@ MessageReceiver.prototype.extend({ if (preKey === undefined || signedPreKey === undefined) { return; } - const device = { identityKey, deviceId, preKey, signedPreKey, registrationId: 0 } + const device = { + identityKey, + deviceId, + preKey, + signedPreKey, + registrationId: 0, + }; const builder = new libsignal.SessionBuilder( textsecure.storage.protocol, address @@ -1513,7 +1526,9 @@ textsecure.MessageReceiver = function MessageReceiverWrapper( ); this.getStatus = messageReceiver.getStatus.bind(messageReceiver); this.close = messageReceiver.close.bind(messageReceiver); - this.savePreKeyBundleMessage = messageReceiver.savePreKeyBundleMessage.bind(messageReceiver); + this.savePreKeyBundleMessage = messageReceiver.savePreKeyBundleMessage.bind( + messageReceiver + ); messageReceiver.connect(); }; diff --git a/libtextsecure/outgoing_message.js b/libtextsecure/outgoing_message.js index 4a33d9a10..0e7e8b242 100644 --- a/libtextsecure/outgoing_message.js +++ b/libtextsecure/outgoing_message.js @@ -119,22 +119,24 @@ OutgoingMessage.prototype = { if (device.registrationId === 0) { window.log.info('device registrationId 0!'); } - return builder.processPreKey(device).then(async () => { - // TODO: only remove the keys that were used above! - await window.libloki.storage.removeContactPreKeyBundle(number); - return true; - } - ).catch(error => { - if (error.message === 'Identity key changed') { - // eslint-disable-next-line no-param-reassign - error.timestamp = this.timestamp; - // eslint-disable-next-line no-param-reassign - error.originalMessage = this.message.toArrayBuffer(); - // eslint-disable-next-line no-param-reassign - error.identityKey = device.identityKey; - } - throw error; - }); + return builder + .processPreKey(device) + .then(async () => { + // TODO: only remove the keys that were used above! + await window.libloki.storage.removeContactPreKeyBundle(number); + return true; + }) + .catch(error => { + if (error.message === 'Identity key changed') { + // eslint-disable-next-line no-param-reassign + error.timestamp = this.timestamp; + // eslint-disable-next-line no-param-reassign + error.originalMessage = this.message.toArrayBuffer(); + // eslint-disable-next-line no-param-reassign + error.identityKey = device.identityKey; + } + throw error; + }); } return false; @@ -184,7 +186,12 @@ OutgoingMessage.prototype = { async transmitMessage(number, data, timestamp, ttl = 24 * 60 * 60) { const pubKey = number; try { - const result = await this.lokiMessageAPI.sendMessage(pubKey, data, timestamp, ttl); + const result = await this.lokiMessageAPI.sendMessage( + pubKey, + data, + timestamp, + ttl + ); return result; } catch (e) { if (e.name === 'HTTPError' && (e.code !== 409 && e.code !== 410)) { @@ -288,17 +295,24 @@ OutgoingMessage.prototype = { const address = new libsignal.SignalProtocolAddress(number, deviceId); const ourKey = textsecure.storage.user.getNumber(); const options = {}; - const fallBackCipher = new libloki.crypto.FallBackSessionCipher(address); + const fallBackCipher = new libloki.crypto.FallBackSessionCipher( + address + ); // Check if we need to attach the preKeys let sessionCipher; const isFriendRequest = this.messageType === 'friend-request'; - const flags = this.message.dataMessage ? this.message.dataMessage.get_flags() : null; - const isEndSession = flags === textsecure.protobuf.DataMessage.Flags.END_SESSION; + const flags = this.message.dataMessage + ? this.message.dataMessage.get_flags() + : null; + const isEndSession = + flags === textsecure.protobuf.DataMessage.Flags.END_SESSION; if (isFriendRequest || isEndSession) { // Encrypt them with the fallback const pkb = await libloki.storage.getPreKeyBundleForContact(number); - const preKeyBundleMessage = new textsecure.protobuf.PreKeyBundleMessage(pkb); + const preKeyBundleMessage = new textsecure.protobuf.PreKeyBundleMessage( + pkb + ); this.message.preKeyBundleMessage = preKeyBundleMessage; window.log.info('attaching prekeys to outgoing message'); } @@ -325,10 +339,7 @@ OutgoingMessage.prototype = { if (!this.fallBackEncryption) { // eslint-disable-next-line no-param-reassign ciphertext.body = new Uint8Array( - dcodeIO.ByteBuffer.wrap( - ciphertext.body, - 'binary' - ).toArrayBuffer() + dcodeIO.ByteBuffer.wrap(ciphertext.body, 'binary').toArrayBuffer() ); } return { @@ -345,7 +356,10 @@ OutgoingMessage.prototype = { const outgoingObject = outgoingObjects[0]; const socketMessage = await this.wrapInWebsocketMessage(outgoingObject); let ttl; - if (outgoingObject.type === textsecure.protobuf.Envelope.Type.FRIEND_REQUEST) { + if ( + outgoingObject.type === + textsecure.protobuf.Envelope.Type.FRIEND_REQUEST + ) { ttl = 4 * 24 * 60 * 60; // 4 days for friend request message } else { const hours = window.getMessageTTL() || 24; // 1 day default for any other message diff --git a/libtextsecure/stringview.js b/libtextsecure/stringview.js index 266ddc10d..75b00aefd 100644 --- a/libtextsecure/stringview.js +++ b/libtextsecure/stringview.js @@ -1,6 +1,6 @@ /* global window, StringView */ -/* eslint-disable no-bitwise, no-nested-ternary */ +/* eslint-disable no-bitwise, no-nested-ternary, */ // eslint-disable-next-line func-names (function() { @@ -102,16 +102,14 @@ arrayBufferToHex(aArrayBuffer) { return Array.prototype.map .call(new Uint8Array(aArrayBuffer), x => - ('00' + x.toString(16)).slice(-2) + `00${x.toString(16)}`.slice(-2) ) .join(''); }, hexToArrayBuffer(aString) { return new Uint8Array( - aString.match(/[\da-f]{2}/gi).map(function(h) { - return parseInt(h, 16); - }) + aString.match(/[\da-f]{2}/gi).map(h => parseInt(h, 16)) ).buffer; }, }; diff --git a/main.js b/main.js index 9bf782da2..b24402768 100644 --- a/main.js +++ b/main.js @@ -453,11 +453,11 @@ function showPasswordWindow() { captureClicks(passwordWindow); passwordWindow.on('close', e => { - // If the application is terminating, just do the default - if ( + // If the application is terminating, just do the default + if ( config.environment === 'test' || config.environment === 'test-lib' || - (windowState.shouldQuit()) + windowState.shouldQuit() ) { return; } @@ -965,7 +965,8 @@ ipc.on('update-tray-icon', (event, unreadCount) => { // Password screen related IPC calls ipc.on('password-window-login', async (event, passPhrase) => { - const sendResponse = (e) => event.sender.send('password-window-login-response', e); + const sendResponse = e => + event.sender.send('password-window-login-response', e); try { await showMainWindow(passPhrase); @@ -981,7 +982,7 @@ ipc.on('password-window-login', async (event, passPhrase) => { }); ipc.on('set-password', async (event, passPhrase, oldPhrase) => { - const sendResponse = (e) => event.sender.send('set-password-response', e); + const sendResponse = e => event.sender.send('set-password-response', e); try { // Check if the hash we have stored matches the hash of the old passphrase. @@ -989,7 +990,10 @@ ipc.on('set-password', async (event, passPhrase, oldPhrase) => { const hashMatches = oldPhrase && passwordUtil.matchesHash(oldPhrase, hash); if (hash && !hashMatches) { const incorrectOldPassword = locale.messages.invalidOldPassword.message; - sendResponse(incorrectOldPassword || 'Failed to set password: Old password provided is invalid'); + sendResponse( + incorrectOldPassword || + 'Failed to set password: Old password provided is invalid' + ); return; } diff --git a/metrics_app.js b/metrics_app.js index d934787f7..2f9c0f18d 100644 --- a/metrics_app.js +++ b/metrics_app.js @@ -20,42 +20,48 @@ const mimeType = { '.pdf': 'application/pdf', '.doc': 'application/msword', '.eot': 'appliaction/vnd.ms-fontobject', - '.ttf': 'aplication/font-sfnt' + '.ttf': 'aplication/font-sfnt', }; -http.createServer(function (req, res) { -// console.log(`${req.method} ${req.url}`); - // parse URL - const parsedUrl = url.parse(req.url); - // extract URL path - // Avoid https://en.wikipedia.org/wiki/Directory_traversal_attack - // e.g curl --path-as-is http://localhost:9000/../fileInDanger.txt - // by limiting the path to current directory only - const sanitizePath = path.normalize(parsedUrl.pathname).replace(/^(\.\.[\/\\])+/, ''); - let pathname = path.join(__dirname, sanitizePath); - fs.exists(pathname, function (exist) { - if(!exist) { - // if the file is not found, return 404 - res.statusCode = 404; - res.end(`File ${pathname} not found!`); - return; - } - // if is a directory, then look for index.html - if (fs.statSync(pathname).isDirectory()) { - pathname += '/index.html'; - } - // read file from file system - fs.readFile(pathname, function(err, data){ - if(err){ - res.statusCode = 500; - res.end(`Error getting the file: ${err}.`); - } else { - // based on the URL path, extract the file extention. e.g. .js, .doc, ... - const ext = path.parse(pathname).ext; - // if the file is found, set Content-type and send data - res.setHeader('Content-type', mimeType[ext] || 'text/plain' ); - res.end(data); +http + .createServer((req, res) => { + // console.log(`${req.method} ${req.url}`); + // parse URL + const parsedUrl = url.parse(req.url); + // extract URL path + // Avoid https://en.wikipedia.org/wiki/Directory_traversal_attack + // e.g curl --path-as-is http://localhost:9000/../fileInDanger.txt + // by limiting the path to current directory only + const sanitizePath = path + .normalize(parsedUrl.pathname) + .replace(/^(\.\.[/\\])+/, ''); + let pathname = path.join(__dirname, sanitizePath); + fs.exists(pathname, exist => { + if (!exist) { + // if the file is not found, return 404 + res.statusCode = 404; + res.end(`File ${pathname} not found!`); + return; } + // if is a directory, then look for index.html + if (fs.statSync(pathname).isDirectory()) { + pathname += '/index.html'; + } + // read file from file system + fs.readFile(pathname, (err, data) => { + if (err) { + res.statusCode = 500; + res.end(`Error getting the file: ${err}.`); + } else { + // based on the URL path, extract the file extention. e.g. .js, .doc, ... + const { ext } = path.parse(pathname); + // if the file is found, set Content-type and send data + res.setHeader('Content-type', mimeType[ext] || 'text/plain'); + res.end(data); + } + }); }); - }); -}).listen(parseInt(port), hostname); -console.log(`metrics running on http://${hostname}:${port}/metrics.html`); \ No newline at end of file + }) + .listen(parseInt(port, 10), hostname); + +// eslint-disable-next-line +console.log(`metrics running on http://${hostname}:${port}/metrics.html`); diff --git a/password_preload.js b/password_preload.js index 1a857a58e..e1f076016 100644 --- a/password_preload.js +++ b/password_preload.js @@ -26,14 +26,15 @@ window.getAppInstance = () => config.appInstance; window.passwordUtil = require('./app/password_util'); -window.onLogin = (passPhrase) => new Promise((resolve, reject) => { - ipcRenderer.once('password-window-login-response', (event, error) => { - if (error) { - return reject(error); - } - return resolve(); +window.onLogin = passPhrase => + new Promise((resolve, reject) => { + ipcRenderer.once('password-window-login-response', (event, error) => { + if (error) { + return reject(error); + } + return resolve(); + }); + ipcRenderer.send('password-window-login', passPhrase); }); - ipcRenderer.send('password-window-login', passPhrase); -}); require('./js/logging'); diff --git a/preload.js b/preload.js index 7e4ecf73f..11a951517 100644 --- a/preload.js +++ b/preload.js @@ -50,16 +50,17 @@ const localeMessages = ipc.sendSync('locale-data'); window.setBadgeCount = count => ipc.send('set-badge-count', count); // Set the password for the database -window.setPassword = (passPhrase, oldPhrase) => new Promise((resolve, reject) => { - ipc.once('set-password-response', (event, error) => { - if (error) { - return reject(error); - } - Whisper.events.trigger('password-updated'); - return resolve(); +window.setPassword = (passPhrase, oldPhrase) => + new Promise((resolve, reject) => { + ipc.once('set-password-response', (event, error) => { + if (error) { + return reject(error); + } + Whisper.events.trigger('password-updated'); + return resolve(); + }); + ipc.send('set-password', passPhrase, oldPhrase); }); - ipc.send('set-password', passPhrase, oldPhrase); -}); // We never do these in our code, so we'll prevent it everywhere window.open = () => null; @@ -107,7 +108,10 @@ ipc.on('on-unblock-number', (event, number) => { const conversation = window.ConversationController.get(number); conversation.unblock(); } catch (e) { - window.log.info('IPC on unblock: failed to fetch conversation for number: ', number); + window.log.info( + 'IPC on unblock: failed to fetch conversation for number: ', + number + ); } } }); @@ -155,7 +159,7 @@ installGetter('hide-menu-bar', 'getHideMenuBar'); installSetter('hide-menu-bar', 'setHideMenuBar'); // Get the message TTL setting -window.getMessageTTL = () => window.storage.get('message-ttl', 24) +window.getMessageTTL = () => window.storage.get('message-ttl', 24); installGetter('message-ttl', 'getMessageTTL'); installSetter('message-ttl', 'setMessageTTL'); @@ -289,7 +293,7 @@ window.callWorker = (fnName, ...args) => utilWorker.callWorker(fnName, ...args); // Linux seems to periodically let the event loop stop, so this is a global workaround setInterval(() => { - window.nodeSetImmediate(() => { }); + window.nodeSetImmediate(() => {}); }, 1000); const { autoOrientImage } = require('./js/modules/auto_orient_image'); diff --git a/settings_preload.js b/settings_preload.js index d772fec4e..69704d53e 100644 --- a/settings_preload.js +++ b/settings_preload.js @@ -29,7 +29,8 @@ window.closeSettings = () => ipcRenderer.send('close-settings'); // Events for updating block number states across different windows. // In this case we need these to update the blocked number // collection on the main window from the settings window. -window.onUnblockNumber = number => ipcRenderer.send('on-unblock-number', number); +window.onUnblockNumber = number => + ipcRenderer.send('on-unblock-number', number); window.getDeviceName = makeGetter('device-name'); diff --git a/stylesheets/_conversation.scss b/stylesheets/_conversation.scss index 8d01b517d..e9797db1a 100644 --- a/stylesheets/_conversation.scss +++ b/stylesheets/_conversation.scss @@ -382,7 +382,8 @@ color: white; outline: none; - &:hover, &:disabled { + &:hover, + &:disabled { background-color: $color-loki-green-dark; border-color: $color-loki-green-dark; } diff --git a/stylesheets/_global.scss b/stylesheets/_global.scss index 51240b787..c98d6451d 100644 --- a/stylesheets/_global.scss +++ b/stylesheets/_global.scss @@ -925,7 +925,8 @@ textarea { font-size: 14px; } - #generate-mnemonic, #copy-mnemonic { + #generate-mnemonic, + #copy-mnemonic { background: $grey; } @@ -936,7 +937,7 @@ textarea { line-height: 2.8; background: white; overflow: hidden; - border-radius: .25em; + border-radius: 0.25em; select { // Reset select @@ -954,7 +955,7 @@ textarea { width: 100%; height: 100%; margin: 0; - padding: 0 0 0 .5em; + padding: 0 0 0 0.5em; color: black; cursor: pointer; @@ -972,9 +973,9 @@ textarea { padding: 0 1em; background: $color-dark-85; pointer-events: none; - -webkit-transition: .25s all ease; - -o-transition: .25s all ease; - transition: .25s all ease; + -webkit-transition: 0.25s all ease; + -o-transition: 0.25s all ease; + transition: 0.25s all ease; } } diff --git a/stylesheets/_index.scss b/stylesheets/_index.scss index c7dc074e4..b5176e98e 100644 --- a/stylesheets/_index.scss +++ b/stylesheets/_index.scss @@ -92,7 +92,8 @@ user-select: none; } -h4.section-toggle, .section-toggle h4 { +h4.section-toggle, +.section-toggle h4 { margin-top: 1px; margin-bottom: 1px; } @@ -106,10 +107,10 @@ h4.section-toggle, .section-toggle h4 { height: 3em; line-height: 3; text-align: center; - -webkit-transition: all .35s; - -o-transition: all .35s; - transition: all .35s; - content: "+"; + -webkit-transition: all 0.35s; + -o-transition: all 0.35s; + transition: all 0.35s; + content: '+'; } .section-toggle-visible::after { @@ -123,7 +124,7 @@ h4.section-toggle, .section-toggle h4 { align-items: center; h4 { - flex: 1, + flex: 1; } .section-conversations-unread-counter { diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index f4145b75f..4177d7cdf 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -974,7 +974,7 @@ } .module-message-friend-request__container { - flex: 1, + flex: 1; } .module-friend-request__buttonContainer { @@ -994,7 +994,7 @@ background-color: transparent; border: 0; overflow: hidden; - outline:none; + outline: none; color: $color-gray-90; } @@ -1028,7 +1028,6 @@ color: $color-white-08; } - // Module: Contact Detail .module-contact-detail { @@ -2156,9 +2155,9 @@ text-align: center; &:after { - -webkit-transition: all .35s; - -o-transition: all .35s; - transition: all .35s; + -webkit-transition: all 0.35s; + -o-transition: all 0.35s; + transition: all 0.35s; width: 3em; line-height: 3em; height: 3em; @@ -2171,7 +2170,6 @@ transform: rotate(180deg); } - .module-main-header__app-name { font-size: 16px; line-height: 24px; diff --git a/stylesheets/_password.scss b/stylesheets/_password.scss index 23c7dd372..10f9b1103 100644 --- a/stylesheets/_password.scss +++ b/stylesheets/_password.scss @@ -26,4 +26,4 @@ font-size: 16px; margin-top: 1em; } -} \ No newline at end of file +} diff --git a/stylesheets/_settings.scss b/stylesheets/_settings.scss index f8d55493a..aabfbd220 100644 --- a/stylesheets/_settings.scss +++ b/stylesheets/_settings.scss @@ -67,12 +67,12 @@ } .wordwrap { - white-space: pre-wrap; /* CSS3 */ + white-space: pre-wrap; /* CSS3 */ white-space: -moz-pre-wrap; /* Firefox */ - white-space: -pre-wrap; /* Opera <7 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* IE */ - } + white-space: -pre-wrap; /* Opera <7 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* IE */ + } .restart-needed { margin-top: 1em; @@ -103,7 +103,11 @@ color: red; } - input { flex: 1; } - label { padding-left: 12px; } + input { + flex: 1; + } + label { + padding-left: 12px; + } } } diff --git a/stylesheets/_variables.scss b/stylesheets/_variables.scss index 2d35849df..2f589ae87 100644 --- a/stylesheets/_variables.scss +++ b/stylesheets/_variables.scss @@ -31,7 +31,11 @@ $color-loki-dark-gray: #323232; $color-loki-extra-dark-gray: #101010; $color-loki-green: #3bd110; $color-loki-green-dark: #32b10e; -$color-loki-green-gradient: linear-gradient(to right, rgb(120, 190, 32) 0%, rgb(0, 133, 34) 100%); +$color-loki-green-gradient: linear-gradient( + to right, + rgb(120, 190, 32) 0%, + rgb(0, 133, 34) 100% +); // New colors diff --git a/test/app/password_util_test.js b/test/app/password_util_test.js index 06293261e..700b99c74 100644 --- a/test/app/password_util_test.js +++ b/test/app/password_util_test.js @@ -49,28 +49,22 @@ describe('Password Util', () => { }); it('should return an error if password is not a string', () => { - const invalid = [ - 0, - 123456, - [], - {}, - null, - undefined, - ]; + const invalid = [0, 123456, [], {}, null, undefined]; invalid.forEach(pass => { - assert.strictEqual(passwordUtil.validatePassword(pass), 'Password must be a string'); + assert.strictEqual( + passwordUtil.validatePassword(pass), + 'Password must be a string' + ); }); }); - it('should return an error if password is not between 6 and 50 characters',() => { - const invalid = [ - 'a', - 'abcde', - '#'.repeat(51), - '#'.repeat(100), - ]; + it('should return an error if password is not between 6 and 50 characters', () => { + const invalid = ['a', 'abcde', '#'.repeat(51), '#'.repeat(100)]; invalid.forEach(pass => { - assert.strictEqual(passwordUtil.validatePassword(pass), 'Password must be between 6 and 50 characters long'); + assert.strictEqual( + passwordUtil.validatePassword(pass), + 'Password must be between 6 and 50 characters long' + ); }); }); @@ -87,7 +81,10 @@ describe('Password Util', () => { '<@ȦƘΉوۉaҋ<', ]; invalid.forEach(pass => { - assert.strictEqual(passwordUtil.validatePassword(pass), 'Password must only contain letters, numbers and symbols'); + assert.strictEqual( + passwordUtil.validatePassword(pass), + 'Password must only contain letters, numbers and symbols' + ); }); }); }); diff --git a/test/backup_test.js b/test/backup_test.js index 16b52721d..2ac94cea9 100644 --- a/test/backup_test.js +++ b/test/backup_test.js @@ -366,12 +366,12 @@ describe('Backup', () => { (message.contact || []).map(async contact => { return contact && contact.avatar && contact.avatar.avatar ? Object.assign({}, contact, { - avatar: Object.assign({}, contact.avatar, { - avatar: await wrappedLoadAttachment( - contact.avatar.avatar - ), - }), - }) + avatar: Object.assign({}, contact.avatar, { + avatar: await wrappedLoadAttachment( + contact.avatar.avatar + ), + }), + }) : contact; }) ), diff --git a/test/blocked_number_controller_test.js b/test/blocked_number_controller_test.js index 8df157d31..1c904065f 100644 --- a/test/blocked_number_controller_test.js +++ b/test/blocked_number_controller_test.js @@ -3,7 +3,6 @@ 'use strict'; describe('Blocked Number Controller', () => { - beforeEach(async () => { // Purge everything manually const numbers = storage.getBlockedNumbers(); @@ -43,18 +42,25 @@ describe('Blocked Number Controller', () => { storage.addBlockedNumber('1'); BlockedNumberController.refresh(); - assert.isNotEmpty(window.getBlockedNumbers().find(m => m.get('number') === '1')); + assert.isNotEmpty( + window.getBlockedNumbers().find(m => m.get('number') === '1') + ); storage.removeBlockedNumber('1'); storage.addBlockedNumber('2'); BlockedNumberController.refresh(); - assert.isNotEmpty(window.getBlockedNumbers().find(m => m.get('number') === '2')); + assert.isNotEmpty( + window.getBlockedNumbers().find(m => m.get('number') === '2') + ); }); it('throws if storage is invalid', () => { const _storage = window.storage; window.storage = null; - assert.throws(() => BlockedNumberController.refresh(), 'BlockedNumberController: Could not load blocked numbers'); + assert.throws( + () => BlockedNumberController.refresh(), + 'BlockedNumberController: Could not load blocked numbers' + ); window.storage = _storage; }); }); @@ -71,7 +77,7 @@ describe('Blocked Number Controller', () => { const numbers = window.getBlockedNumbers().models; assert.lengthOf(numbers, 1); - assert.strictEqual('1', numbers[0].get('number')) + assert.strictEqual('1', numbers[0].get('number')); assert.deepEqual(['1'], storage.getBlockedNumbers()); }); diff --git a/test/models/conversations_test.js b/test/models/conversations_test.js index de8798a97..51bb11aab 100644 --- a/test/models/conversations_test.js +++ b/test/models/conversations_test.js @@ -29,7 +29,10 @@ describe('ConversationCollection', () => { }); describe('Conversation', () => { - const attributes = { type: 'private', id: '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' }; + const attributes = { + type: 'private', + id: '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + }; before(async () => { const convo = new Whisper.ConversationCollection().add(attributes); await window.Signal.Data.saveConversation(convo.attributes, { @@ -50,7 +53,9 @@ describe('Conversation', () => { after(clearDatabase); it('sorts its contacts in an intl-friendly way', () => { - const convo = new Whisper.Conversation({ id: '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' }); + const convo = new Whisper.Conversation({ + id: '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + }); convo.contactCollection.add( new Whisper.Conversation({ name: 'C', @@ -100,7 +105,10 @@ describe('Conversation', () => { it('has a title', () => { const convos = new Whisper.ConversationCollection(); let convo = convos.add(attributes); - assert.equal(convo.getTitle(), '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab'); + assert.equal( + convo.getTitle(), + '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' + ); convo = convos.add({ type: '' }); assert.equal(convo.getTitle(), 'Unknown group'); @@ -112,7 +120,10 @@ describe('Conversation', () => { it('returns the number', () => { const convos = new Whisper.ConversationCollection(); let convo = convos.add(attributes); - assert.equal(convo.getNumber(), '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab'); + assert.equal( + convo.getNumber(), + '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' + ); convo = convos.add({ type: '' }); assert.equal(convo.getNumber(), ''); @@ -127,17 +138,39 @@ describe('Conversation', () => { describe('when set to private', () => { it('correctly validates hex numbers', () => { - const regularId = new Whisper.Conversation({ type: 'private', id: '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' }); - const invalidId = new Whisper.Conversation({ type: 'private', id: 'j71d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' }); + const regularId = new Whisper.Conversation({ + type: 'private', + id: + '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + }); + const invalidId = new Whisper.Conversation({ + type: 'private', + id: + 'j71d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + }); assert.ok(regularId.isValid()); assert.notOk(invalidId.isValid()); }); it('correctly validates length', () => { - const regularId33 = new Whisper.Conversation({ type: 'private', id: '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' }); - const regularId32 = new Whisper.Conversation({ type: 'private', id: '1d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab' }); - const shortId = new Whisper.Conversation({ type: 'private', id: '771d11d' }); - const longId = new Whisper.Conversation({ type: 'private', id: '771d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94abaa' }); + const regularId33 = new Whisper.Conversation({ + type: 'private', + id: + '051d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + }); + const regularId32 = new Whisper.Conversation({ + type: 'private', + id: '1d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + }); + const shortId = new Whisper.Conversation({ + type: 'private', + id: '771d11d', + }); + const longId = new Whisper.Conversation({ + type: 'private', + id: + '771d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94abaa', + }); assert.ok(regularId33.isValid()); assert.ok(regularId32.isValid()); assert.notOk(shortId.isValid()); @@ -152,7 +185,8 @@ describe('Conversation', () => { beforeEach(async () => { convo = new Whisper.ConversationCollection().add({ - id: '771d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', + id: + '771d11d01e56d9bfc3d74115c33225a632321b509ac17a13fdeac71165d09b94ab', type: 'private', name: 'John Doe', }); @@ -169,7 +203,10 @@ describe('Conversation', () => { const collection = new Whisper.ConversationCollection(); await collection.search(query); - assert.isDefined(collection.get(convo.id), `no result for "${query}"`); + assert.isDefined( + collection.get(convo.id), + `no result for "${query}"` + ); }) ); } diff --git a/test/models/profile_test.js b/test/models/profile_test.js index b30d8dfc8..11112f62c 100644 --- a/test/models/profile_test.js +++ b/test/models/profile_test.js @@ -15,7 +15,7 @@ describe('Profile', () => { describe('getLocalProfile', () => { it('returns the local profile', async () => { const values = [null, 'hello', { a: 'b' }]; - for(let i = 0; i < values.length; i += 1) { + for (let i = 0; i < values.length; i += 1) { await storage.put(PROFILE_ID, values[i]); assert.strictEqual(values[i], storage.getLocalProfile()); } @@ -25,7 +25,7 @@ describe('Profile', () => { describe('saveLocalProfile', () => { it('saves a profile', async () => { const values = [null, 'hello', { a: 'b' }]; - for(let i = 0; i < values.length; i += 1) { + for (let i = 0; i < values.length; i += 1) { await storage.saveLocalProfile(values[i]); assert.strictEqual(values[i], storage.get(PROFILE_ID)); } @@ -44,20 +44,24 @@ describe('Profile', () => { describe('setProfileName', () => { it('throws if a name is not a string', async () => { - const values = [0, { a: 'b'}, [1, 2]]; - for(let i = 0; i < values.length; i += 1) { + const values = [0, { a: 'b' }, [1, 2]]; + for (let i = 0; i < values.length; i += 1) { try { await storage.setProfileName(values[i]); - assert.fail(`setProfileName did not throw an error for ${typeof values[i]}`); + assert.fail( + `setProfileName did not throw an error for ${typeof values[i]}` + ); } catch (e) { - assert.throws(() => { throw e; }, 'Name must be a string!'); + assert.throws(() => { + throw e; + }, 'Name must be a string!'); } } }); it('does not throw if we pass a string or null', async () => { const values = [null, '1']; - for(let i = 0; i < values.length; i += 1) { + for (let i = 0; i < values.length; i += 1) { try { await storage.setProfileName(values[i]); } catch (e) { diff --git a/test/modules/types/message_test.js b/test/modules/types/message_test.js index 98af1e77f..40f258570 100644 --- a/test/modules/types/message_test.js +++ b/test/modules/types/message_test.js @@ -23,7 +23,7 @@ describe('Message', () => { body: 'Imagine there is no heaven…', schemaVersion: 2, }; - const writeExistingAttachmentData = () => { }; + const writeExistingAttachmentData = () => {}; const actual = await Message.createAttachmentDataWriter({ writeExistingAttachmentData, @@ -43,7 +43,7 @@ describe('Message', () => { schemaVersion: 4, attachments: [], }; - const writeExistingAttachmentData = () => { }; + const writeExistingAttachmentData = () => {}; const actual = await Message.createAttachmentDataWriter({ writeExistingAttachmentData, @@ -432,7 +432,7 @@ describe('Message', () => { describe('_withSchemaVersion', () => { it('should require a version number', () => { - const toVersionX = () => { }; + const toVersionX = () => {}; assert.throws( () => Message._withSchemaVersion({ schemaVersion: toVersionX, upgrade: 2 }), diff --git a/test/storage_test.js b/test/storage_test.js index 49370e298..ac3bc142f 100644 --- a/test/storage_test.js +++ b/test/storage_test.js @@ -19,7 +19,8 @@ describe('SignalProtocolStore', () => { privKey: libsignal.crypto.getRandomBytes(32), }; - storage.put('registrationId', 1337) + storage + .put('registrationId', 1337) .then(() => storage.put('identityKey', identityKey)) .then(() => storage.fetch()) .then(done, done); diff --git a/test/views/inbox_view_test.js b/test/views/inbox_view_test.js index 5bcd0445c..1c1147dd8 100644 --- a/test/views/inbox_view_test.js +++ b/test/views/inbox_view_test.js @@ -20,7 +20,7 @@ describe('InboxView', () => { inboxView = new Whisper.InboxView({ model: {}, window, - initialLoadComplete() { }, + initialLoadComplete() {}, }).render(); conversation = new Whisper.Conversation({ diff --git a/test/views/network_status_view_test.js b/test/views/network_status_view_test.js index 29c56112e..a3daa7883 100644 --- a/test/views/network_status_view_test.js +++ b/test/views/network_status_view_test.js @@ -174,7 +174,7 @@ describe('NetworkStatusView', () => { /Attempting reconnect/ ); }); - it('should be reset by changing the socketStatus to CONNECTING', () => { }); + it('should be reset by changing the socketStatus to CONNECTING', () => {}); }); }); }); diff --git a/ts/components/ConversationListItem.tsx b/ts/components/ConversationListItem.tsx index fcfa3c532..a30359479 100644 --- a/ts/components/ConversationListItem.tsx +++ b/ts/components/ConversationListItem.tsx @@ -165,7 +165,13 @@ export class ConversationListItem extends React.Component { } public render() { - const { unreadCount, onClick, isSelected, showFriendRequestIndicator, isBlocked } = this.props; + const { + unreadCount, + onClick, + isSelected, + showFriendRequestIndicator, + isBlocked, + } = this.props; return (
{ 'module-conversation-list-item', unreadCount > 0 ? 'module-conversation-list-item--has-unread' : null, isSelected ? 'module-conversation-list-item--is-selected' : null, - showFriendRequestIndicator ? 'module-conversation-list-item--has-friend-request' : null, - isBlocked ? 'module-conversation-list-item--is-blocked' : null, + showFriendRequestIndicator + ? 'module-conversation-list-item--has-friend-request' + : null, + isBlocked ? 'module-conversation-list-item--is-blocked' : null )} > {this.renderAvatar()} diff --git a/ts/components/MainHeader.tsx b/ts/components/MainHeader.tsx index 0f81533bb..6d9175ae9 100644 --- a/ts/components/MainHeader.tsx +++ b/ts/components/MainHeader.tsx @@ -26,11 +26,11 @@ export class MainHeader extends React.Component { name, phoneNumber, profileName, - onClick + onClick, } = this.props; return ( -
+
{ return ( {profileElement} - + diff --git a/ts/components/conversation/ConversationHeader.tsx b/ts/components/conversation/ConversationHeader.tsx index 1efd9f93f..e4c2c3973 100644 --- a/ts/components/conversation/ConversationHeader.tsx +++ b/ts/components/conversation/ConversationHeader.tsx @@ -95,12 +95,7 @@ export class ConversationHeader extends React.Component { } public renderTitle() { - const { - phoneNumber, - i18n, - profileName, - isKeysPending, - } = this.props; + const { phoneNumber, i18n, profileName, isKeysPending } = this.props; return (
@@ -236,7 +231,9 @@ export class ConversationHeader extends React.Component { {blockTitle} ) : null} {!isMe ? ( - {i18n('changeNickname')} + + {i18n('changeNickname')} + ) : null} {!isMe && hasNickname ? ( {i18n('clearNickname')} diff --git a/ts/components/conversation/FriendRequest.md b/ts/components/conversation/FriendRequest.md index 650e50bdb..fccc5a6d1 100644 --- a/ts/components/conversation/FriendRequest.md +++ b/ts/components/conversation/FriendRequest.md @@ -1,9 +1,10 @@ ### Friend Requests #### Parameters + | Name | Values | | -------------------- | -------------------------------------------- | -| text | string | +| text | string | | direction | 'outgoing' \| 'incoming | | status | 'sending' \| 'sent' \| 'read' \| 'delivered' | | friendStatus | 'pending' \| 'accepted' \| 'declined' | @@ -13,8 +14,8 @@ | onDeleteConversation | function | | onRetrySend | function | - #### Example + ```jsx
  • diff --git a/ts/components/conversation/FriendRequest.tsx b/ts/components/conversation/FriendRequest.tsx index f515c91e2..9a1cb9436 100644 --- a/ts/components/conversation/FriendRequest.tsx +++ b/ts/components/conversation/FriendRequest.tsx @@ -31,7 +31,7 @@ export class FriendRequest extends React.Component { case 'declined': return 'friendRequestDeclined'; case 'expired': - return 'friendRequestExpired' + return 'friendRequestExpired'; default: throw new Error(`Invalid friend request status: ${friendStatus}`); } @@ -43,7 +43,9 @@ export class FriendRequest extends React.Component { return (
    -
    +
    {i18n(id)}
    @@ -54,55 +56,69 @@ export class FriendRequest extends React.Component { } public renderButtons() { - const { i18n, friendStatus, direction, status, onAccept, onDecline, onDeleteConversation, onRetrySend, isBlocked, onBlockUser, onUnblockUser } = this.props; + const { + i18n, + friendStatus, + direction, + status, + onAccept, + onDecline, + onDeleteConversation, + onRetrySend, + isBlocked, + onBlockUser, + onUnblockUser, + } = this.props; - if (direction === 'incoming') { - if (friendStatus === 'pending') { - return ( -
    - - -
    - ); - } else if (friendStatus === 'declined') { - const blockTitle = isBlocked ? i18n('unblockUser') : i18n('blockUser'); - const blockHandler = isBlocked ? onUnblockUser : onBlockUser; - return ( -
    - - -
    - ); - } - } else { - // Render the retry button if we errored - if (status === 'error' && friendStatus === 'pending') { - return ( -
    - -
    - ); - } + if (direction === 'incoming') { + if (friendStatus === 'pending') { + return ( +
    + + +
    + ); + } else if (friendStatus === 'declined') { + const blockTitle = isBlocked ? i18n('unblockUser') : i18n('blockUser'); + const blockHandler = isBlocked ? onUnblockUser : onBlockUser; + + return ( +
    + + +
    + ); } - return null; + } else { + // Render the retry button if we errored + if (status === 'error' && friendStatus === 'pending') { + return ( +
    + +
    + ); + } + } + + return null; } public renderError(isCorrectSide: boolean) { @@ -127,7 +143,9 @@ export class FriendRequest extends React.Component { // Renders 'sending', 'read' icons public renderStatusIndicator() { const { direction, status } = this.props; - if (direction !== 'outgoing' || status === 'error') return null; + if (direction !== 'outgoing' || status === 'error') { + return null; + } return (
    @@ -135,7 +153,7 @@ export class FriendRequest extends React.Component {
    @@ -149,27 +167,27 @@ export class FriendRequest extends React.Component {
    - {this.renderError(direction === 'incoming')} + {this.renderError(direction === 'incoming')}
    -
    - {this.renderContents()} - {this.renderStatusIndicator()} - {this.renderButtons()} -
    +
    + {this.renderContents()} + {this.renderStatusIndicator()} + {this.renderButtons()} +
    {this.renderError(direction === 'outgoing')}
    diff --git a/ts/components/conversation/ResetSessionNotification.tsx b/ts/components/conversation/ResetSessionNotification.tsx index f964a629a..72ef2f975 100644 --- a/ts/components/conversation/ResetSessionNotification.tsx +++ b/ts/components/conversation/ResetSessionNotification.tsx @@ -13,7 +13,7 @@ export class ResetSessionNotification extends React.Component { return (
    - { i18n(sessionResetMessageKey) } + {i18n(sessionResetMessageKey)}
    ); } diff --git a/ts/test/types/Attachment_test.ts b/ts/test/types/Attachment_test.ts index 83a46a620..cf438e2a7 100644 --- a/ts/test/types/Attachment_test.ts +++ b/ts/test/types/Attachment_test.ts @@ -46,7 +46,9 @@ describe('Attachment', () => { contentType: MIME.VIDEO_QUICKTIME, }; // Unix timestamp of start of year 2000 to fix odd sudo timezone bug - const timestamp = new Date(946684800000 - moment().utcOffset() * 60 * 1000); + const timestamp = new Date( + 946684800000 - moment().utcOffset() * 60 * 1000 + ); const actual = Attachment.getSuggestedFilename({ attachment, timestamp,