pax_global_header00006660000000000000000000000064131307155650014520gustar00rootroot0000000000000052 comment=3e3d99381444379bb0483cb9216caa39ac67bebb asap-2.0.6/000077500000000000000000000000001313071556500124515ustar00rootroot00000000000000asap-2.0.6/.gitignore000066400000000000000000000000451313071556500144400ustar00rootroot00000000000000/node_modules credentials.json .idea asap-2.0.6/.jshintrc000066400000000000000000000006741313071556500143050ustar00rootroot00000000000000{ "browser": true, "node": true, "globalstrict": true, "curly": true, "eqeqeq": true, "newcap": false, "noarg": true, "nonew": true, "quotmark": "double", "strict": true, "trailing": true, "undef": true, "unused": true, "loopfunc": true, "globals": { "setImmediate": false, "performance": false, "Map": true, "Set": true, "URL": true } } asap-2.0.6/.npmignore000066400000000000000000000000471313071556500144510ustar00rootroot00000000000000/credentials.json /test /scripts .idea asap-2.0.6/.travis.yml000066400000000000000000000033611313071556500145650ustar00rootroot00000000000000language: node_js node_js: - '6' script: npm run test-travis env: global: - secure: Q9+xobddxjpTNQNBaJvJSUwFrvWBYt8EVn/d7AxtkzVLnZ6906jjftlmUf5CJ0cxgBTWDKsO+/SxEzHqiYrpvTKlbfqkuzIyiBNN7QcBHej7Xu5dut8uW4gL74R/PXVvAzVnSWJTadqCnLZzjyavVBg+osw6PnXxQffTXjMJKQU= - secure: LLkx7d0YTw1HPh8cYlW3BL79twCFMafmdatwNCWrjFWq3oLTdDqoG15kamev/nDQa+igoM/eXtodTtj9bSa7C/i19QFG3W5RO58yedoHYzzT/0htIC9X8udVuf11yHPyBSMIH8SK5Uw0SD9v6xzf8fKsuhMxBfSzHotEuIQOYrw= - secure: GJmAub8a0/7TpqHXzmCY9KqvglggSKiQFiRmbYggCk6gCz5TEf1okQjnFqepekYzOm6YkJItDXVxkFXjz3XGx/liqEosOpqZ0V7YmgJcI+3VjHD0VbkKHOVPncOv4xRlfVxhWZ+02gneFyulVc7xb4AC9Hn5w7uZH0I/y1N/d1M= - secure: gT+4Qs5MM4OMWYcvYrkTTOXephdXNouhdziJqHy/lOd4ZxpuhA39YSmRudkxjYoIF83D+b9+9Odj17dTSfOY5iHzU+QZ3y6dU2zhZB7L1Rg8sjmFsCV6qjOERvjyO1gAbN5gEI8QF+YoatX74AyySQNw4n+r9K+MdtbOiizggiQ= - secure: brecafurfPr32/3WjfDYiH9N8mzToLAAq9Mvi1ZNdFWbUHyMiLIIgZDgi9WfUBwjncxGhG7Yw3yLIuS8wuwltWZrIIOawMjHoyiZgb/XWMGRZdZxa6RRlycaPcSDmmLWxHcH4JXCqai9WjHPir9i2VQWPM2OZFopdMvAPw0ld04= - secure: SHVGFTwIukwOZS6cp/34x2XnerN/lgEQtYa19NgIQFmCzBbNgMXQ7ondx6le8eZpEJRIROvTfem4fTW62HsT1HMipPcLc8aahCUUQ6HLzVbbit9KE+Y16dqgF2wyHwCNevYitEaWmwPE9HLWpRxA9hswBdgMpGNgoE1zwmQMooQ= - secure: BZwr6wc56OSBiNdnwwHNDWYNo0jRbw3H850m9A0Xy46OSVLmhKAKDAjffNGDiv8k6KNY4W4Ocsk4PM/3Bws7ijAVfA6NrKp7ndRMrXS6LgxV61pIz6E9RsXmCSSIrX0fQTR5HPPGop+gIn7xCYsqwXaUuP9jyIo2kxrGHo9wQqQ= - secure: It/K4ganfz0YL78it8r3j8gyeDvSxAnZ7qpS4jfGnH056rtIs2ysegNkc73BnLclehDNEmxGd0c/jM7/QEnzR0/KYd/EHBuKLuNyhxrfzUZ3Crk/Hz7wCnySPDJKSYnrLcpA/nTM6xkzQAZSILLN256xXSJLt7bO2rNYQ3aBXaI= - secure: IggHzZSM9Z2lqHwQU/PblOwZaSYbRCINTaqJi4OxqZ6uqkteCSWyZbagasvftoS46xmFhPB5OYldcouyrEWd3Ul61rCvY2ROfhX4sIMRKMFd1ICRf9hl3R28ecxul/DhIXjhiQyRII7XNCkkN5BZ0qGhNyeAZqnaQKzPrpI4exA= before_install: - npm update -g npm asap-2.0.6/CHANGES.md000066400000000000000000000055321313071556500140500ustar00rootroot00000000000000 ## 2.0.6 Version 2.0.4 adds support for React Native by clarifying in package.json that the browser environment does not support Node.js domains. Why this is necessary, we leave as an exercise for the user. ## 2.0.3 Version 2.0.3 fixes a bug when adjusting the capacity of the task queue. ## 2.0.1-2.02 Version 2.0.1 fixes a bug in the way redirects were expressed that affected the function of Browserify, but which Mr would tolerate. ## 2.0.0 Version 2 of ASAP is a full rewrite with a few salient changes. First, the ASAP source is CommonJS only and designed with [Browserify][] and [Browserify-compatible][Mr] module loaders in mind. [Browserify]: https://github.com/substack/node-browserify [Mr]: https://github.com/montagejs/mr The new version has been refactored in two dimensions. Support for Node.js and browsers have been separated, using Browserify redirects and ASAP has been divided into two modules. The "raw" layer depends on the tasks to catch thrown exceptions and unravel Node.js domains. The full implementation of ASAP is loadable as `require("asap")` in both Node.js and browsers. The raw layer that lacks exception handling overhead is loadable as `require("asap/raw")`. The interface is the same for both layers. Tasks are no longer required to be functions, but can rather be any object that implements `task.call()`. With this feature you can recycle task objects to avoid garbage collector churn and avoid closures in general. The implementation has been rigorously documented so that our successors can understand the scope of the problem that this module solves and all of its nuances, ensuring that the next generation of implementations know what details are essential. - [asap.js](https://github.com/kriskowal/asap/blob/master/asap.js) - [raw.js](https://github.com/kriskowal/asap/blob/master/raw.js) - [browser-asap.js](https://github.com/kriskowal/asap/blob/master/browser-asap.js) - [browser-raw.js](https://github.com/kriskowal/asap/blob/master/browser-raw.js) The new version has also been rigorously tested across a broad spectrum of browsers, in both the window and worker context. The following charts capture the browser test results for the most recent release. The first chart shows test results for ASAP running in the main window context. The second chart shows test results for ASAP running in a web worker context. Test results are inconclusive (grey) on browsers that do not support web workers. These data are captured automatically by [Continuous Integration][]. ![Browser Compatibility](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-results-matrix.svg) ![Compatibility in Web Workers](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-worker-results-matrix.svg) [Continuous Integration]: https://github.com/kriskowal/asap/blob/master/CONTRIBUTING.md asap-2.0.6/CONTRIBUTING.md000066400000000000000000000141251313071556500147050ustar00rootroot00000000000000 ## Testing against a spectrum of browsers Testing this library against a spectrum of browsers involves several bits of infrastructure, which are each either very cheap or free for open source projects. You will need an Amazon Web Services (AWS) S3 account, for which you can expect to pay a couple bucks annually. You will also need a SauceLabs account, which is free for open source projects. You will need to populate an `credentials.json` module in the project. Git has been directed to ignore this file to mitigate fears of accidentally sharing your credentials. This configuration file is used both for running browser tests during development and to generate the encrypted configuration for Travis CI (continuous integration). ```json { "S3_USERNAME": "kriskowal", "S3_BUCKET": "kriskowal-asap", "S3_REGION": "Oregon", "S3_WEBSITE": "http://kriskowal-asap.s3-website-us-west-2.amazonaws.com", "S3_ACCESS_KEY_ID": "xxxxxxxxxxxxxxxxxxxx", "S3_ACCESS_KEY": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "SAUCE_EMAIL": "kriskowal@example.com", "SAUCE_USERNAME": "kriskowal-asap", "SAUCE_ACCESS_KEY": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } ``` ### AWS S3 You will need an account for [S3][]. Note your S3 user name under `S3_USERNAME`in `credentials.json`. It is not your email address. It is not mine either. Sign into the console. Click your name and follow the menu to “Security Credentials”. I was unable to figure out how to set up IAM users, but if you do, please come back and amend this document for posterity. Continue to your own security credentials. Expand the “Access Keys” section. Create an access key. Record the Access Key ID under `S3_ACCESS_KEY_ID` in `credentials.json`, and the key itself under `S3_ACCESS_KEY`. These access keys can be revoked if you lose control over them. Create a bucket. Note the name of the bucket as `S3_BUCKET` in `credentials.json`. Open your bucket and select the “Properties” tab. Note the `S3_REGION`, which depends on which datacenter you chose for your bucket. Expand the “Static Website Hosting” section. Note the “Endpoint address” as `S3_WEBSITE`. The test suite will upload a built version of this project to S3 using the `knox` package from npm, and then will use Selenium WebDriver, `wd` in npm, to load the test page from the S3 website. [S3]: aws.amazon.com/s3 ### Manual browser testing This package includes scripts that will create a test bundle and publish it to S3. The bundle can be viewed in a web browser from anywhere on the web. I have found this to be one useful way to run tests in browsers on other physical or virtual machines. ``` npm run test-browser ``` This will open a web browser with the URL where the tests were published. If you are running on a Mac, or have otherwise arranged for `pbcopy` to be emulated on your system, use `npm run test-publish` to publish and copy the URL to your system clipboard. ``` npm run test-publish pbpaste ``` ### Sauce Labs You will need an account with Sauce Labs. If the account will be used for continuous integration for an open source project, apply for an open source account *for your project*. Choose a user name like `montagejs-jasminum`. If you are just using Sauce Labs for testing during development or if you are developing a closed source project, you will need to purchase a plan. If you have a plan, you can create sub-accounts for individual projects. Note your Sauce Labs user name in `credentials.json` under `SAUCE_USERNAME`. Your Sauce Labs access key is visible in the left column of the dashboard. Make a note of it under `SAUCE_ACCESS_KEY`. The dashboard will show all of your Selenium WebDriver sessions. A link in the top left will take you to your “Open Sauce Profile”, a link you can share to show your project's build status. ### Check your local copy To test your working copy, use the command `npm run test-saucelabs`. ``` npm run test-saucelabs npm run test-saucelabs-all # all configurations npm run test-saucealbs-worker # for a web worker test matrix npm run test-saucealbs-worker-all ``` This will read the environment variables in `credentials.json` and then run `scripts/saucelabs.js`, which will in turn orchestrate the creation of a build script, uploading that script to Amazon S3, and the execution of a Selenium WebDriver session on Sauce Labs for each of the `sauce.configurations` in `package.json`, and annotating the test results using the Sauce Labs API. ### Travis Continuous Integration You will probably not need to deal with this portion personally. This package is already set up with Travis, and a commit hook is installed on Github to automatically kick off jobs for any push to the main repository. However, you will need to do these steps if you intend to run tests from your own fork. Take care not to push changes to `.travis.yml` upstream. We use `.travis.yml` to instruct Travis CI to run the Node.js tests and the spectrum of browser tests. The browser tests need the content of your `credentials.json` script, but that information has to be encrypted and appended to `.travis.yml`. To do this you will need the `travis` command line tool and Ruby. Version 2.1.0 of Ruby, installed with [Homebrew][1] was suffiient in my experience. Earlier versions of Ruby, particularly an earlier version packed with the operating system, were not. Gem did not cooperate the first time. It may require multiple attempts. If you find that your experience differs substantially, please ammend these notes for posterity. [1]: http://brew.sh/ ``` gem install travis ``` The enclosed `scripts/encrypt-credentials.js` script uses `travis encrypt` to append the encrypted environment variables to `.travis.yml`. ``` node scripts/encrypt-credentials.js ``` The script is very small and not very clever (that is, not idempotent), so before you run it again, you will need to manually remove the previous environment variables from the end of `.travis.yml`. Obtain an account for [Travis CI][]. From their web interface, under accounts, find your repository and enable continuous integration. Travis will install its commit hook in your repository on your behalf. [Travis CI]: https://travis-ci.org/ asap-2.0.6/LICENSE.md000066400000000000000000000020731313071556500140570ustar00rootroot00000000000000 Copyright 2009–2014 Contributors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. asap-2.0.6/README.md000066400000000000000000000235511313071556500137360ustar00rootroot00000000000000# ASAP [![Build Status](https://travis-ci.org/kriskowal/asap.png?branch=master)](https://travis-ci.org/kriskowal/asap) Promise and asynchronous observer libraries, as well as hand-rolled callback programs and libraries, often need a mechanism to postpone the execution of a callback until the next available event. (See [Designing API’s for Asynchrony][Zalgo].) The `asap` function executes a task **as soon as possible** but not before it returns, waiting only for the completion of the current event and previously scheduled tasks. ```javascript asap(function () { // ... }); ``` [Zalgo]: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony This CommonJS package provides an `asap` module that exports a function that executes a task function *as soon as possible*. ASAP strives to schedule events to occur before yielding for IO, reflow, or redrawing. Each event receives an independent stack, with only platform code in parent frames and the events run in the order they are scheduled. ASAP provides a fast event queue that will execute tasks until it is empty before yielding to the JavaScript engine's underlying event-loop. When a task gets added to a previously empty event queue, ASAP schedules a flush event, preferring for that event to occur before the JavaScript engine has an opportunity to perform IO tasks or rendering, thus making the first task and subsequent tasks semantically indistinguishable. ASAP uses a variety of techniques to preserve this invariant on different versions of browsers and Node.js. By design, ASAP prevents input events from being handled until the task queue is empty. If the process is busy enough, this may cause incoming connection requests to be dropped, and may cause existing connections to inform the sender to reduce the transmission rate or stall. ASAP allows this on the theory that, if there is enough work to do, there is no sense in looking for trouble. As a consequence, ASAP can interfere with smooth animation. If your task should be tied to the rendering loop, consider using `requestAnimationFrame` instead. A long sequence of tasks can also effect the long running script dialog. If this is a problem, you may be able to use ASAP’s cousin `setImmediate` to break long processes into shorter intervals and periodically allow the browser to breathe. `setImmediate` will yield for IO, reflow, and repaint events. It also returns a handler and can be canceled. For a `setImmediate` shim, consider [YuzuJS setImmediate][setImmediate]. [setImmediate]: https://github.com/YuzuJS/setImmediate Take care. ASAP can sustain infinite recursive calls without warning. It will not halt from a stack overflow, and it will not consume unbounded memory. This is behaviorally equivalent to an infinite loop. Just as with infinite loops, you can monitor a Node.js process for this behavior with a heart-beat signal. As with infinite loops, a very small amount of caution goes a long way to avoiding problems. ```javascript function loop() { asap(loop); } loop(); ``` In browsers, if a task throws an exception, it will not interrupt the flushing of high-priority tasks. The exception will be postponed to a later, low-priority event to avoid slow-downs. In Node.js, if a task throws an exception, ASAP will resume flushing only if—and only after—the error is handled by `domain.on("error")` or `process.on("uncaughtException")`. ## Raw ASAP Checking for exceptions comes at a cost. The package also provides an `asap/raw` module that exports the underlying implementation which is faster but stalls if a task throws an exception. This internal version of the ASAP function does not check for errors. If a task does throw an error, it will stall the event queue unless you manually call `rawAsap.requestFlush()` before throwing the error, or any time after. In Node.js, `asap/raw` also runs all tasks outside any domain. If you need a task to be bound to your domain, you will have to do it manually. ```js if (process.domain) { task = process.domain.bind(task); } rawAsap(task); ``` ## Tasks A task may be any object that implements `call()`. A function will suffice, but closures tend not to be reusable and can cause garbage collector churn. Both `asap` and `rawAsap` accept task objects to give you the option of recycling task objects or using higher callable object abstractions. See the `asap` source for an illustration. ## Compatibility ASAP is tested on Node.js v0.10 and in a broad spectrum of web browsers. The following charts capture the browser test results for the most recent release. The first chart shows test results for ASAP running in the main window context. The second chart shows test results for ASAP running in a web worker context. Test results are inconclusive (grey) on browsers that do not support web workers. These data are captured automatically by [Continuous Integration][]. [Continuous Integration]: https://github.com/kriskowal/asap/blob/master/CONTRIBUTING.md ![Browser Compatibility](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-results-matrix.svg) ![Compatibility in Web Workers](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-worker-results-matrix.svg) ## Caveats When a task is added to an empty event queue, it is not always possible to guarantee that the task queue will begin flushing immediately after the current event. However, once the task queue begins flushing, it will not yield until the queue is empty, even if the queue grows while executing tasks. The following browsers allow the use of [DOM mutation observers][] to access the HTML [microtask queue][], and thus begin flushing ASAP's task queue immediately at the end of the current event loop turn, before any rendering or IO: [microtask queue]: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#microtask-queue [DOM mutation observers]: http://dom.spec.whatwg.org/#mutation-observers - Android 4–4.3 - Chrome 26–34 - Firefox 14–29 - Internet Explorer 11 - iPad Safari 6–7.1 - iPhone Safari 7–7.1 - Safari 6–7 In the absense of mutation observers, there are a few browsers, and situations like web workers in some of the above browsers, where [message channels][] would be a useful way to avoid falling back to timers. Message channels give direct access to the HTML [task queue][], so the ASAP task queue would flush after any already queued rendering and IO tasks, but without having the minimum delay imposed by timers. However, among these browsers, Internet Explorer 10 and Safari do not reliably dispatch messages, so they are not worth the trouble to implement. [message channels]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#message-channels [task queue]: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#concept-task - Internet Explorer 10 - Safair 5.0-1 - Opera 11-12 In the absense of mutation observers, these browsers and the following browsers all fall back to using `setTimeout` and `setInterval` to ensure that a `flush` occurs. The implementation uses both and cancels whatever handler loses the race, since `setTimeout` tends to occasionally skip tasks in unisolated circumstances. Timers generally delay the flushing of ASAP's task queue for four milliseconds. - Firefox 3–13 - Internet Explorer 6–10 - iPad Safari 4.3 - Lynx 2.8.7 ## Heritage ASAP has been factored out of the [Q][] asynchronous promise library. It originally had a naïve implementation in terms of `setTimeout`, but [Malte Ubl][NonBlocking] provided an insight that `postMessage` might be useful for creating a high-priority, no-delay event dispatch hack. Since then, Internet Explorer proposed and implemented `setImmediate`. Robert Katić began contributing to Q by measuring the performance of the internal implementation of `asap`, paying particular attention to error recovery. Domenic, Robert, and Kris Kowal collectively settled on the current strategy of unrolling the high-priority event queue internally regardless of what strategy we used to dispatch the potentially lower-priority flush event. Domenic went on to make ASAP cooperate with Node.js domains. [Q]: https://github.com/kriskowal/q [NonBlocking]: http://www.nonblocking.io/2011/06/windownexttick.html For further reading, Nicholas Zakas provided a thorough article on [The Case for setImmediate][NCZ]. [NCZ]: http://www.nczonline.net/blog/2013/07/09/the-case-for-setimmediate/ Ember’s RSVP promise implementation later [adopted][RSVP ASAP] the name ASAP but further developed the implentation. Particularly, The `MessagePort` implementation was abandoned due to interaction [problems with Mobile Internet Explorer][IE Problems] in favor of an implementation backed on the newer and more reliable DOM `MutationObserver` interface. These changes were back-ported into this library. [IE Problems]: https://github.com/cujojs/when/issues/197 [RSVP ASAP]: https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js In addition, ASAP factored into `asap` and `asap/raw`, such that `asap` remained exception-safe, but `asap/raw` provided a tight kernel that could be used for tasks that guaranteed that they would not throw exceptions. This core is useful for promise implementations that capture thrown errors in rejected promises and do not need a second safety net. At the same time, the exception handling in `asap` was factored into separate implementations for Node.js and browsers, using the the [Browserify][Browser Config] `browser` property in `package.json` to instruct browser module loaders and bundlers, including [Browserify][], [Mr][], and [Mop][], to use the browser-only implementation. [Browser Config]: https://gist.github.com/defunctzombie/4339901 [Browserify]: https://github.com/substack/node-browserify [Mr]: https://github.com/montagejs/mr [Mop]: https://github.com/montagejs/mop ## License Copyright 2009-2014 by Contributors MIT License (enclosed) asap-2.0.6/asap.js000066400000000000000000000036461313071556500137440ustar00rootroot00000000000000"use strict"; var rawAsap = require("./raw"); var freeTasks = []; /** * Calls a task as soon as possible after returning, in its own event, with * priority over IO events. An exception thrown in a task can be handled by * `process.on("uncaughtException") or `domain.on("error")`, but will otherwise * crash the process. If the error is handled, all subsequent tasks will * resume. * * @param {{call}} task A callable object, typically a function that takes no * arguments. */ module.exports = asap; function asap(task) { var rawTask; if (freeTasks.length) { rawTask = freeTasks.pop(); } else { rawTask = new RawTask(); } rawTask.task = task; rawTask.domain = process.domain; rawAsap(rawTask); } function RawTask() { this.task = null; this.domain = null; } RawTask.prototype.call = function () { if (this.domain) { this.domain.enter(); } var threw = true; try { this.task.call(); threw = false; // If the task throws an exception (presumably) Node.js restores the // domain stack for the next event. if (this.domain) { this.domain.exit(); } } finally { // We use try/finally and a threw flag to avoid messing up stack traces // when we catch and release errors. if (threw) { // In Node.js, uncaught exceptions are considered fatal errors. // Re-throw them to interrupt flushing! // Ensure that flushing continues if an uncaught exception is // suppressed listening process.on("uncaughtException") or // domain.on("error"). rawAsap.requestFlush(); } // If the task threw an error, we do not want to exit the domain here. // Exiting the domain would prevent the domain from catching the error. this.task = null; this.domain = null; freeTasks.push(this); } }; asap-2.0.6/benchmarks/000077500000000000000000000000001313071556500145665ustar00rootroot00000000000000asap-2.0.6/benchmarks/drain.js000066400000000000000000000004741313071556500162260ustar00rootroot00000000000000var benchmark = require("./scaffold"); var asap = require("../asap"); benchmark.time("Drain", function (done) { var pending = 100; for (var i = 0; i < 100; ++i) { asap(function () { --pending; if (pending === 0) { done(); } }); } }); asap-2.0.6/benchmarks/index.js000066400000000000000000000001311313071556500162260ustar00rootroot00000000000000var drain = require("./drain"); var benchmark = require("./scaffold"); benchmark.run(); asap-2.0.6/benchmarks/scaffold.js000066400000000000000000000010771313071556500167120ustar00rootroot00000000000000var Benchmark = require("benchmark"); var suite = new Benchmark.Suite({ onCycle: function (event) { console.log("" + event.target); } }); function addTimer(s, f) { suite.add(s, function (deferred) { f(function () { deferred.resolve(); }); }, { defer: true }); } function time(s, f) { // This is to make sure that the function doesn't // have any errors before benchmarking it f(function () {}); addTimer(s, f); } function run() { suite.run(); } exports.time = time; exports.run = run; asap-2.0.6/browser-asap.js000066400000000000000000000042101313071556500154110ustar00rootroot00000000000000"use strict"; // rawAsap provides everything we need except exception management. var rawAsap = require("./raw"); // RawTasks are recycled to reduce GC churn. var freeTasks = []; // We queue errors to ensure they are thrown in right order (FIFO). // Array-as-queue is good enough here, since we are just dealing with exceptions. var pendingErrors = []; var requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError); function throwFirstError() { if (pendingErrors.length) { throw pendingErrors.shift(); } } /** * Calls a task as soon as possible after returning, in its own event, with priority * over other events like animation, reflow, and repaint. An error thrown from an * event will not interrupt, nor even substantially slow down the processing of * other events, but will be rather postponed to a lower priority event. * @param {{call}} task A callable object, typically a function that takes no * arguments. */ module.exports = asap; function asap(task) { var rawTask; if (freeTasks.length) { rawTask = freeTasks.pop(); } else { rawTask = new RawTask(); } rawTask.task = task; rawAsap(rawTask); } // We wrap tasks with recyclable task objects. A task object implements // `call`, just like a function. function RawTask() { this.task = null; } // The sole purpose of wrapping the task is to catch the exception and recycle // the task object after its single use. RawTask.prototype.call = function () { try { this.task.call(); } catch (error) { if (asap.onerror) { // This hook exists purely for testing purposes. // Its name will be periodically randomized to break any code that // depends on its existence. asap.onerror(error); } else { // In a web browser, exceptions are not fatal. However, to avoid // slowing down the queue of pending tasks, we rethrow the error in a // lower priority turn. pendingErrors.push(error); requestErrorThrow(); } } finally { this.task = null; freeTasks[freeTasks.length] = this; } }; asap-2.0.6/browser-raw.js000066400000000000000000000226161313071556500152700ustar00rootroot00000000000000"use strict"; // Use the fastest means possible to execute a task in its own turn, with // priority over other events including IO, animation, reflow, and redraw // events in browsers. // // An exception thrown by a task will permanently interrupt the processing of // subsequent tasks. The higher level `asap` function ensures that if an // exception is thrown by a task, that the task queue will continue flushing as // soon as possible, but if you use `rawAsap` directly, you are responsible to // either ensure that no exceptions are thrown from your task, or to manually // call `rawAsap.requestFlush` if an exception is thrown. module.exports = rawAsap; function rawAsap(task) { if (!queue.length) { requestFlush(); flushing = true; } // Equivalent to push, but avoids a function call. queue[queue.length] = task; } var queue = []; // Once a flush has been requested, no further calls to `requestFlush` are // necessary until the next `flush` completes. var flushing = false; // `requestFlush` is an implementation-specific method that attempts to kick // off a `flush` event as quickly as possible. `flush` will attempt to exhaust // the event queue before yielding to the browser's own event loop. var requestFlush; // The position of the next task to execute in the task queue. This is // preserved between calls to `flush` so that it can be resumed if // a task throws an exception. var index = 0; // If a task schedules additional tasks recursively, the task queue can grow // unbounded. To prevent memory exhaustion, the task queue will periodically // truncate already-completed tasks. var capacity = 1024; // The flush function processes all tasks that have been scheduled with // `rawAsap` unless and until one of those tasks throws an exception. // If a task throws an exception, `flush` ensures that its state will remain // consistent and will resume where it left off when called again. // However, `flush` does not make any arrangements to be called again if an // exception is thrown. function flush() { while (index < queue.length) { var currentIndex = index; // Advance the index before calling the task. This ensures that we will // begin flushing on the next task the task throws an error. index = index + 1; queue[currentIndex].call(); // Prevent leaking memory for long chains of recursive calls to `asap`. // If we call `asap` within tasks scheduled by `asap`, the queue will // grow, but to avoid an O(n) walk for every task we execute, we don't // shift tasks off the queue after they have been executed. // Instead, we periodically shift 1024 tasks off the queue. if (index > capacity) { // Manually shift all values starting at the index back to the // beginning of the queue. for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) { queue[scan] = queue[scan + index]; } queue.length -= index; index = 0; } } queue.length = 0; index = 0; flushing = false; } // `requestFlush` is implemented using a strategy based on data collected from // every available SauceLabs Selenium web driver worker at time of writing. // https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593 // Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that // have WebKitMutationObserver but not un-prefixed MutationObserver. // Must use `global` or `self` instead of `window` to work in both frames and web // workers. `global` is a provision of Browserify, Mr, Mrs, or Mop. /* globals self */ var scope = typeof global !== "undefined" ? global : self; var BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver; // MutationObservers are desirable because they have high priority and work // reliably everywhere they are implemented. // They are implemented in all modern browsers. // // - Android 4-4.3 // - Chrome 26-34 // - Firefox 14-29 // - Internet Explorer 11 // - iPad Safari 6-7.1 // - iPhone Safari 7-7.1 // - Safari 6-7 if (typeof BrowserMutationObserver === "function") { requestFlush = makeRequestCallFromMutationObserver(flush); // MessageChannels are desirable because they give direct access to the HTML // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera // 11-12, and in web workers in many engines. // Although message channels yield to any queued rendering and IO tasks, they // would be better than imposing the 4ms delay of timers. // However, they do not work reliably in Internet Explorer or Safari. // Internet Explorer 10 is the only browser that has setImmediate but does // not have MutationObservers. // Although setImmediate yields to the browser's renderer, it would be // preferrable to falling back to setTimeout since it does not have // the minimum 4ms penalty. // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and // Desktop to a lesser extent) that renders both setImmediate and // MessageChannel useless for the purposes of ASAP. // https://github.com/kriskowal/q/issues/396 // Timers are implemented universally. // We fall back to timers in workers in most engines, and in foreground // contexts in the following browsers. // However, note that even this simple case requires nuances to operate in a // broad spectrum of browsers. // // - Firefox 3-13 // - Internet Explorer 6-9 // - iPad Safari 4.3 // - Lynx 2.8.7 } else { requestFlush = makeRequestCallFromTimer(flush); } // `requestFlush` requests that the high priority event queue be flushed as // soon as possible. // This is useful to prevent an error thrown in a task from stalling the event // queue if the exception handled by Node.js’s // `process.on("uncaughtException")` or by a domain. rawAsap.requestFlush = requestFlush; // To request a high priority event, we induce a mutation observer by toggling // the text of a text node between "1" and "-1". function makeRequestCallFromMutationObserver(callback) { var toggle = 1; var observer = new BrowserMutationObserver(callback); var node = document.createTextNode(""); observer.observe(node, {characterData: true}); return function requestCall() { toggle = -toggle; node.data = toggle; }; } // The message channel technique was discovered by Malte Ubl and was the // original foundation for this library. // http://www.nonblocking.io/2011/06/windownexttick.html // Safari 6.0.5 (at least) intermittently fails to create message ports on a // page's first load. Thankfully, this version of Safari supports // MutationObservers, so we don't need to fall back in that case. // function makeRequestCallFromMessageChannel(callback) { // var channel = new MessageChannel(); // channel.port1.onmessage = callback; // return function requestCall() { // channel.port2.postMessage(0); // }; // } // For reasons explained above, we are also unable to use `setImmediate` // under any circumstances. // Even if we were, there is another bug in Internet Explorer 10. // It is not sufficient to assign `setImmediate` to `requestFlush` because // `setImmediate` must be called *by name* and therefore must be wrapped in a // closure. // Never forget. // function makeRequestCallFromSetImmediate(callback) { // return function requestCall() { // setImmediate(callback); // }; // } // Safari 6.0 has a problem where timers will get lost while the user is // scrolling. This problem does not impact ASAP because Safari 6.0 supports // mutation observers, so that implementation is used instead. // However, if we ever elect to use timers in Safari, the prevalent work-around // is to add a scroll event listener that calls for a flush. // `setTimeout` does not call the passed callback if the delay is less than // approximately 7 in web workers in Firefox 8 through 18, and sometimes not // even then. function makeRequestCallFromTimer(callback) { return function requestCall() { // We dispatch a timeout with a specified delay of 0 for engines that // can reliably accommodate that request. This will usually be snapped // to a 4 milisecond delay, but once we're flushing, there's no delay // between events. var timeoutHandle = setTimeout(handleTimer, 0); // However, since this timer gets frequently dropped in Firefox // workers, we enlist an interval handle that will try to fire // an event 20 times per second until it succeeds. var intervalHandle = setInterval(handleTimer, 50); function handleTimer() { // Whichever timer succeeds will cancel both timers and // execute the callback. clearTimeout(timeoutHandle); clearInterval(intervalHandle); callback(); } }; } // This is for `asap.js` only. // Its name will be periodically randomized to break any code that depends on // its existence. rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer; // ASAP was originally a nextTick shim included in Q. This was factored out // into this ASAP package. It was later adapted to RSVP which made further // amendments. These decisions, particularly to marginalize MessageChannel and // to capture the MutationObserver implementation in a closure, were integrated // back into ASAP proper. // https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js asap-2.0.6/package.json000066400000000000000000000036271313071556500147470ustar00rootroot00000000000000{ "name": "asap", "version": "2.0.6", "description": "High-priority task queue for Node.js and browsers", "keywords": [ "event", "task", "queue" ], "license": "MIT", "repository": { "type": "git", "url": "https://github.com/kriskowal/asap.git" }, "main": "./asap.js", "browser": { "./asap": "./browser-asap.js", "./asap.js": "./browser-asap.js", "./raw": "./browser-raw.js", "./raw.js": "./browser-raw.js", "./test/domain.js": "./test/browser-domain.js" }, "react-native": { "domain": false }, "files": [ "raw.js", "asap.js", "browser-raw.js", "browser-asap.js" ], "scripts": { "test": "npm run lint && npm run test-node", "test-travis": "npm run lint && npm run test-node && npm run test-saucelabs && npm run test-saucelabs-worker", "test-node": "node test/asap-test.js", "test-publish": "node scripts/publish-bundle.js test/asap-test.js | pbcopy", "test-browser": "node scripts/publish-bundle.js test/asap-test.js | xargs opener", "test-saucelabs": "node scripts/saucelabs.js test/asap-test.js scripts/saucelabs-spot-configurations.json", "test-saucelabs-all": "node scripts/saucelabs.js test/asap-test.js scripts/saucelabs-all-configurations.json", "test-saucelabs-worker": "node scripts/saucelabs-worker-test.js scripts/saucelabs-spot-configurations.json", "test-saucelabs-worker-all": "node scripts/saucelabs-worker-test.js scripts/saucelabs-all-configurations.json", "lint": "jshint raw.js asap.js browser-raw.js browser-asap.js $(find scripts -name '*.js' | grep -v gauntlet)", "benchmarks": "node benchmarks" }, "devDependencies": { "events": "^1.0.1", "jshint": "^2.5.1", "knox": "^0.8.10", "mr": "^2.0.5", "opener": "^1.3.0", "q": "^2.0.3", "q-io": "^2.0.3", "saucelabs": "^0.1.1", "wd": "^0.2.21", "weak-map": "^1.0.5", "benchmark": "^1.0.0" } } asap-2.0.6/raw.js000066400000000000000000000100531313071556500135770ustar00rootroot00000000000000"use strict"; var domain; // The domain module is executed on demand var hasSetImmediate = typeof setImmediate === "function"; // Use the fastest means possible to execute a task in its own turn, with // priority over other events including network IO events in Node.js. // // An exception thrown by a task will permanently interrupt the processing of // subsequent tasks. The higher level `asap` function ensures that if an // exception is thrown by a task, that the task queue will continue flushing as // soon as possible, but if you use `rawAsap` directly, you are responsible to // either ensure that no exceptions are thrown from your task, or to manually // call `rawAsap.requestFlush` if an exception is thrown. module.exports = rawAsap; function rawAsap(task) { if (!queue.length) { requestFlush(); flushing = true; } // Avoids a function call queue[queue.length] = task; } var queue = []; // Once a flush has been requested, no further calls to `requestFlush` are // necessary until the next `flush` completes. var flushing = false; // The position of the next task to execute in the task queue. This is // preserved between calls to `flush` so that it can be resumed if // a task throws an exception. var index = 0; // If a task schedules additional tasks recursively, the task queue can grow // unbounded. To prevent memory excaustion, the task queue will periodically // truncate already-completed tasks. var capacity = 1024; // The flush function processes all tasks that have been scheduled with // `rawAsap` unless and until one of those tasks throws an exception. // If a task throws an exception, `flush` ensures that its state will remain // consistent and will resume where it left off when called again. // However, `flush` does not make any arrangements to be called again if an // exception is thrown. function flush() { while (index < queue.length) { var currentIndex = index; // Advance the index before calling the task. This ensures that we will // begin flushing on the next task the task throws an error. index = index + 1; queue[currentIndex].call(); // Prevent leaking memory for long chains of recursive calls to `asap`. // If we call `asap` within tasks scheduled by `asap`, the queue will // grow, but to avoid an O(n) walk for every task we execute, we don't // shift tasks off the queue after they have been executed. // Instead, we periodically shift 1024 tasks off the queue. if (index > capacity) { // Manually shift all values starting at the index back to the // beginning of the queue. for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) { queue[scan] = queue[scan + index]; } queue.length -= index; index = 0; } } queue.length = 0; index = 0; flushing = false; } rawAsap.requestFlush = requestFlush; function requestFlush() { // Ensure flushing is not bound to any domain. // It is not sufficient to exit the domain, because domains exist on a stack. // To execute code outside of any domain, the following dance is necessary. var parentDomain = process.domain; if (parentDomain) { if (!domain) { // Lazy execute the domain module. // Only employed if the user elects to use domains. domain = require("domain"); } domain.active = process.domain = null; } // `setImmediate` is slower that `process.nextTick`, but `process.nextTick` // cannot handle recursion. // `requestFlush` will only be called recursively from `asap.js`, to resume // flushing after an error is thrown into a domain. // Conveniently, `setImmediate` was introduced in the same version // `process.nextTick` started throwing recursion errors. if (flushing && hasSetImmediate) { setImmediate(flush); } else { process.nextTick(flush); } if (parentDomain) { domain.active = process.domain = parentDomain; } } asap-2.0.6/scripts/000077500000000000000000000000001313071556500141405ustar00rootroot00000000000000asap-2.0.6/scripts/analyze-configurations.js000066400000000000000000000030611313071556500211710ustar00rootroot00000000000000"use strict"; var configurations = require("./saucelabs-all-configurations.json"); var Set = require("collections/set"); var Map = require("collections/map"); var List = require("collections/list"); var browsers = new Map(new Map(new List(configurations).group(function (configuration) { return configuration.browserName; })).map(function (value, key) { return [key, new Set(value.filter(function (configuration) { return configuration.version !== "beta"; }).map(function (configuration) { return [configuration.version.split(".").map(function (number) { if (+number === +number) { return +number; } else { return number; } }), configuration.browserName]; }).sorted().map(function (pair) { return pair[1] + ":" + pair[0].join("."); })).map(function (configuration) { var pair = configuration.split(":"); return { browserName: pair[0], version: pair[1] }; })]; })).toObject(); var platforms = new Map(new Set(configurations.map(function (configuration) { return configuration.platform; })).group(function (configuration) { if (configuration.indexOf("Windows") >= 0) { return "windows"; } else if (configuration.indexOf("Mac") >= 0) { return "mac"; } else if (configuration.indexOf("Linux") >= 0) { return "linux"; } else { return "other"; } })).toObject(); console.log(JSON.stringify({ platforms: platforms, browsers: browsers }, null, 4)); asap-2.0.6/scripts/annotations.js000066400000000000000000000065741313071556500170470ustar00rootroot00000000000000"use strict"; var FS = require("q-io/fs"); var ChildProcess = require("child_process"); var NodeReader = require("q-io/node/reader"); // Creates an annotations object for the working copy of the current Git // repository, suitable for determining where to publish a build on S3, // and for annotating a Selenium WebDriver session. // // If the repository is clean, tagged, and the tag matches the version in // package.json, produces a release annotation. // // If the repository is clean, produces an integration testing annotation, // based on the last commit hash. // // If the repository is dirty, produces a development testing annotation, // based on the last commit hash and a randomly generated nonce to avoid // overlap with other developer testing deployments. module.exports = getAnnotations; function getAnnotations() { return getGitHash("HEAD").then(function (hash) { return gitIsClean().then(function (gitIsClean) { if (gitIsClean) { return FS.read("package.json", {charset: "utf-8"}) .then(function (configJson) { var config = JSON.parse(configJson); return getGitHash("v" + config.version).then(function (vHash) { var parts = config.version.split("."); var major = parts[0]; if (hash === vHash) { return { type: "release", tags: ["release", "v" + config.version], hash: hash, version: config.version, build: "v" + config.version, train: "v" + major, path: "release/" + config.version + "/", trainPath: "train/release-" + major + "/" }; } else { return { type: "integration", tags: ["integration", hash.slice(0, 7)], hash: hash, build: hash.slice(0, 7), path: "integration/" + hash + "/", trainPath: "train/integration-" + major + "/" }; } }); }); } else { var nonce = Math.random().toString(36).slice(2, 7); return { type: "development", tags: ["development", hash.slice(0, 7), nonce], hash: hash, nonce: nonce, build: hash.slice(0, 7) + "-" + nonce, path: "development/" + hash + "-" + nonce + "/", trainPath: "train/development/" }; } }); }); } function getGitHash(rev) { var git = ChildProcess.spawn("git", ["rev-parse", rev]); var out = NodeReader(git.stdout, "utf-8"); return out.read().then(function (line) { return line.trim(); }); } function gitIsClean() { var git = ChildProcess.spawn("git", ["status", "--porcelain"]); var out = NodeReader(git.stdout, "utf-8"); return out.read().then(function (line) { return line.trim() === ""; }); } asap-2.0.6/scripts/credentials.js000066400000000000000000000010621313071556500167720ustar00rootroot00000000000000"use strict"; var FS = require("q-io/fs"); module.exports = getCredentials; function getCredentials(credentialsPath) { return FS.read(credentialsPath || "credentials.json", {charset: "utf-8"}) .then(JSON.parse, function () { if (!process.env.TRAVIS) { throw new Error("Can't find credentials.json in the working directory, nor a TRAVIS environment"); } else { // TravisCI will acquire the encrypted configuration through environment // variables. return process.env; } }); } asap-2.0.6/scripts/encrypt-credentials.js000066400000000000000000000015521313071556500204600ustar00rootroot00000000000000"use strict"; var Q = require("q"); var ChildProcess = require("child_process"); var Reader = require("q-io/reader"); var getCredentials = require("./credentials"); getCredentials() .then(function (credentials) { return new Reader(Object.keys(credentials)) .forEach(function (key) { var value = credentials[key]; console.log(key); return encrypt(key, value); }); }) .done(); function encrypt(key, value) { var deferred = Q.defer(); var git = ChildProcess.spawn("travis", [ "encrypt", "--add", "env.global", key + "=" + value ], { stdio: [0, 1, 2] }); git.on("exit", function (code) { if (code) { deferred.reject(new Error("Exit with status " + code)); } else { deferred.resolve(); } }); return deferred.promise; } asap-2.0.6/scripts/event-queue-query.js000066400000000000000000000004201313071556500201000ustar00rootroot00000000000000"use strict"; window.global_test_results = { webkitmutationobserver: typeof WebKitMutationObserver, mutationobserver: typeof MutationObserver, messagechannel: typeof MessageChannel, setimmediate: typeof setImmediate, settimeout: typeof setTimeout }; asap-2.0.6/scripts/gauntlet.js000066400000000000000000032313201313071556500163250ustar00rootroot00000000000000"use strict"; module.exports = gauntlet; function gauntlet(asap, subjectName, done) { //var subjects = [nestedLoop4096, nested1024, tree4096, queued4096]; var names = ["nested loop 4096", "nested 128", "queue 4096", "tree 4096"]; var subjects = [nestedLoop4096, nested128, queued4096, tree4096]; var results = []; var index = 0; next(); function next() { if (index < subjects.length) { var name = names[index]; var subject = subjects[index++]; console.log("> " + name); sample(subject, asap, 1000, 100, function (error, result) { if (error) { done(error); } else { result.name = name; results.push(result); next(); } }); } else { done(null, results); } } } var now; if (typeof process !== "undefined") { var offset = process.hrtime()[0]; now = function () { var parts = process.hrtime(); return (parts[0] - offset) * 1e3 + parts[1] / 1e6; }; } else if (typeof performance !== "undefined") { now = function () { return performance.now(); }; } else { now = function () { return Date.now(); }; } // measures the duration of one iteration function measure(test, done) { var start = now(); test(function (error, results) { var stop = now(); done(error, results, stop - start); }); } // measures iterations of the test for a duration, maintaining a representative // sample of the measurements up to a given size function sample(test, asap, minDuration, sampleSize, done) { var count = 0; var totalDuration = 0; var sampleDurations = []; next(); function next() { measure(function (done) { test(asap, done); }, function (error, results, duration) { if (error) { done(error); } if (sampleDurations.length < sampleSize) { sampleDurations.push(duration); } else if (Math.random() < 1 / count) { sampleDurations.splice(Math.floor(Math.random() * sampleDurations.length), 1); sampleDurations.push(duration); } totalDuration += duration; count++; if (totalDuration >= minDuration) { done(null, { name: test.name, subjectName: asap.name, count: count, totalDuration: totalDuration, averageFrequency: count / totalDuration, averageDuration: totalDuration / count, averageOpsHz: count / totalDuration, sampleDurations: sampleDurations }); } else { next(); } }); } } function nestedLoop4096(asap, done) { var next = done; for (var index = 0; index < 4096; index++) { next = (function (next) { return function () { asap(next); }; })(next); } next(); } function nested128(asap, done) { phase0(function () { phase1(function () { phase2(function () { phase3(done); }); }); }); function phase0(done) { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { done(); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); } function phase1(done) { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { done(); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); } function phase2(done) { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { done(); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); } function phase3(done) { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { done(); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); }); } } function queued4096(asap, done) { asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); asap(function () {check();}); var counter = 0; function check() { if (++counter === 4096) { done(); } } } function tree4096(asap, done) { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); asap(function () { asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); asap(function () { asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); asap(function () { asap(function () { asap(poll); asap(poll); }); asap(function () { asap(poll); asap(poll); }); }); }); }); }); }); }); }); }); }); }); }); var counter = 0; function poll() { if (++counter === 4096) { done(); } } } asap-2.0.6/scripts/publish-bundle.js000066400000000000000000000024301313071556500174120ustar00rootroot00000000000000"use strict"; var Q = require("q"); var URL = require("url"); var build = require("mr/build"); var getCredentials = require("./credentials"); var S3 = require("./s3"); module.exports = publishBundle; function publishBundle(modulePath, targetPath, credentials) { targetPath = targetPath || getAdhocTargetPath(); return Q([ credentials || getCredentials(), build(modulePath) ]).spread(function (credentials, script) { var s3 = new S3({ bucket: credentials.S3_BUCKET, key: credentials.S3_ACCESS_KEY_ID, secret: credentials.S3_ACCESS_KEY }); script = new Buffer(script, "utf-8"); var page = new Buffer(""); return Q.all([ s3.put(URL.resolve(targetPath, "test.js"), script, "application/javascript"), s3.put(URL.resolve(targetPath, "test.html"), page, "text/html") ]).then(function () { return URL.resolve(URL.resolve(credentials.S3_WEBSITE, targetPath), "test.html"); }); }); } function getAdhocTargetPath() { var nonce = Math.random().toString(36).slice(2, 7); return "adhoc/" + nonce + "/"; } if (require.main === module) { return publishBundle(process.argv[2]).done(console.log); } asap-2.0.6/scripts/publish-worker-test.js000066400000000000000000000026761313071556500204430ustar00rootroot00000000000000"use strict"; var Q = require("q"); var FS = require("q-io/fs"); var URL = require("url"); var build = require("mr/build"); var getCredentials = require("./credentials"); var S3 = require("./s3"); module.exports = publishWorkerTest; function publishWorkerTest() { var targetPath = targetPath || getAdhocTargetPath(); return Q([ getCredentials(), build(FS.join("test/asap-test.js")), build(FS.join("test/worker.js")), ]).spread(function (credentials, workerScript, testScript) { var s3 = new S3({ bucket: credentials.S3_BUCKET, key: credentials.S3_ACCESS_KEY_ID, secret: credentials.S3_ACCESS_KEY }); workerScript = new Buffer(workerScript, "utf-8"); var page = new Buffer(""); return Q.all([ s3.put(URL.resolve(targetPath, "test.js"), testScript, "application/javascript"), s3.put(URL.resolve(targetPath, "worker.js"), workerScript, "application/javascript"), s3.put(URL.resolve(targetPath, "test.html"), page, "text/html") ]).then(function () { return URL.resolve(URL.resolve(credentials.S3_WEBSITE, targetPath), "test.html"); }); }); } function getAdhocTargetPath() { var nonce = Math.random().toString(36).slice(2, 7); return "adhoc/" + nonce + "/"; } if (require.main === module) { publishWorkerTest().done(console.log); } asap-2.0.6/scripts/run-gauntlet.js000066400000000000000000000013051313071556500171220ustar00rootroot00000000000000"use strict"; var gauntlet = require("./gauntlet"); var asap = require("../asap"); var rawAsap = require("../raw"); console.log(rawAsap.requestFlush); gauntlet(asap, "asap", function (error, asapResults) { if (error) { global.global_test_results = {error: error}; throw error; } gauntlet(rawAsap, "raw asap", function (error, rawAsapResults) { var results = asapResults.concat(rawAsapResults); results.forEach(function (result) { console.log(result.subjectName, result.name, ((result.count / result.totalDuration) * 1000).toFixed(0), "ops/sec"); }); global.global_test_results = { results: results }; }); }); asap-2.0.6/scripts/s3.js000066400000000000000000000020031313071556500150160ustar00rootroot00000000000000"use strict"; var Q = require("q"); var knox = require("knox"); module.exports = S3; function S3(config) { this.knox = knox.createClient(config); } S3.prototype.put = function (path, content, contentType, moreHeaders) { var deferred = Q.defer(); var headers = { "Content-Length": content.length, "Content-type": contentType, "x-amz-acl": "public-read" }; for (var name in moreHeaders) { headers[name] = moreHeaders[name]; } var request = this.knox.put(path, headers); request.on("response", function (response) { if (response.statusCode === 200) { // alt: response.resume(); // does not appear to have any content typically response.pipe(process.stderr); response.on("end", deferred.resolve); response.on("error", deferred.reject); } else { deferred.reject("Can't post " + response.statusCode); } }); request.end(content); return deferred.promise; }; asap-2.0.6/scripts/saucelabs-all-configurations.json000066400000000000000000000711561313071556500226050ustar00rootroot00000000000000[ { "browserName": "internet explorer", "platform": "Windows 2012 R2", "version": "11" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "3.0" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "8" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "9" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "11" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "12" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "13" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "14" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "15" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "16" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "17" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "18" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "3.5" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "3.6" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "4" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "5" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "6" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "7" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "19" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "20" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "21" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "22" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "23" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "24" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "25" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "26" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "27" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "28" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "26" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "27" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "28" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "30" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "31" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "32" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "33" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "34" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "beta" }, { "browserName": "ipad", "platform": "Mac 10.6", "version": "4.3" }, { "browserName": "ipad", "platform": "Mac 10.6", "version": "5.0" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "4" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "5" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "6" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "7" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "8" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "9" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "10" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "11" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "12" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "13" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "14" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "15" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "16" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "17" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "18" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "19" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "20" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "21" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "22" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "23" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "24" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "25" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "26" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "27" }, { "browserName": "firefox", "platform": "Mac 10.6", "version": "28" }, { "browserName": "iphone", "platform": "Mac 10.6", "version": "4.3" }, { "browserName": "iphone", "platform": "Mac 10.6", "version": "5.0" }, { "browserName": "safari", "platform": "Mac 10.6", "version": "5" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "27" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "28" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "31" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "32" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "33" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "34" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "beta" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "9" }, { "browserName": "ipad", "platform": "Mac 10.9", "version": "7.0" }, { "browserName": "ipad", "platform": "Mac 10.9", "version": "7.1" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "4" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "5" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "6" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "7" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "8" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "9" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "10" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "11" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "12" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "13" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "14" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "15" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "16" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "17" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "18" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "19" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "20" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "21" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "22" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "23" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "24" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "25" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "26" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "27" }, { "browserName": "firefox", "platform": "Mac 10.9", "version": "28" }, { "browserName": "iphone", "platform": "Mac 10.9", "version": "7.0" }, { "browserName": "iphone", "platform": "Mac 10.9", "version": "7.1" }, { "browserName": "safari", "platform": "Mac 10.9", "version": "7" }, { "browserName": "chrome", "platform": "Mac 10.9", "version": "31" }, { "browserName": "chrome", "platform": "Mac 10.9", "version": "32" }, { "browserName": "chrome", "platform": "Mac 10.9", "version": "33" }, { "browserName": "chrome", "platform": "Mac 10.9", "version": "34" }, { "browserName": "internet explorer", "platform": "Windows 2003", "version": "6" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "8" }, { "browserName": "opera", "platform": "Windows 2003", "version": "11" }, { "browserName": "opera", "platform": "Windows 2003", "version": "12" }, { "browserName": "internet explorer", "platform": "Windows 2003", "version": "8" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "3.0" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "3.5" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "3.6" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "4" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "5" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "6" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "7" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "8" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "9" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "11" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "12" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "13" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "14" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "15" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "16" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "17" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "18" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "19" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "20" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "21" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "22" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "23" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "24" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "25" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "26" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "27" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "28" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "26" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "27" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "28" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "30" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "31" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "32" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "33" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "34" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "beta" }, { "browserName": "opera", "platform": "Windows 2008", "version": "11" }, { "browserName": "opera", "platform": "Windows 2008", "version": "12" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "3.0" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "3.5" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "3.6" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "4" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "5" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "6" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "7" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "8" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "9" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "11" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "12" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "13" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "14" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "15" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "16" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "17" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "18" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "19" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "20" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "21" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "22" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "23" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "24" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "25" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "26" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "27" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "28" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "29" }, { "browserName": "safari", "platform": "Windows 2008", "version": "5" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "26" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "27" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "28" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "30" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "31" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "32" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "33" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "34" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "beta" }, { "browserName": "internet explorer", "platform": "Windows 2012", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "3.0" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "3.5" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "3.6" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "4" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "5" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "6" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "7" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "8" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "9" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "11" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "12" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "13" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "14" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "15" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "16" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "17" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "18" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "19" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "20" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "21" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "22" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "23" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "24" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "25" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "26" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "27" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "28" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "26" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "27" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "28" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "30" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "31" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "32" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "33" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "34" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "beta" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "11" }, { "browserName": "internet explorer", "platform": "Windows 2003", "version": "7" }, { "browserName": "ipad", "platform": "Mac 10.8", "version": "5.1" }, { "browserName": "ipad", "platform": "Mac 10.8", "version": "6.0" }, { "browserName": "ipad", "platform": "Mac 10.8", "version": "6.1" }, { "browserName": "iphone", "platform": "Mac 10.8", "version": "5.1" }, { "browserName": "iphone", "platform": "Mac 10.8", "version": "6.0" }, { "browserName": "iphone", "platform": "Mac 10.8", "version": "6.1" }, { "browserName": "safari", "platform": "Mac 10.8", "version": "6" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "27" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "28" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "31" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "32" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "33" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "34" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "beta" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.2" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "android", "platform": "Linux", "version": "4.1" }, { "browserName": "android", "platform": "Linux", "version": "4.0" }, { "browserName": "opera", "platform": "Linux", "version": "12" }, { "browserName": "lynx", "platform": "Linux", "version": "2.8.7" }, { "browserName": "firefox", "platform": "Linux", "version": "3.6" }, { "browserName": "firefox", "platform": "Linux", "version": "4" }, { "browserName": "firefox", "platform": "Linux", "version": "5" }, { "browserName": "firefox", "platform": "Linux", "version": "6" }, { "browserName": "firefox", "platform": "Linux", "version": "7" }, { "browserName": "firefox", "platform": "Linux", "version": "8" }, { "browserName": "firefox", "platform": "Linux", "version": "9" }, { "browserName": "firefox", "platform": "Linux", "version": "10" }, { "browserName": "firefox", "platform": "Linux", "version": "11" }, { "browserName": "firefox", "platform": "Linux", "version": "12" }, { "browserName": "firefox", "platform": "Linux", "version": "13" }, { "browserName": "firefox", "platform": "Linux", "version": "14" }, { "browserName": "firefox", "platform": "Linux", "version": "15" }, { "browserName": "firefox", "platform": "Linux", "version": "16" }, { "browserName": "firefox", "platform": "Linux", "version": "17" }, { "browserName": "firefox", "platform": "Linux", "version": "18" }, { "browserName": "firefox", "platform": "Linux", "version": "19" }, { "browserName": "firefox", "platform": "Linux", "version": "20" }, { "browserName": "firefox", "platform": "Linux", "version": "21" }, { "browserName": "firefox", "platform": "Linux", "version": "22" }, { "browserName": "firefox", "platform": "Linux", "version": "23" }, { "browserName": "firefox", "platform": "Linux", "version": "24" }, { "browserName": "firefox", "platform": "Linux", "version": "25" }, { "browserName": "firefox", "platform": "Linux", "version": "26" }, { "browserName": "firefox", "platform": "Linux", "version": "27" }, { "browserName": "firefox", "platform": "Linux", "version": "28" }, { "browserName": "firefox", "platform": "Linux", "version": "29" }, { "browserName": "chrome", "platform": "Linux", "version": "26" }, { "browserName": "chrome", "platform": "Linux", "version": "27" }, { "browserName": "chrome", "platform": "Linux", "version": "28" }, { "browserName": "chrome", "platform": "Linux", "version": "29" }, { "browserName": "chrome", "platform": "Linux", "version": "30" }, { "browserName": "chrome", "platform": "Linux", "version": "31" }, { "browserName": "chrome", "platform": "Linux", "version": "32" }, { "browserName": "chrome", "platform": "Linux", "version": "33" }, { "browserName": "chrome", "platform": "Linux", "version": "34" } ] asap-2.0.6/scripts/saucelabs-configurations.js000066400000000000000000000013541313071556500214730ustar00rootroot00000000000000"use strict"; var Q = require("q"); var SauceLabs = require("saucelabs"); var getCredentials = require("./credentials"); return getCredentials() .then(function (credentials) { var saucelabs = Q(new SauceLabs({ username: credentials.SAUCE_USERNAME, password: credentials.SAUCE_ACCESS_KEY })); return saucelabs.ninvoke("getWebDriverBrowsers"); }) .then(function (configurations) { return configurations.map(function (configuration) { return { browserName: configuration.api_name, platform: configuration.os, version: configuration.short_version }; }); }) .then(function (configurations) { console.log(JSON.stringify(configurations, null, 2)); }) .done(); asap-2.0.6/scripts/saucelabs-event-queue-query.js000066400000000000000000000025741313071556500220540ustar00rootroot00000000000000"use strict"; // This script asks every available Saucelabs Web Driver configuration which // event queue flush request methods are available. // I previously used this script to generate the data for this report: // https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593 var publishBundle = require("./publish-bundle"); var run = require("./saucelabs"); publishBundle("scripts/event-queue-query.js") .then(function (location) { return run(location, { name: "event-queue-query", build: Math.random().toString(36).slice(2) }, "scripts/saucelabs-fast-configurations.json"); }) .then(function (results) { console.log(); console.log("os,browser,version,settimeout,setimmediate,messagechannel,mutationobserver,webkitmutationobserver"); results.forEach(function (result) { var configuration = result.configuration; var results = result.results; console.log([ configuration.platform, configuration.browserName, configuration.version, ].concat([ results.settimeout, results.setimmediate, results.messagechannel, results.mutationobserver, results.webkitmutationobserver ].map(yesno)).join(",")); }); }) .done(); function yesno(x) { return x === "undefined" ? "FALSE" : "TRUE"; } asap-2.0.6/scripts/saucelabs-fast-configurations.json000066400000000000000000000001271313071556500227600ustar00rootroot00000000000000[ { "browserName": "firefox", "platform": "Linux", "version": "29" } ] asap-2.0.6/scripts/saucelabs-matrix.js000066400000000000000000000013611313071556500177430ustar00rootroot00000000000000"use strict"; var URL = require("url"); var HTTP = require("q-io/http"); var S3 = require("./s3"); module.exports = captureMatrix; function captureMatrix(credentials, annotations, name) { var s3 = new S3({ bucket: credentials.S3_BUCKET, key: credentials.S3_ACCESS_KEY_ID, secret: credentials.S3_ACCESS_KEY }); return HTTP.read("https://saucelabs.com/browser-matrix/" + credentials.SAUCE_USERNAME + ".svg") .then(function (content) { var path = URL.resolve(annotations.trainPath, name || "saucelabs-results-matrix.svg"); return s3.put(path, content, "image/svg+xml", { "Cache-Control": "no-cache" }) .thenResolve(URL.resolve(credentials.S3_WEBSITE, path)); }); } asap-2.0.6/scripts/saucelabs-spot-configurations.json000066400000000000000000000073751313071556500230240ustar00rootroot00000000000000[ { "browserName": "internet explorer", "platform": "Windows 2012 R2", "version": "11" }, { "browserName": "firefox", "platform": "Windows 2012 R2", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2012 R2", "version": "34" }, { "browserName": "chrome", "platform": "Mac 10.6", "version": "34" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "9" }, { "browserName": "ipad", "platform": "Mac 10.9", "version": "7.1" }, { "browserName": "iphone", "platform": "Mac 10.9", "version": "7.1" }, { "browserName": "safari", "platform": "Mac 10.9", "version": "7" }, { "browserName": "chrome", "platform": "Mac 10.9", "version": "34" }, { "browserName": "internet explorer", "platform": "Windows 2003", "version": "6" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "8" }, { "browserName": "opera", "platform": "Windows 2003", "version": "12" }, { "browserName": "internet explorer", "platform": "Windows 2003", "version": "8" }, { "browserName": "firefox", "platform": "Windows 2003", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2003", "version": "34" }, { "browserName": "opera", "platform": "Windows 2008", "version": "12" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2008", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2008", "version": "34" }, { "browserName": "internet explorer", "platform": "Windows 2012", "version": "10" }, { "browserName": "firefox", "platform": "Windows 2012", "version": "29" }, { "browserName": "chrome", "platform": "Windows 2012", "version": "34" }, { "browserName": "internet explorer", "platform": "Windows 2008", "version": "11" }, { "browserName": "internet explorer", "platform": "Windows 2003", "version": "7" }, { "browserName": "chrome", "platform": "Mac 10.8", "version": "34" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "android", "platform": "Linux", "version": "4.3" }, { "browserName": "opera", "platform": "Linux", "version": "12" }, { "browserName": "lynx", "platform": "Linux", "version": "2.8.7" }, { "browserName": "firefox", "platform": "Linux", "version": "29" }, { "browserName": "chrome", "platform": "Linux", "version": "34" } ] asap-2.0.6/scripts/saucelabs-worker-test.js000066400000000000000000000014041313071556500207230ustar00rootroot00000000000000"use strict"; var Q = require("q"); var getCredentials = require("./credentials"); var getAnnotations = require("./annotations"); var run = require("./saucelabs"); var publishWorkerTest = require("./publish-worker-test"); var captureSaucelabsMatrix = require("./saucelabs-matrix"); return Q([ getCredentials(), getAnnotations(), publishWorkerTest() ]).spread(function (credentials, annotations, location) { return run(location, { name: "worker-test", build: Math.random().toString(36).slice(2) }, process.argv[2] || "scripts/saucelabs-spot-configurations.json", null, 40e3) .then(function () { return captureSaucelabsMatrix(credentials, annotations, "saucelabs-worker-results-matrix.svg"); }); }) .done(console.log); asap-2.0.6/scripts/saucelabs.js000066400000000000000000000111431313071556500164400ustar00rootroot00000000000000"use strict"; var Q = require("q"); var FS = require("q-io/fs"); var Reader = require("q-io/reader"); var SauceLabs = require("saucelabs"); var webdriver = require("wd"); var publishBundle = require("./publish-bundle"); var getAnnotations = require("./annotations"); var getCredentials = require("./credentials"); var captureSaucelabsMatrix = require("./saucelabs-matrix"); module.exports = run; function run(location, annotations, configurationsPath, credentialsPath, timeout) { return Q([ getConfigurations(configurationsPath), getCredentials(credentialsPath) ]) .spread(function (configurations, credentials) { var saucelabs = Q(new SauceLabs({ username: credentials.SAUCE_USERNAME, password: credentials.SAUCE_ACCESS_KEY })); return Reader(configurations) .map(function (configuration) { return runConfiguration( location, annotations, configuration, credentials, saucelabs, timeout ) .then(function (result) { return { configuration: configuration, results: result }; }, function (error) { console.log("ERROR", error); // Continue regardless of whether there's an error. return { configuration: configuration, results: { passed: false, error: error } }; }); }, null, 1) .all(); }); } function getConfigurations(path) { return FS.read(path || "saucelabs-configurations.json", {charset: "utf-8"}) .then(JSON.parse); } function runConfiguration(location, annotations, configuration, credentials, saucelabs, timeout) { var browser = webdriver.promiseRemote( "ondemand.saucelabs.com", 80, credentials.SAUCE_USERNAME, credentials.SAUCE_ACCESS_KEY ); browser.on("status", function (info) { console.log("WD-STATUS>", info); }); browser.on("command", function(meth, path){ console.log("WD-COMMAND>", meth, path); }); configuration.name = annotations.name || "job"; configuration.tags = annotations.tags; configuration.build = annotations.build; configuration["custom-data"] = annotations; var result; return browser.init(configuration) .then(function (session) { var sessionId = session[0]; console.log("SESSION", sessionId); return browser.get(location) .then(function () { return poll(function () { console.log("POLL"); /*jshint -W061 */ return browser.eval("window.global_test_results"); }, 100); }) .timeout(timeout || (20 * 1e3)) .then(function (_result) { console.log("RESULT", _result); result = _result; return saucelabs.ninvoke("updateJob", sessionId, { passed: result.passed, public: true }); }, function (error) { console.log("ERROR", error); return saucelabs.ninvoke("updateJob", sessionId, { passed: false, error: true, public: true, "custom-data": { "error": error.stack } }); }); }) .finally(function () { return browser.quit(); }) .then(function () { return result; }); } function poll(callback, ms) { return callback().then(function (value) { if (value) { return value; } else { return Q().delay(ms).then(function () { return poll(callback, ms); }); } }); } function main() { return Q([ getCredentials(), getAnnotations() ]).spread(function (credentials, annotations) { // Use an adhoc location for the bundle. The annotation path is // reserved for build products. return publishBundle(FS.join(process.argv[2]), null, credentials) .then(function (location) { return run(location, annotations, process.argv[3]); }) .then(function (results) { return captureSaucelabsMatrix(credentials, annotations) .thenResolve(results); }); }) .done(function (results) { console.log(JSON.stringify(results, null, 4)); }); } if (require.main === module) { main(); } asap-2.0.6/scripts/synthesize-configurations.js000066400000000000000000000011321313071556500217300ustar00rootroot00000000000000"use strict"; var configurations = require("./saucelabs-all-configurations.json"); var selection = require("./selection.json"); var Map = require("collections/map"); var latests = new Map(new Map(selection.browsers).map(function (versions, name) { return [name, versions.pop().version]; })); var selections = configurations.filter(function (configuration) { if (configuration.browserName === "internet explorer") { return true; } else { return configuration.version === latests.get(configuration.browserName); } }); console.log(JSON.stringify(selections, null, 4)); asap-2.0.6/test/000077500000000000000000000000001313071556500134305ustar00rootroot00000000000000asap-2.0.6/test/asap-test.js000066400000000000000000000253041313071556500156730ustar00rootroot00000000000000 require("./scaffold"); var asap = require("../asap"); var rawAsap = require("../raw"); var domain = require("./domain"); var MAX_RECURSION = 10; var WAIT_FOR_NORMAL_CASE = 100; var WAIT_FOR_ERRORS = 100; if (typeof process === "undefined" && typeof window === "undefined") { // give web workers a chance WAIT_FOR_NORMAL_CASE = 1000; WAIT_FOR_ERRORS = 1000; } describeAsap("rawAsap", rawAsap); describeAsap("asap", asap); function describeAsap(name, asap) { it(name + " calls task in a future turn", function (done) { var called = false; asap(function () { called = true; done(); }); expect(called).toBe(false); }); it(name + " calls task.call method in a future turn", function (done) { var called = false; asap({call: function (thisp) { called = true; done(); }}); expect(called).toBe(false); }); it(name + " calls multiple tasks in order", function (done) { var calls = []; asap(function () { calls.push(0); }); asap(function () { calls.push(1); }); asap(function () { calls.push(2); }); expect(calls).toEqual([]); setTimeout(function () { expect(calls).toEqual([0, 1, 2]); done(); }, WAIT_FOR_NORMAL_CASE); }); it(name + " calls tasks in breadth-first order", function (done) { var calls = []; asap(function () { calls.push(0); asap(function () { calls.push(2); asap(function () { calls.push(5); }); asap(function () { calls.push(6); }); }); asap(function () { calls.push(3); }); }); asap(function () { calls.push(1); asap(function () { calls.push(4); }); }); expect(calls).toEqual([]); setTimeout(function () { expect(calls).toEqual([0, 1, 2, 3, 4, 5, 6]); done(); }, WAIT_FOR_NORMAL_CASE); }); it(name + " can schedule more than capacity tasks", function(done) { var target = 1060; var targetList = []; for (var i=0; i asap-2.0.6/test/infinite.js000066400000000000000000000001201313071556500155640ustar00rootroot00000000000000 var asap = require("../asap"); function next() { asap(next); } next(); asap-2.0.6/test/scaffold.js000066400000000000000000000053201313071556500155470ustar00rootroot00000000000000 // Not every browser has a console if (typeof console === "undefined") { console = { log: function () {} }; } var tests = []; var currentTest; var passed = 0; var failed = 0; // Test declaration is synchronous. setTimeout(run, 0); function run() { var index = 0; next(); function next(error) { if (error) { done(error); } else if (index === tests.length) { done(null); } else { tests[index++].run(next); } } function done(error) { if (error) { throw error; } console.log(passed + " passed"); console.log(failed + " failed"); global.global_test_results = { passed: !failed }; if (global.postMessage) { if (typeof window !== "undefined") { global.postMessage(failed ? "failed" : "passed", "*"); } else { global.postMessage(failed ? "failed" : "passed"); } } if (typeof process !== "undefined") { process.exit(failed ? -1 : 0); } } } global.it = it; function it(name, callback) { tests.push(new Test(name, callback)); }; global.expect = expect; function expect(value) { return new Expectation(value, currentTest); } function Test(name, callback) { this.name = name; this.callback = callback; this.failed = false; } Test.prototype.run = function (done) { var self = this; console.log("> " + this.name); currentTest = this; this.callback(function (error) { if (error) { done(error); } if (self.failed) { failed++; } else { passed++; } done(); }); }; function Expectation(value, test) { this.value = value; this.test = test; } Expectation.prototype.toBe = function (value) { var ok = this.value === value; if (!ok) { this.test.failed = true; console.log("Expected " + this.value + " to be " + value); } }; Expectation.prototype.toEqual = function (value) { var ok = equals(this.value, value); if (!ok) { this.test.failed = true; console.log("Expected", this.value, "to equal", value); } }; function equals(a, b) { if (isArray(a)) { if (!isArray(b)) return false; if (a.length !== b.length) return false; for (var index = 0; index < a.length; index++) { if (!equals(a[index], b[index])) { return false; } } return true; } else { return a === b; } } function isArray(object) { return typeof object === "object" && Object.prototype.toString.call(object) === "[object Array]"; } asap-2.0.6/test/worker.js000066400000000000000000000007531313071556500153040ustar00rootroot00000000000000 if (typeof Worker !== "undefined") { var worker = new Worker("./worker.js"); worker.onmessage = function (event) { window.global_test_results = {passed: event.data === "passed"}; document.body.innerHTML = event.data; }; } else { // An empty object gets transported as `null` by something in the Sauce // Labs stack on some older Internet Explorers. window.global_test_results = {support: false}; document.body.innerHTML = "no worker support"; }